<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet IronPython</title>
	<link rel="self" href="http://www.voidspace.org.uk/ironpython/planet/atom.xml"/>
	<link href="http://www.voidspace.org.uk/ironpython/planet/index.shtml"/>
	<id>http://www.voidspace.org.uk/ironpython/planet/atom.xml</id>
	<updated>2010-03-16T09:31:45+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title type="html">The Voidspace Techie Blog: unittest2 0.2.0 Released and News on nose</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/DaT51ac45eQ/arch_d7_2010_03_13.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/DaT51ac45eQ/arch_d7_2010_03_13.shtml</id>
		<updated>2010-03-16T00:09:45+00:00</updated>
		<content type="html">I've pushed out a new release of unittest2, version 0.2.0. unittest2 is a backport of all the fancy new features added to the unittest testing framework in Python 2.7. ... [823 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DaT51ac45eQ:qJisc8FdgVw:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DaT51ac45eQ:qJisc8FdgVw:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DaT51ac45eQ:qJisc8FdgVw:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DaT51ac45eQ:qJisc8FdgVw:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DaT51ac45eQ:qJisc8FdgVw:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DaT51ac45eQ:qJisc8FdgVw:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DaT51ac45eQ:qJisc8FdgVw:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/DaT51ac45eQ&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Aaron Marten's WebLog: Including Existing Templates in a VSIX Container</title>
		<link href="http://blogs.msdn.com/aaronmar/archive/2010/03/12/including-existing-templates-in-a-vsix-container.aspx"/>
		<id>91d46819-8472-40ad-a661-2c78acb4018c:9977852</id>
		<updated>2010-03-13T00:24:44+00:00</updated>
		<content type="html">&lt;p&gt;In the Visual Studio 2008 SDK, we have several samples (most notably, IronPythonIntegration) set up to use the ZipProject, ZipItem, and VSTemplate build actions to create template zip files.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_2.png&quot;&gt;&lt;img alt=&quot;IronPython templates&quot; border=&quot;0&quot; height=&quot;214&quot; src=&quot;http://blogs.msdn.com/blogfiles/aaronmar/WindowsLiveWriter/IncludingExistingTemplatesinaVSIX_DBA1/IronPythonZipProject_thumb.png&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;IronPython templates&quot; width=&quot;244&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Last week, I &lt;a href=&quot;http://blogs.msdn.com/visualstudio/archive/2010/03/04/creating-and-sharing-project-item-templates.aspx&quot;&gt;published a post&lt;/a&gt; on the &lt;a href=&quot;http://blogs.msdn.com/visualstudio/&quot;&gt;Visual Studio Blog&lt;/a&gt; discussing how you could build templates from source files and package them up in a VSIX container using the new templates in the Visual Studio 2010 SDK.&lt;/p&gt;  &lt;p&gt;We’ve been hearing questions about how to take an existing project (&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc512930(VS.100).aspx&quot;&gt;updated from Visual Studio 2008&lt;/a&gt;, still using ZipProject/ZipItem) and include the built zip files in the VSIX container.&lt;/p&gt;  &lt;p&gt;Unfortunately, this doesn’t happen automatically for you. The reason is that the zip files are not specified as input files for building the VSIX container in the VSSDK build targets.&lt;/p&gt;  &lt;p&gt;Fortunately, since &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms171452.aspx&quot;&gt;MSBuild&lt;/a&gt; is a highly extensible system, we can make up for this with a little bit of project customization. Simply add the following to your C#/VB project file to get your existing templates included in the VSIX container:&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;PropertyGroup&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;GetVsixSourceItemsDependsOn&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;$(GetVsixSourceItemsDependsOn);GetVsixTemplateItems&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;GetVsixSourceItemsDependsOn&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;PropertyGroup&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Target &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;GetVsixTemplateItems&lt;/span&gt;&quot; &lt;span style=&quot;color: red;&quot;&gt;DependsOnTargets&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;ZipProjects;ZipItems&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ItemGroup&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSourceItem &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Include&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;@(IntermediateZipItem)&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSubPath&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSubPath&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSourceItem&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSourceItem &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Include&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;@(IntermediateZipProject)&lt;/span&gt;&quot;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSubPath&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;ProjectTemplates\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSubPath&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;VSIXSourceItem&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ItemGroup&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Target&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You will also need to add the following lines (as appropriate) to your source.extension.vsixmanifest&lt;span style=&quot;color: blue;&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ProjectTemplate&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;ProjectTemplates&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ProjectTemplate&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ItemTemplate&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;ItemTemplates&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ItemTemplate&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;These lines each declare a root folder in your VSIX file that VS should examine for template files. Project template zip files will be placed in the ProjectTemplates folder inside the VSIX file. Item template zip files will be placed in (you guessed it)…the ItemTemplates folder inside the VSIX file.&lt;/p&gt;&lt;img height=&quot;1&quot; src=&quot;http://blogs.msdn.com/aggbug.aspx?PostID=9977852&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Aaron Marten</name>
			<uri>http://blogs.msdn.com/aaronmar/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: A better way to auto-run T4MVC when you build</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2010/03/12/a-better-way-to-auto-run-t4mvc-when-you-build.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7380680</id>
		<updated>2010-03-12T19:18:40+00:00</updated>
		<content type="html">T4MVC has always struggled with finding the right way of running automatically when you build.  Being a T4 template in your project, by default it just runs when you save it.  This is not great, because you really want it to rerun whenever you make a change that affects it: e.g. new controller action, new static file, … So I had come up with a pretty crazy workaround (the AlwaysKeepTemplateDirty flag), described in details in this previous post (under “ The T4 file automatically runs whenever you build ”).  It’s a pretty hacky technique, which mostly works but has some nasty quirks: You need to open and save it once to start the save ‘cycle’ You need to leave it open It’s always marked as dirty, which is an annoyance.  The...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2010/03/12/a-better-way-to-auto-run-t4mvc-when-you-build.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7380680&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Little Bit of Python: Episodes 5 and 6</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/ggqBw65yNYI/arch_d7_2010_03_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/ggqBw65yNYI/arch_d7_2010_03_06.shtml</id>
		<updated>2010-03-11T15:19:29+00:00</updated>
		<content type="html">Two more episodes of A Little Bit of Python have been posted. A Little Bit of Python is an occasional podcast on Python related topics with myself, Brett Cannon, Jesse Noller, Steve Holden and Andrew Kuchling. ... [385 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ggqBw65yNYI:C31M_z4yzx8:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ggqBw65yNYI:C31M_z4yzx8:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ggqBw65yNYI:C31M_z4yzx8:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ggqBw65yNYI:C31M_z4yzx8:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ggqBw65yNYI:C31M_z4yzx8:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ggqBw65yNYI:C31M_z4yzx8:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ggqBw65yNYI:C31M_z4yzx8:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/ggqBw65yNYI&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">C. J. Adams-Collier: dlr-languages_20090805+git.e6b28d27+dfsg-1_amd64.changes ACCEPTED</title>
		<link href="http://wp.colliertech.org/cj/?p=767"/>
		<id>http://wp.colliertech.org/cj/?p=767</id>
		<updated>2010-03-11T14:55:43+00:00</updated>
		<content type="html">&lt;p&gt;I’m happy to announce that after the filing of an &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=481431#5&quot;&gt;Intent to Package&lt;/a&gt; and nearly 2 years of work, IronRuby 0.9, IronPython 2.6b2, and the DLR are now in Debian. To my knowledge, this is the first package in Debian with direct and active upstream support from Microsoft.&lt;/p&gt;
&lt;p&gt;Kudos for this release go to &lt;a href=&quot;http://www2.apebox.org/wordpress/rants/&quot;&gt;Jo Sheilds&lt;/a&gt; (package sponsorship &amp;amp; mentoring),  &lt;a href=&quot;http://www.meebey.net/jaws/&quot;&gt;Mirco Bauer&lt;/a&gt; (package sponsorship &amp;amp; mentoring), &lt;a href=&quot;http://qa.debian.org/developer.php?login=doko@debian.org&quot;&gt;Matthias Klose&lt;/a&gt; (IronPython package review), &lt;a href=&quot;http://flanders.co.nz/&quot;&gt;Ivan Porto Carrero&lt;/a&gt; (IronRuby build/test support), &lt;a href=&quot;http://blog.jredville.com/&quot;&gt;Jim Deville&lt;/a&gt; (IronRuby build/test support), &lt;a href=&quot;http://blog.jredville.com/&quot;&gt;Jimmy Schementi&lt;/a&gt; (upstream point of contact @ Microsoft), &lt;a href=&quot;http://blogs.msdn.com/dinoviehland/&quot;&gt;Dino Viehland&lt;/a&gt; (IronPython build/test support), &lt;a href=&quot;http://www.voidspace.org.uk/&quot;&gt;Michael Foord&lt;/a&gt; (IronPython build/test support), &lt;a href=&quot;http://mareksafar.blogspot.com/&quot;&gt;Marek Safar&lt;/a&gt; (mono c# compiler support), &lt;a href=&quot;http://ankitjain.org/blog/&quot;&gt;Ankit Jain&lt;/a&gt; (xbuild support), the folks on OFTC’s #debian-cli, Freenode’s #ironruby and GimpNet’s #mono, and the folks on the IronRuby and IronPython mailing lists.&lt;/p&gt;
&lt;p&gt;This is my first package in Debian, too.  I’m pretty ecstatic ;)&lt;/p&gt;</content>
		<author>
			<name>C.J. Adams-Collier</name>
			<uri>http://wp.colliertech.org/cj</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: IronPython in Action: Manning Deal of the Day</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/wrgO_v-0_D4/ironpython-in-action-manning-deal-of.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-3621038858518431633</id>
		<updated>2010-03-10T17:17:47+00:00</updated>
		<content type="html">March 9th (that's tomorrow at the time of typing) &lt;a href=&quot;http://www.ironpythoninaction.com/&quot;&gt;IronPython in Action&lt;/a&gt; is the Manning deal of the day. This is a one day offer with a special discount.&lt;br /&gt;
&lt;br /&gt;
You can get the discount by buying IronPython in Action from &lt;a href=&quot;http://www.manning.com/affiliate/idevaffiliate.php?id=1072_152&quot;&gt;the Manning website&lt;/a&gt; and using the discount code dotd0310tw.&lt;br /&gt;
&lt;br /&gt;
It isn't only IronPython in Action that is on offer, you can also get &lt;a href=&quot;http://www.manning.com/affiliate/idevaffiliate.php?id=1072_168&quot;&gt;Quick Python&lt;/a&gt; by Vern Ceder.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-3621038858518431633?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Jw9ODl0ZM8RDAV4QV1CahSeuWfc/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Jw9ODl0ZM8RDAV4QV1CahSeuWfc/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Jw9ODl0ZM8RDAV4QV1CahSeuWfc/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Jw9ODl0ZM8RDAV4QV1CahSeuWfc/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=wrgO_v-0_D4:_ZD2LvZdvlM:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=wrgO_v-0_D4:_ZD2LvZdvlM:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=wrgO_v-0_D4:_ZD2LvZdvlM:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=wrgO_v-0_D4:_ZD2LvZdvlM:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=wrgO_v-0_D4:_ZD2LvZdvlM:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/wrgO_v-0_D4&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Encoding json on Silverlight with System.Json</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/Azh7wTTlPww/arch_d7_2010_03_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/Azh7wTTlPww/arch_d7_2010_03_06.shtml</id>
		<updated>2010-03-10T00:01:49+00:00</updated>
		<content type="html">At the backend of last I year I wrote a blog entry on decoding json on Silverlight. Well, the time has finally come and we're now encoding json to post back to our Django application. ... [365 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Azh7wTTlPww:R-Ef_3prElg:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Azh7wTTlPww:R-Ef_3prElg:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Azh7wTTlPww:R-Ef_3prElg:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Azh7wTTlPww:R-Ef_3prElg:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Azh7wTTlPww:R-Ef_3prElg:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Azh7wTTlPww:R-Ef_3prElg:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Azh7wTTlPww:R-Ef_3prElg:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/Azh7wTTlPww&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: T4MVC 2.6.13: now officially in MvcContrib, with a few new features</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2010/03/08/t4mvc-2-6-13-now-officially-in-mvccontrib-with-a-few-new-features.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7375178</id>
		<updated>2010-03-09T01:02:49+00:00</updated>
		<content type="html">To get the latest build of T4MVC: Go to MvcContrib T4MVC page on CodePlex   A few weeks back, we announced (mostly on Twitter) that T4MVC was moving into the MvcContrib Codeplex project.  I didn’t say much about it at the time because there wasn’t a whole lot to say yet, in the sense that the move had not actually happened.  MvcContrib was transitioning from github to Mercurial, and since I wasn’t familiar with either one, I figured I’d wait for that and only have to learn Mercurial. So to make it short, all of this has finally happen, and we can now say that T4MVC is officially part of MvcContrib!  Many thanks to Eric Hexter and Jeremy Skinner for helping make this possible.   So what difference does it make for it...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2010/03/08/t4mvc-2-6-13-now-officially-in-mvccontrib-with-a-few-new-features.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7375178&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: PyCon 2010: Python in the browser</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/hOlDtnQBFMg/pycon-2010-python-in-browser.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-9091592033547030332</id>
		<updated>2010-03-05T22:30:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://us.pycon.org/&quot;&gt;&lt;img alt=&quot;PyCon 2010: Atlanta&quot; src=&quot;http://www.processmechanics.com/media/pycon2010/speaking-pycon2010-400x60.png&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Last weekend I was very fortunate to &lt;a href=&quot;http://us.pycon.org/2010/conference/schedule/event/14/&quot; target=&quot;_blank&quot;&gt;speak&lt;/a&gt; at &lt;a href=&quot;http://us.pycon.org/2010/about/&quot; target=&quot;_blank&quot;&gt;PyCon 2010 in Atlanta&lt;/a&gt; about &lt;a href=&quot;http://ironpython.net/browser/&quot; target=&quot;_blank&quot;&gt;writing browser-based applications in Python&lt;/a&gt;. A majority of the &lt;a href=&quot;http://ironpython.codeplex.com/team/view&quot; target=&quot;_blank&quot;&gt;IronPython team&lt;/a&gt; was also there; &lt;a href=&quot;http://blogs.msdn.com/dinoviehland/&quot; target=&quot;_blank&quot;&gt;Dino Viehland&lt;/a&gt; &lt;a href=&quot;http://blip.tv/file/3263361/&quot; target=&quot;_blank&quot;&gt;spoke about IronPython Tooling in a keynote slot&lt;/a&gt;, &lt;a href=&quot;http://knowbody.livejournal.com/&quot; target=&quot;_blank&quot;&gt;Dave Fugate&lt;/a&gt; gave a &lt;a href=&quot;http://us.pycon.org/2010/conference/posters/accepted/#p6-behind-the-iron-curtain-testing-python-at-microsoft&quot; target=&quot;_blank&quot;&gt;poster presentation about testing IronPython&lt;/a&gt;, and Bill Chiles was there for emotional support. It was also great to see &lt;a href=&quot;http://www.voidspace.org.uk/&quot; target=&quot;_blank&quot;&gt;Michael Foord&lt;/a&gt;, and also see how supportive the Python community is of IronPython.&lt;/p&gt;  &lt;p&gt;Here’s the write-up from my talk:&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Introductions and talk overview&lt;/strong&gt;&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;I primarily work on IronRuby, but when it comes to web technologies I give IronPython love as well. Actually, I was an intern back when it was just the IronPython team, and when I started full-time I was doing exactly what this talk is about -- getting Python running in the browser -- so I'm really excited to be talking about this at PyCon.&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#ff8000&quot;&gt;You, the Python developer, use Python because you want to, but in the browser you use JavaScript because you &lt;i&gt;think&lt;/i&gt; you have to.&lt;/font&gt; With IronPython you can write browser code in Python. I’ll only begin to answer &quot;&lt;em&gt;what can the browser bring to Python?&lt;/em&gt;&quot; and &quot;&lt;em&gt;what can Python bring to the browser?&lt;/em&gt;&quot; in this short overview; examples will be very simple (with the exception of a few flashy ones) to make sure you can get started immediately.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Follow along&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://blip.tv/file/3259502/&quot; target=&quot;_blank&quot;&gt;Watch the video of the talk from PyCon&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://github.com/jschementi/pycon2010&quot; target=&quot;_blank&quot;&gt;Get all the demos from GitHub&lt;/a&gt; (&lt;a href=&quot;http://github.com/jschementi/pycon2010/raw/master/slides/jimmysch-python-in-the-browser.pdf&quot; target=&quot;_blank&quot;&gt;slides too&lt;/a&gt;) (&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/&quot; target=&quot;_blank&quot;&gt;view online&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, all information and documentation about this can be found the &lt;strong&gt;&lt;em&gt;new&lt;/em&gt;&lt;/strong&gt; &lt;a href=&quot;http://ironpython.net/browser/&quot; target=&quot;_blank&quot;&gt;ironpython.net/browser&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; page:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;IronPython: Python in the Browser&quot; height=&quot;300&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GF7qVWGTI/AAAAAAAAASw/sCtzGTVTac8/pythonbrowser%5B2%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;IronPython: Python in the Browser&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h5&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Setting Expectations&lt;/strong&gt;&lt;/font&gt;&lt;/h5&gt;  &lt;p&gt;“Python in the browser” is &lt;strong&gt;&lt;em&gt;&lt;u&gt;not&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; Microsoft embracing and extending the browsers to support Python. In fact, this integration downloads python on demand, so there is no change required to the browser This is because &lt;a href=&quot;http://silverlight.net&quot; target=&quot;_blank&quot;&gt;Silverlight&lt;/a&gt; as the Python execution engine …&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://silverlight.net&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Slide6&quot; height=&quot;300&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GF8DegJEI/AAAAAAAAAUY/nU2MGZZLF20/Slide6%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide6&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;… and if you’re wondering “What is Silverlight?” …&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href=&quot;http://microsoft.com/silverlight&quot;&gt;Silverlight&lt;/a&gt; is a browser plug-in for Windows, and Mac OS (Novell makes a Linux version called “Moonlight”), which provide a managed execution engine for .NET-based programming languages in the browser, a rich set of vector-graphics-based UI features, and interop with the browser programming model and DOM. Go to &lt;a href=&quot;http://silverlight.net&quot;&gt;http://silverlight.net&lt;/a&gt; for more information.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;a name=&quot;Hello_World_11966306436806917_11799363233149052&quot;&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Hello, World&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Let's start with the latter, and show the most obvious thing Python can bring to the browser: &lt;b&gt;&lt;font color=&quot;#00c800&quot;&gt;Python&lt;/font&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;To develop a Python application in the browser, you just need your favorite text editor; so open it up, create a HTML file, reference &lt;code&gt;dlr.js&lt;/code&gt;, and then you can use script-tags for running Python code:&lt;/p&gt;   &lt;p&gt;And the Python code does what you'd expect:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/start.html&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Hello from Python!&quot; border=&quot;0&quot; height=&quot;145&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S5GPr44r_SI/AAAAAAAAATg/NgB7Pc0fCFY/hello-world%5B1%5D.png?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px;&quot; title=&quot;Hello from Python!&quot; width=&quot;370&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p style=&quot;padding-left: 10px;&quot;&gt;Though, I’d strongly suggest against writing any real app with your python &lt;em&gt;inline&lt;/em&gt; with HTML, as it then can’t be reused. Sticking your python code in a .py file and referencing it from a script-tag is preferred for separation-purposes.&lt;/p&gt;  &lt;p&gt;Simple, right? Let's do something slightly more complicated, like handling mouse clicks. I'd prefer to do this in a REPL window, so let's turn one on in the browser; just place the following script-tag in the page:&lt;/p&gt;   &lt;p&gt;&lt;em&gt;Note: you have &lt;a href=&quot;http://github.com/jschementi/pycon2010/raw/master/repl.py&quot; target=&quot;_blank&quot;&gt;repl.py&lt;/a&gt; locally if you downloaded the demos, or point to the &lt;a href=&quot;http://github.com/jschementi/pycon2010/raw/master/repl.py&quot; target=&quot;_blank&quot;&gt;online one&lt;/a&gt; directly.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;And now when you add &lt;code&gt;?console&lt;/code&gt; to the page's URL a Python repl window will appear:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/start.html?console&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;IronPython REPL in browser&quot; border=&quot;0&quot; height=&quot;245&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GF9qHjXRI/AAAAAAAAATw/Jw05re18QuU/ipy-console%5B2%5D.png?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px;&quot; title=&quot;IronPython REPL in browser&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The console is hooked up to &lt;code&gt;sys.stdout&lt;/code&gt;, so your existing text-based Python scripts can come alive in the browser (sans reading from stdin). Also, any print statements you use in the app will show up in the console as well, making it a great println-debugging tool.&lt;/p&gt;  &lt;p&gt;Let's play around with the page a bit, adding a DOM element and changing it's HTML content to &quot;Ouch!&quot; when clicked:&lt;/p&gt;   &lt;h4&gt;&lt;a name=&quot;How_all_this_works_51619907561&quot;&gt;&lt;/a&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;How all this works&lt;/strong&gt;&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Wow, Python works in the browser! Let's look behind the curtain for a second to see what is really going on.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S5GF9z6_85I/AAAAAAAAARI/1Xa_-MK8Odw/s1600-h/Slide9%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide9&quot; height=&quot;300&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GF-43d3LI/AAAAAAAAARM/H07zENyIddw/Slide9_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide9&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;dlr.js contains a collection of functions for creating a Silverlight control on the HTML page that is capable of running IronPython code.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GF_WJ6OHI/AAAAAAAAARQ/Zs2OynTAJ18/s1600-h/Slide10%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide10&quot; height=&quot;300&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GF_vQmqnI/AAAAAAAAARU/F23H8Tffy10/Slide10_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide10&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;By default, just running dlr.js injects a Silverlight &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt; tag into the page (immediately after the script-tag) so it can run only DOM-based scripts, and also scans for other script-tags indicating that you want a Silverlight rendering surface, but more on that later.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GGADNQNjI/AAAAAAAAARY/3P9ucpP4vlQ/s1600-h/Slide11%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide11&quot; height=&quot;300&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GGATuqKBI/AAAAAAAAARc/nzeNu-SlsH0/Slide11_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide11&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The injected Silverlight control points to a Silverlight application made specifically to embed the &lt;a href=&quot;http://dlr.codeplex.com&quot; target=&quot;_blank&quot;&gt;dynamic language runtime&lt;/a&gt;, the compiler/runtime/embedding infrastructure IronPython is built on, find all the Python code the HTML page uses, and executes it.&lt;/p&gt;  &lt;p&gt;The XAP is tiny, as the DLR and IronPython are in separate packages which are downloaded on-demand; the DLR and IronPython are not installed with Silverlight, so they must be downloaded with the application.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GGAyQJvoI/AAAAAAAAARg/zZYmsKKs33c/s1600-h/Slide12%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide12&quot; height=&quot;300&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GGBUBagFI/AAAAAAAAARk/yZ0osMmBqSg/Slide12_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide12&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;However, if the application depends on the ironpython.net binaries, the user's browser will cache them and they won't be re-downloaded for any other app; almost as good as being part of the installer, while still being able to be open-source.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S5GGBrQAl0I/AAAAAAAAARo/8ph1eYwqc1s/s1600-h/Slide13%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide13&quot; height=&quot;300&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S5GGBxTj5TI/AAAAAAAAARs/0D1ys0w-yn4/Slide13_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide13&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now user-code is able to run. Each inline Python script-tag is executed as if it was one Python module, and all other Python files execute as their own modules.&lt;/p&gt;  &lt;div style=&quot;padding-left: 10px;&quot;&gt;   &lt;p&gt;To allow Python to be indented inside a script tag, the margin of the first line which does not only contain whitespace is removed. Line numbers in the HTML are preserved, so error messages show up correctly:&lt;/p&gt;    &lt;p&gt;&lt;img alt=&quot;python error messages&quot; height=&quot;157&quot; src=&quot;http://docs.google.com/File?id=dcvr9mmg_161dvgrbnhm_b&quot; title=&quot;python error messages&quot; width=&quot;380&quot; /&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The code is handed off to the DLR Hosting APIs (in the Microsoft.Scripting.Hosting namespace), which (a bit simplified) looks like this in C#:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GGCd7esbI/AAAAAAAAARw/f6NhskEnmf4/s1600-h/Slide14%5B3%5D.png&quot;&gt;&lt;img alt=&quot;Slide14&quot; height=&quot;300&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GGCzByChI/AAAAAAAAAR0/rU3Aj0WAbpE/Slide14_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Slide14&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Executing Python code with the DLR hosting APIs is very straight-forward; essentially Python-eval for .NET-based languages. This hosting API abstract the “embedding” of Python away from the actual engine, so an application that hosts the DLR can use one API and switch between any language compatible with the DLR.&lt;/p&gt;  &lt;p&gt;For more information how how this all works, see the &lt;a href=&quot;http://ironpython.net/browser/sl-back-to-just-text.pdf&quot; target=&quot;_blank&quot;&gt;paper&lt;/a&gt; and the &lt;a href=&quot;http://github.com/ironruby/ironruby/tree/master/Merlin/Main/Hosts/SilverLight/Microsoft.Scripting.SilverLight/&quot; target=&quot;_blank&quot;&gt;source code&lt;/a&gt;. Also, for more information on the DLR, see the &lt;a href=&quot;http://dlr.codeplex.com&quot; target=&quot;_blank&quot;&gt;DLR docs page&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;&lt;a name=&quot;Using_Python_libs_190130538307&quot;&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Batteries included here too&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;&lt;em&gt;Great, I can write python code in my browser, but how do I test it?&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A powerful part of Python is its standard-library; almost all Python applications depend on it, and it has some really useful libraries, like unittest. Here's a very simple test of the “say_ouch” app:&lt;/p&gt;   &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/unittest.html?test&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;156&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GPsjED7zI/AAAAAAAAAT0/PFm7wnEnX5k/image%5B4%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;But where did unittest come from? Take a closer look at the first line:&lt;/p&gt;   &lt;p&gt;That zip file contains the pieces of the Python standard-library that unittest depends on.&lt;/p&gt;  &lt;p style=&quot;padding-left: 10px;&quot;&gt;The Python standard library is a little less than 5MB compressed, so it's not &lt;i&gt;unthinkable&lt;/i&gt; to include the whole thing for development, but for deployment you should just include the dependencies; unittest's dependencies are 58 KB.&lt;/p&gt;  &lt;p&gt;When a zip file's filename is added to the path, it is treated like any other directory; &lt;code&gt;import&lt;/code&gt; looks inside it to find modules. You'll also notice that &lt;code&gt;import repl&lt;/code&gt; just worked, even though &lt;code&gt;repl.py&lt;/code&gt; isn't in the zip file; it was referenced by a script-tag earlier. It works because script-tags actually represent file-system entries; doing &lt;code&gt;open(&quot;repl.py&quot;)&lt;/code&gt;, or &lt;code&gt;open(&quot;PythonStdLib/unittest.py&quot;)&lt;/code&gt; would also work.&lt;/p&gt;  &lt;p style=&quot;padding-left: 10px;&quot;&gt;For anyone familiar with the older XAP-file/Chiron-based way to build Silverlight apps with IronPython: this combined script-tag/zip-file file-system abstraction is what allows you to never need to put file in the main application's XAP.&lt;/p&gt;  &lt;p&gt;Another interesting library to in Silverlight is &lt;a href=&quot;http://code.google.com/p/rst2xaml/&quot; target=&quot;_blank&quot;&gt;rst2xaml&lt;/a&gt;, which takes any &lt;a href=&quot;http://docutils.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;reStructuredText&lt;/a&gt;-formatted files and converts them to XAML to be rendered in Silverlight. &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/rst2xaml/Silverlight/index.html&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;rst2xaml&quot; height=&quot;300&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GGDPfBzhI/AAAAAAAAAT4/cMpE12n1Jqg/rst2xaml%5B2%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;rst2xaml&quot; width=&quot;376&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Using .NET built-in and external APIs&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Now let's transition to what the browser can bring to Python; specifically the APIs that Silverlight exposes. Silverlight has a ton of functionality, and as I was only able to discuss a few Python libraries in Silverlight, I'll only be able to show a few Silverlight libraries being used from Python, but the entirety of Silverlight can be used from Python. See all the features Silverlight provides, as well as how to use .NET APIs in-general from Python.&lt;/p&gt;  &lt;p&gt;One interesting API is the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(VS.95).aspx&quot; target=&quot;_blank&quot;&gt;WritableBitmap&lt;/a&gt;, which gives you per-pixel access to render whatever you want. For example, here its used to render a fractal:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/mandelbrot.html&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;mandelbrot&quot; height=&quot;301&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GGD9uJvoI/AAAAAAAAAUE/yyq7DkCSv-k/mandelbrot1-400%5B1%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;mandelbrot&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; padding-top: 0px;&quot;&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;Example derived from &lt;/font&gt;&lt;/em&gt;&lt;a href=&quot;http://www.silverlightplayground.org/post/2009/03/18/Silverlight3-WriteableBitmap.aspx&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;A.Boschin&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This is even more interesting because the actual bitmap was generated by code written in C#, but called from Python:&lt;/p&gt;   &lt;p style=&quot;padding-left: 10px;&quot;&gt;Source code summarized from both &lt;a href=&quot;http://github.com/jschementi/pycon2010/blob/master/mandelbrot/mandelbrotbase.cs&quot; target=&quot;_blank&quot;&gt;mandelbrotbase.cs&lt;/a&gt; and &lt;a href=&quot;http://github.com/jschementi/pycon2010/blob/master/mandelbrot/mandelbrot.py&quot; target=&quot;_blank&quot;&gt;mandelbrot.py&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As with any computationally-intensive operations, it's a good idea to write them in a static pre-compiled language; for example the scientific-computation libraries for Python are actually written in C, but the library provide an API accessible to Python programmers. Unfortunately, CPython puts that responsibility on the library developer; not every C library can be directly consumed by Python code. However, this example shows that IronPython can call into any C# library, or any library written in a .NET language for that matter. This makes it trivial to just begin writing your application in Python, and then decide to convert the performance-sensitive sections to C#.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironpython.net/browser/examples/pycon2010/webcam.html&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Hello from Python (and my webcam!)&quot; height=&quot;468&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GGE-DmxZI/AAAAAAAAAUQ/mEIWALq39i0/webcam%5B2%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;Hello from Python (and my webcam!)&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; padding-top: 0px;&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;em&gt;Example derived from &lt;/em&gt;&lt;/font&gt;&lt;a href=&quot;http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#webcam&quot; target=&quot;_blank&quot;&gt;&lt;font size=&quot;1&quot;&gt;&lt;em&gt;Tim Heuer’s webcam-mic app&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another interesting use of WritableBitmap is attaching different types of video sources to it, like a webcam! The upcoming version of Silverlight (version 4) supports webcam and microphone capture, and all that can be used from Python:&lt;/p&gt;   &lt;p style=&quot;padding-left: 10px;&quot;&gt;Webcam usage requires Silverlight 4 Beta; you can download the installer for &lt;a href=&quot;http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.dmg&quot;&gt;mac&lt;/a&gt; or &lt;a href=&quot;http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.exe&quot;&gt;windows&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;&lt;a name=&quot;Tooling_356330999173224_48773967288434505&quot;&gt;&lt;/a&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Tooling&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;The IronPython team’s big announcement at PyCon 2010 was the preview-availability of “IronPython Tools”, and add-on for Visual Studio 2010. This release was only distributed to PyCon 2010 attendees on CDs in their swag-bags, with a public release planned for the same time that VS 2010 final is released.&lt;/p&gt;  &lt;p&gt;IronPython tools comes with the beginnings of Silverlight support; for starters you can make a new Silverlight project:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GGFAJXH9I/AAAAAAAAASM/CeP8aMSYXog/s1600-h/vs-newproj%5B4%5D.png&quot;&gt;&lt;img alt=&quot;VS2010 New IronPython Silverlight project&quot; border=&quot;0&quot; height=&quot;217&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/S5GGFtb5fOI/AAAAAAAAASQ/Gn3Nz0mp9UI/vs-newproj_thumb%5B2%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;VS2010 New IronPython Silverlight project&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;IronPython tools uses the DLR hosting APIs for colorizing code:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GGFzkqZbI/AAAAAAAAASY/ckkjDAfVu48/s1600-h/vs-colorization%5B4%5D.png&quot;&gt;&lt;img alt=&quot;VS2010 IronPython colorization&quot; border=&quot;0&quot; height=&quot;277&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/S5GGG8o92CI/AAAAAAAAASc/tBrpb04J7Cg/vs-colorization_thumb%5B2%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;VS2010 IronPython colorization&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And using Debug-&amp;gt;Attach To Process you can set breakpoints in your python code (even code embedded in the HTML page) and use the Visual Studio debugger to step-through you app:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/S5GGHfiAeqI/AAAAAAAAASg/EmBGN8aDNGw/s1600-h/vs-debug%5B4%5D.png&quot;&gt;&lt;img alt=&quot;VS2010 IronPython Silverlight debugging&quot; border=&quot;0&quot; height=&quot;277&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S5GGHp7I7HI/AAAAAAAAASk/6zGdg6KOxZk/vs-debug_thumb%5B2%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;VS2010 IronPython Silverlight debugging&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Now you know …&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What a Python browser app looks like &lt;/li&gt;    &lt;li&gt;What is going on behind the scenes &lt;/li&gt;    &lt;li&gt;How to use real python libs in the browser &lt;/li&gt;    &lt;li&gt;How to use Silverlight APIs from Python &lt;/li&gt;    &lt;li&gt;That there is a prototype of IronPython tooling! &lt;/li&gt; &lt;/ul&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-9091592033547030332?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=hOlDtnQBFMg:vOJ6kP7nDcA:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=hOlDtnQBFMg:vOJ6kP7nDcA:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=hOlDtnQBFMg:vOJ6kP7nDcA:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=hOlDtnQBFMg:vOJ6kP7nDcA:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=hOlDtnQBFMg:vOJ6kP7nDcA:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=hOlDtnQBFMg:vOJ6kP7nDcA:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=hOlDtnQBFMg:vOJ6kP7nDcA:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/hOlDtnQBFMg&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: The all new and improved unittest: unittest2</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/nSk1RqOgJ0M/arch_d7_2010_02_27.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/nSk1RqOgJ0M/arch_d7_2010_02_27.shtml</id>
		<updated>2010-03-04T13:43:29+00:00</updated>
		<content type="html">At PyCon I gave a talk on some of the new features that are coming to unittest. unittest is the Python standard library testing framework. ... [346 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=nSk1RqOgJ0M:aBj6rNqmQms:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=nSk1RqOgJ0M:aBj6rNqmQms:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=nSk1RqOgJ0M:aBj6rNqmQms:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=nSk1RqOgJ0M:aBj6rNqmQms:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=nSk1RqOgJ0M:aBj6rNqmQms:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=nSk1RqOgJ0M:aBj6rNqmQms:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=nSk1RqOgJ0M:aBj6rNqmQms:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/nSk1RqOgJ0M&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: New Release: ConfigObj 4.7.2</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/xSn3L-dZMRQ/arch_d7_2010_02_27.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/xSn3L-dZMRQ/arch_d7_2010_02_27.shtml</id>
		<updated>2010-03-04T12:28:07+00:00</updated>
		<content type="html">A new version of ConfigObj has just been released: 4.7.2 This is a bugfix release with several important bugfixes. It is recommended that all users of ConfigObj 4.7 update. ... [447 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=xSn3L-dZMRQ:Kno80G4pVJU:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=xSn3L-dZMRQ:Kno80G4pVJU:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=xSn3L-dZMRQ:Kno80G4pVJU:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=xSn3L-dZMRQ:Kno80G4pVJU:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=xSn3L-dZMRQ:Kno80G4pVJU:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=xSn3L-dZMRQ:Kno80G4pVJU:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=xSn3L-dZMRQ:Kno80G4pVJU:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/xSn3L-dZMRQ&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Big Day in MonoLand</title>
		<link href="http://tirania.org/blog/archive/2010/Mar-03.html"/>
		<id>http://tirania.org/blog/archive/2010/Mar-03.html</id>
		<updated>2010-03-04T04:47:00+00:00</updated>
		<content type="html">&lt;p&gt;Mark Probst found and squashed one of the hardest bugs in
	our
	upcoming &lt;a href=&quot;http://www.mono-project.com/Compacting_GC&quot;&gt;garbage
	collector&lt;/a&gt;.  Pablo from Codice has been testing the new GC
	under stress
	and &lt;a href=&quot;http://lists.ximian.com/pipermail/mono-devel-list/2010-March/034274.html&quot;&gt;posted
	a nice message&lt;/a&gt; to the list.

	&lt;/p&gt;&lt;p&gt;Plenty of great feedback on deprecating old libraries and
	tools from Mono.  We will have a lighter distribution.  As
	things are coming together so fast and we are now well into
	the features we had planned for 3.0, we might end up just
	calling the next version 3.0 instead o 2.8.

	&lt;/p&gt;&lt;p&gt;Andreia
	got &lt;a href=&quot;http://www.go-mono.com/moonlight&quot;&gt;Moonlight&lt;/a&gt;
	&lt;a href=&quot;http://shana.worldofcoding.com/olympics-chrome-1.png&quot;&gt;running&lt;/a&gt;
	&lt;a href=&quot;http://shana.worldofcoding.com/olympics-chrome-2.png&quot;&gt;on&lt;/a&gt;
	&lt;a href=&quot;http://shana.worldofcoding.com/olympics-chrome-3.png&quot;&gt;Chrome&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: An Awesome PyCon</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/4NZULgvAl6I/arch_d7_2010_02_27.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/4NZULgvAl6I/arch_d7_2010_02_27.shtml</id>
		<updated>2010-03-04T00:07:07+00:00</updated>
		<content type="html">As always PyCon was awesome, I had a great time catching up with old friends and making some new friends. The conference wasn't bad either... ... [876 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=4NZULgvAl6I:BpfF7RXAS3w:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=4NZULgvAl6I:BpfF7RXAS3w:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=4NZULgvAl6I:BpfF7RXAS3w:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=4NZULgvAl6I:BpfF7RXAS3w:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=4NZULgvAl6I:BpfF7RXAS3w:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=4NZULgvAl6I:BpfF7RXAS3w:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=4NZULgvAl6I:BpfF7RXAS3w:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/4NZULgvAl6I&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): IronPython Extensions for Visual Studio 2010</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/nv-_UZ-I9Iw/ironpython-extensions-for-visual-studio.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-750526403404882937</id>
		<updated>2010-02-28T20:57:32+00:00</updated>
		<content type="html">&lt;strong&gt;UPDATE (Feb 28, 2010): &lt;/strong&gt;The IronPython team recently announced &lt;a href=&quot;http://us.pycon.org/2010/conference/schedule/event/9/&quot;&gt;IronPython Tools for Visual Studio&lt;/a&gt;, so this project is no longer being maintained. &lt;br /&gt;
  &lt;br /&gt;
Lately, I’ve been experimenting with the &lt;a href=&quot;http://msdn.microsoft.com/en-ca/library/dd885242(VS.100).aspx&quot;&gt;new editor APIs&lt;/a&gt; in Visual Studio 2010 to build some simple extensions to make Python editing a little better. Helpfully, IronPython exposes most of the complicated infrastructure (the tokenizer) to make the job easy. The documentation for the new editor APIs is still a bit weak; hopefully that will improve by the final release. In the meantime, the examples are the best source of information. There also a series of blog posts by &lt;del&gt;&lt;/del&gt;Mike Feingold about the &lt;a href=&quot;http://www.hill30.com/MikeFeingoldBlog/index.php/2009/07/29/django-editor-in-vs-2010-part-0-background/&quot;&gt;NDjango editor for VS2010&lt;/a&gt; that form a great end-to-end example. &lt;br /&gt;
&lt;h4&gt;Download &amp;amp; Installation&lt;/h4&gt;Download &lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/downloads/&quot;&gt;IronPython Extensions for Visual Studio 2010&lt;/a&gt; (and the source code; Ms-PL as always) from my BitBucket repository or from the &lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us&quot;&gt;Visual Studio Gallery&lt;/a&gt; (&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/a0ffaffc-d1c2-4b6c-a9d1-3addc37a5673&quot; target=&quot;_blank&quot;&gt;direct link&lt;/a&gt;). For direct downloads, just run (double-click) the .vsix file to install it into Visual Studio. Otherwise, you can use the extension manager (search for &quot;IronPython&quot;) and install it directly from Visual Studio.&lt;br /&gt;
&lt;h4&gt;Features&lt;/h4&gt;The extensions provide three features so far: syntax highlighting, brace matching, and outlining.&lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/_RAOuCQw0XUY/SwmRxS1clTI/AAAAAAAAACQ/ZHQIND4HolU/s1600-h/IronPython-vs2010%5B6%5D.png&quot;&gt;&lt;img alt=&quot;IronPython-vs2010&quot; border=&quot;0&quot; src=&quot;http://lh6.ggpht.com/_RAOuCQw0XUY/SwmRx085J1I/AAAAAAAAACU/mxUC6abava8/IronPython-vs2010_thumb%5B2%5D.png?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;&quot; title=&quot;IronPython-vs2010&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
In the future I'm planning on adding project support, templates, and (most difficult of all) IntelliSense.&lt;br /&gt;
an unknown author&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-750526403404882937?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/nv-_UZ-I9Iw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Simplified User Interfaces on the iPhone with MonoTouch.Dialog</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-23.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-23.html</id>
		<updated>2010-02-24T03:32:00+00:00</updated>
		<content type="html">&lt;p&gt;At the core of the iPhone UI lies the UITableView, a
	powerful table rendering widget that is used by pretty much
	every application on the iPhone.  The UITableView is a
	powerful widget that can render its data in many different
	ways based on how you configure the widget, these are all
	variations of the UITableView:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://primates.ximian.com/~miguel/pictures/uitableviews.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;This is one powerful widget. 

	&lt;/p&gt;&lt;p&gt;The contents of the UITableView are rendered by calling
	into a developer supplied set of routines that provide the
	data on demand.  The protocol includes queries like &quot;How many
	sections?&quot;, &quot;How many rows in section N?&quot;, &quot;What is the title
	for section N?&quot; as well as callbacks to provide the actual
	contents of a cell.  Although the widget is pretty powerful,
	creating UIs with it is a chore and a pain to maintain.  The
	pain to maintain and the repetitive nature of the process
	leads to developers either spending too much time customizing
	each view, bare minimum configuration and lack of polish on
	certain configurations.
	As &lt;a href=&quot;http://github.com/migueldeicaza/monotouch-samples/tree/master/monocatalog/&quot;&gt;I
	ported many of the Objective-C&lt;/a&gt; samples to C# I found
	myself repeating the same process over and over.

	&lt;/p&gt;&lt;p&gt;My fingers developed calluses, and at night I kept thinking
	that there should be a better way.   But at the time, I was
	just doing a line-by-line port, I was not really ready to
	build a new API on top of it.

	&lt;/p&gt;&lt;p&gt;Recently, when my favorite twitter client on the iPhone
	butchered its UI I figured I would write my own Twitter
	client.  The first step was to create the account
	configuration for my twitter account.  As you can imagine, the
	configuration is done with a variation of the UITableView.
	And once again I found myself setting up the model, responding
	to view events, sprinkling switch and if statements liberally
	all through my source code and just plainly not having any fun
	writing the code.  This is
	how &lt;a href=&quot;http://github.com/migueldeicaza/MonoTouch.Dialog&quot;&gt;MonoTouch.Dialog&lt;/a&gt;
	was born.

	&lt;/p&gt;&lt;p&gt;I wanted to reflection to allow a class to be mapped to a
	dialog box, something that would allow me to write a C# class
	and have it mapped to a UITableView, something like this:

&lt;/p&gt;&lt;pre&gt;class TwitterConfig {
    [Section (&quot;Account&quot;)]
      [Entry] string Username;
      [Password] string Password;

   [Section (&quot;Settings&quot;)]
      bool AutoRefresh;
      bool AutoLoad;
      bool UseTwitterRetweet;
}&lt;/pre&gt;

	&lt;p&gt;Instead of starting with the Reflection code to deal with
	this, I first created an in memory representation of the
	entire dialog.  The idea was that the Reflection code would
	then be a bridge that could use the engine code.   

	&lt;/p&gt;&lt;p&gt;The engine code is built on the idea that each row could be
	a specific kind of widget.   It could contain text, a switch
	box, a text editing line, a slider control, a calendar picker
	or any other kind of user created control.   I call these
	&quot;Elements&quot; and I created a bunch of these:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;BooleanElement: rendered with a UISwitch
		&lt;/li&gt;&lt;li&gt;FloatElement: rendered with a slider.
		&lt;/li&gt;&lt;li&gt;HtmlElement: when tapped, starts the web browser
		on a url.
		&lt;/li&gt;&lt;li&gt;StringElement: used to render plain strings.
		&lt;/li&gt;&lt;li&gt;MultilineElement: A multi-line string element.
		&lt;/li&gt;&lt;li&gt;RadioElement: a radio-item, to select one of many
		choices.
		&lt;/li&gt;&lt;li&gt;CheckboxElement: like the BooleanElement, but uses
		a checkbox instead of a UISwitch.
		&lt;/li&gt;&lt;li&gt;ImageElement: Allows the user to pick an image or
		take a photo.
		&lt;/li&gt;&lt;li&gt;EntryElement: text entry element.
		&lt;/li&gt;&lt;li&gt;DateTimeElement, DateElement, TimeElement: pickers
		for dates and times, dates and times.
	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;The MonoTouch.Dialog follows the Apple HIG for the iPhone
	and implements as much of the UI policy allowing me to focus
	on the actual application instead of focusing on the
	administrivia.

	&lt;/p&gt;&lt;p&gt;Although the UITableView is built on the powerful
	Model/View/Controller setup that would allow it to scale
	efficiently to large data sets, most configuration pages and
	data entry pages do not require this complexity.  

	&lt;/p&gt;&lt;p&gt;Another feature is that it takes care of all the
	bookkeeping required to do text entry without any work from
	the programmer: accepting keyboard input, automatically
	switching to the next entry line on return, aligning all entry
	lines in a section, dismissing the keyboard with the last
	input is reached.

	&lt;/p&gt;&lt;p&gt;Here is a sample of the API in action:
	&lt;img align=&quot;right&quot; src=&quot;http://primates.ximian.com/~miguel/pictures/mt.dialog.settings.png&quot; /&gt;
	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
var root = new RootElement (&quot;Settings&quot;) {
  new Section (){
    new BooleanElement (&quot;Airplane Mode&quot;, false),
  new RootElement (&quot;Notifications&quot;, 0, 0) { Notifications }
  new Section (){
    new RootElement (&quot;Sound&quot;), { Sound },
    new RootElement (&quot;Brightness&quot;){ Brightness },
    new RootElement (&quot;Wallpaper&quot;){ Wallpaper }
  },
  new Section () {
    new EntryElement (&quot;Login&quot;, &quot;Your login name&quot;, &quot;miguel&quot;),
    new EntryElement (&quot;Password&quot;, &quot;Your password&quot;, &quot;password&quot;, true),
    new DateElement (&quot;Select Date&quot;, DateTime.Now),
    new TimeElement (&quot;Select Time&quot;, DateTime.Now),
  }
}
	&lt;/pre&gt;
	&lt;br style=&quot;clear: both;&quot; /&gt;

	&lt;p&gt;Once the RootElement has been created, this can be passed
	to a DialogViewController to manage it:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
var dv = new DialogViewController (root);
navigation.PushViewController (dv, true);
&lt;/pre&gt;

&lt;h3&gt;Reflection API&lt;/h3&gt;

	&lt;p&gt;The reflection API inspects a class and looks for fields
	that have some special attributes on them.

	&lt;/p&gt;&lt;p&gt;Here is a sample class and how it is
	rendered: &lt;img align=&quot;right&quot; src=&quot;http://github.com/migueldeicaza/MonoTouch.Dialog/raw/master/sample.png&quot; /&gt;
	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
class AccountInfo {
    [Section]
    public bool AirplaneMode;

    [Section (&quot;Data Entry&quot;, &quot;Your credentials&quot;)]

    [Entry (&quot;Enter your login name&quot;)]
    public string Login;

    [Caption (&quot;Password&quot;), Password (&quot;Enter your password&quot;)]
    public string passwd;

    [Section (&quot;Travel options&quot;)]
    public SeatPreference preference;
}
	&lt;/pre&gt;

	&lt;br style=&quot;clear: both;&quot; /&gt;
	
	&lt;p&gt;As you can see, enumerations (SeatPreference) are
	automatically turned into a radio selection that uses the
	UINavigationController to navigate and the captions are
	computed from the field names, a behavior that you can
	customize with the [Caption] attribute. 

	&lt;/p&gt;&lt;p&gt;The attributes that are attached to each instance variable
	control how things are rendered and can be used to specify a
	variety of attributes like captions, images and overriding the
	defaults from MonoTouch.Dialog.
		  
&lt;/p&gt;&lt;h3&gt;Some Samples&lt;/h3&gt;

	&lt;p&gt;Code: &lt;img align=&quot;right&quot; src=&quot;http://primates.ximian.com/~miguel/pictures/mt.dialog.settings.png&quot; /&gt;
	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
new RootElement (&quot;Settings&quot;) {
  new Section (){
    new BooleanElement (&quot;Airplane Mode&quot;, false),
    new RootElement (&quot;Notifications&quot;, 0, 0) { Notifications }
  new Section (){
    new RootElement (&quot;Sound&quot;), { Sound },
    new RootElement (&quot;Brightness&quot;){ Brightness },
    new RootElement (&quot;Wallpaper&quot;){ Wallpaper }
  },
  new Section () {
    new EntryElement (&quot;Login&quot;, &quot;Your login name&quot;, &quot;miguel&quot;),
    new EntryElement (&quot;Password&quot;, &quot;Your password&quot;, &quot;password&quot;, true),
    new DateElement (&quot;Select Date&quot;, DateTime.Now),
    new TimeElement (&quot;Select Time&quot;, DateTime.Now),
  }
}
	&lt;/pre&gt;

	&lt;br style=&quot;clear: both;&quot; /&gt;

&lt;h3&gt;LINQ and MonoTouch.Dialog&lt;/h3&gt;

	&lt;p&gt;Craig has written a great Conference application for the
	&lt;a href=&quot;http://live.visitmix.com&quot;&gt;Mix 2010 conference&lt;/a&gt;.  I
	helped him reduce the code size of the application by removing
	all of the repetitive code required to set up UITableViews for
	various pieces of the application with MonoTouch.Dialog.
	Since the conference application deals with a database
	schedule, I extended MonoTouch.Dialog to work better with
	LINQ.

	&lt;/p&gt;&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://primates.ximian.com/~miguel/pictures/mix10.schedule.png&quot; /&gt; In the same spirit of the System.Xml.Linq API that allows
	you to create XML documents with nested LINQ statements, you
	can use MonoTouch.Dialog to create your entire UIs.
	
	&lt;/p&gt;&lt;p&gt;For Craig's application, I wrote a SessionElement that
	allows sessions to be &quot;starred&quot; and shows both the title of
	the session as well as the location of the session.

	&lt;/p&gt;&lt;p&gt;This code constructs the entire UI for the &quot;My
	Schedule&quot; tab.  The data is populated on demand (Apple
	recommends that all views are loaded lazily)

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
public class FavoritesViewController : DialogViewController {
  public FavoritesViewController () : base (null) { }

  public override void ViewWillAppear (bool animated)
  {
    var favs = AppDelegate.UserData.GetFavoriteCodes();
    Root = new RootElement (&quot;Favorites&quot;) {
      from s in AppDelegate.ConferenceData.Sessions
        where favs.Contains(s.Code)
        group s by s.Start into g
        orderby g.Key
        select new Section (MakeCaption (&quot;&quot;, g.Key)) {
          from hs in g
            select (Element) new SessionElement (hs)
        }
    };
  }
}
	&lt;/pre&gt;

	&lt;p&gt;That is it.  The entire source code. 
	
	&lt;/p&gt;&lt;p&gt;So use any of the two models that you enjoy the most:
	Reflection for quick one-offs and quick data-entry or the
	Element API for more advanced user interfaces but without
	having to spend your life writing boilerplate code.

	&lt;/p&gt;&lt;p&gt;I hope that this helps guys spend more time improving their
	applications, and less time writing boilerplate code. 

	&lt;/p&gt;&lt;p&gt;MonoTouch.Dialog is not perfect and does not have every
	possible bell and whistle that you might want to add.
	Although I do welcome patches for certain features, feel free
	to &lt;a href=&quot;http://github.com/migueldeicaza/MonoTouch.Dialog&quot;&gt;fork
	the code&lt;/a&gt; and patch at will to suit your needs.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: MeeGo Support in MonoDevelop</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-22.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-22.html</id>
		<updated>2010-02-23T00:49:00+00:00</updated>
		<content type="html">&lt;p&gt;We just landed the support on MonoDevelop's trunk to
	support developing applications that
	target &lt;a href=&quot;http://meego.com/&quot;&gt;MeeGo&lt;/a&gt; powered devices.

	&lt;/p&gt;&lt;p&gt;MeeGo is a Linux-based operating system designed to run on
	mobile computers, embedded systems, TVs and phones.
	Developers would not typically use a MeeGo device as a
	development platform, but as a deployment platform.

	&lt;/p&gt;&lt;p&gt;So it made sense for us to leverage the work that we have
	done in MonoDevelop to support the iPhone to support MeeGo.
	Unlike MonoTouch, we are not limited to running on a Mac, you
	can use MonoDevelop on Windows, Linux and OSX to target Meego
	Devices.

	&lt;/p&gt;&lt;p&gt;Developers would continue using their Linux Workstation,
	their Windows PC, or their Mac to develop and test and the
	resulting cross-platform binary can be deployed and debugged
	remotely over the wire using Mono's Soft Debugger.

	&lt;/p&gt;&lt;p&gt;In &lt;a href=&quot;http://www.youtube.com/watch?v=acVaJzTOlRs&quot;&gt;this
	video&lt;/a&gt;, I interview Michael Hutchinson as he demostrates
	the developer experience:

	&lt;/p&gt;&lt;center&gt;
	
	
	
	&lt;/center&gt;
	
	&lt;p&gt;The MonoDevelop/Mono that we will be supporting is entirely
	Gtk# based, both during development as well as during
	deployment.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Using MonoDevelop to Debug Executables with no Solution Files</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-20.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-20.html</id>
		<updated>2010-02-21T00:28:00+00:00</updated>
		<content type="html">&lt;p&gt;Every once in a while I need to debug some Mono program
	that does not come with a solution.   Either a program that
	was compiled using a Makefile or an executable that I
	installed with RPM on my system.

	&lt;/p&gt;&lt;p&gt;Sometimes I would end up cretaing MonoDevelop solution that
	contained every source file, command line option and resource
	that I meticulously copied from the Makefile.   In other
	words, I was in for a world of pain just to be able to use
	MonoDevelop's awesome debugger.
	
	&lt;/p&gt;&lt;p&gt;Lluis offered this solution, and I am blogging it hoping
	that it will help someone else in the future.   Follow these
	steps to debug a Mono executable and set breakpoints on the
	source code or class libraries source code:

	&lt;/p&gt;&lt;h3&gt;1. Create a Generic Solution&lt;/h3&gt;

	&lt;p&gt;Select &lt;i&gt;File/New Solution&lt;/i&gt; and select Generic
	Solution:
	
	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002201409bEQblOZ4.png&quot; /&gt;
	&lt;/center&gt;

	&lt;h3&gt;2. Open the Project Properties&lt;/h3&gt;

	&lt;p&gt;Double click on your project, in my case I called the
	project &quot;compiler&quot;:

	&lt;/p&gt;&lt;p&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002201410ZAtdGiGo.png&quot; /&gt;

	&lt;/p&gt;&lt;h3&gt;3. Add an Execute Custom Command&lt;/h3&gt;

	&lt;p&gt;In your project select &lt;i&gt;Custom Commands&lt;/i&gt;:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002201410urzGxdc4.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;Add a custom &lt;i&gt;Execute&lt;/i&gt; command by selecting it from
	the &quot;Select a Project Operation&quot; option and point to your Mono
	executable: 

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002201411Y7OcVOkE.png&quot; /&gt;
	&lt;/center&gt;

	&lt;h3&gt;4. Load source files&lt;/h3&gt;

	&lt;p&gt;Use &lt;i&gt;File/Open&lt;/i&gt; to load the source file where you want
	to set a breakpoint (the executable source or some class
	library source) and set your breakpoints:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/10022014120gbFjMTh.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;Then use &lt;i&gt;Run/Debug&lt;/i&gt; to start your program in
	debugging mode (Linux and Windows users can use F5, MacOS X
	users can use Command-Return).
	&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: What have we been up to?</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-17.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-17.html</id>
		<updated>2010-02-18T09:07:00+00:00</updated>
		<content type="html">&lt;p&gt;Every once in a while I would run into someone that will
	ask me what exactly we are up to in Mono.  As Mono becomes
	larger, and various big projects &quot;land&quot; into the trunk, we can
	no longer do releases on a monthly basis.  Some of the work
	that we do is inherently very attractive, things like new
	features, new libraries, new UIs and new frameworks.  But
	probably more important are the efforts to turn our code
	into &lt;a href=&quot;http://erikengbrecht.blogspot.com/2007/09/tar-pit.html&quot;&gt;programming
	system products&lt;/a&gt;: fixing bugs, testing it, packaging it,
	supporting it, writing documentation, test suites, improving
	error handling, scaling the software, making it faster,
	slimmer and backporting bug fixes.

	&lt;/p&gt;&lt;p&gt;I wanted to give my readers a little bit of an insight of
	the various things that we are doing at Novell in my team.
	This is just focused on the work that we do at Novell, and not
	on the work of the larger Mono community which is helping us
	fill in the blanks in many areas of Mono. 

&lt;/p&gt;&lt;h3&gt;MonoDevelop work&lt;/h3&gt;

	&lt;p&gt;We just released MonoDevelop 2.2, a major upgraded to our
	IDE story, and the backbone that allows developers on Linux to
	debug various kinds of Mono-based applications.  With support
	for the new
	&lt;a href=&quot;http://www.mono-project.com/Soft_Debugger&quot;&gt;Soft
	debugging engine&lt;/a&gt;, it has allowed us to support debugging ASP.NET
	web sites, ASP.NET web services, Silverlight applications,
	Gtk# and Console applications with minimal effort.  Since the
	soft debugger leverages Mono's JIT engine, porting the soft
	debugger to a new architecture is very simple.

	&lt;/p&gt;&lt;p&gt;MonoDevelop 2.2 major goal was to create a truly cross
	platform IDE for .NET applications.   We are off to a solid
	start with Linux, Windows and OSX support as well as solid
	support for C#, VB, Vala and Python.

	&lt;/p&gt;&lt;p&gt;We are now turning our attention to MonoDevelop 2.4.   This
	new release will incorporate many new UI touch ups which I
	will blog about separately.

&lt;/p&gt;&lt;h3&gt;MeeGo/Moblin Support&lt;/h3&gt;

	&lt;p&gt;We have been working closely with
	the &lt;a href=&quot;http://meego.com/&quot;&gt;MeeGo&lt;/a&gt; (previously Moblin)
	team at Novell to offer a streamlined developer experience for
	developers on Windows, Mac and Linux to target MeeGo devices.

	&lt;/p&gt;&lt;p&gt;Developers will be able to develop, test and deploy from
	their favorite platform software for MeeGo devices.
	
&lt;/p&gt;&lt;h3&gt;Mono Service Pack&lt;/h3&gt;

	&lt;p&gt;A service pack release
	of &lt;a href=&quot;http://www.novell.com/products/mono/&quot;&gt;Mono's
	enterprise supported ASP.NET&lt;/a&gt; release is ahead of us and we
	will be upgrading Mono from release 2.4 to release 2.6.

	&lt;/p&gt;&lt;p&gt;This will bring to our customers support for all of
	the &lt;a href=&quot;http://www.mono-project.com/Release_Notes_Mono_2.6&quot;&gt;new
	features in Mono 2.6&lt;/a&gt; with the added benefit that it has
	gone through four months of extra testing and polish.

	&lt;/p&gt;&lt;p&gt;As part of this effort we are also upgrading
	the &lt;a href=&quot;http://www.go-mono.com/monotools/&quot;&gt;MonoTools for
	Visual Studio&lt;/a&gt; to support the new Mono Soft Debugger.  

&lt;/p&gt;&lt;h3&gt;Runtime Infrastructure&lt;/h3&gt;

	&lt;p&gt;Mono's runtime is being upgraded in various ways: we
	continue to work on
	integrating &lt;a href=&quot;http://www.mono-project.com/Compacting_GC&quot;&gt;LLVM&lt;/a&gt;
	[1], productize our new
	&lt;a href=&quot;http://www.mono-project.com/Compacting_GC&quot;&gt;copying
	garbage collector&lt;/a&gt; that can compact the heap, and make Mono
	scale better on multi-core systems with the integration of
	ParallelFX into Mono as well as re-architecting thread
	management and thread pools in Mono.  

	&lt;/p&gt;&lt;p&gt;A big upgrade for Mono 2.8 will be the support for
	obfuscated assemblies that insert junk in dead blocks.   This
	is a feature that we never had, but with many Silverlight
	applications being deployed with these options we started work
	on this.

	&lt;/p&gt;&lt;p&gt;We are working to improve our support for F# and together
	with various groups at Microsoft we are working to improve
	Mono's compatibility with the CLR to run IronPython, IronRuby
	and F# flawlessly in Mono.   Supporting F# will require some
	upgrades to the way that Mono works to effectively support
	tail call optimizations.

	[1] LLVM: better use LLVM to produce better code, use it in
	more places where the old JIT was still required and expand
	its use to be used for &lt;a href=&quot;http://tirania.org/blog/www.mono-project.com/AOT&quot;&gt;AOT code&lt;/a&gt;.

&lt;/p&gt;&lt;h3&gt;Mono for Mobile Devices&lt;/h3&gt;

	&lt;p&gt;We recently shipped Mono for the iPhone and we continue to
	develop and improve that platform.  Our goal is to provide
	developers with a &lt;b&gt;great&lt;/b&gt; experience, so we are doing
	everything in our power to make sure that every wish and whim
	of the iPhone developer community is satisfied.  We are
	working to &lt;a href=&quot;http://monotouch.net/iPad&quot;&gt;expand our API
	coverage&lt;/a&gt;, &lt;a href=&quot;http://github.com/migueldeicaza/MonoTouch.Dialog&quot;&gt;write
	helper libraries&lt;/a&gt; to assist
	developers, &lt;a href=&quot;http://wiki.monotouch.net/&quot;&gt;tune existing
	.NET libraries&lt;/a&gt; to run on Mobile devices, reduce startup
	time, and reduce executable sizes. 

	&lt;/p&gt;&lt;p&gt;But we have also just started an effort to ship MonoDroid:
	Mono for the Android platform.   This will include a
	comprehensive binding to the Java APIs, but accessible through
	the JIT-compiled, 335-powered runtime engine.

	&lt;/p&gt;&lt;p&gt;Our vision is to allow developers to reuse their engine and
	business logic code across all mobile platforms and swapping
	out the user interface code for a platform-specific API.
	MonoTouch for iPhone devices and the Monodroid APIs for
	Android devices.
	
&lt;/p&gt;&lt;h3&gt;Head-less Tasks&lt;/h3&gt;

	&lt;p&gt;A big part of Mono's effort is in the development kit: the
	compiler, the tools and the server side components.

	&lt;/p&gt;&lt;p&gt;Mono has
	now &lt;a href=&quot;http://tirania.org/blog/archive/2009/Dec-09.html&quot;&gt;a
	complete C# 4.0 implementation&lt;/a&gt; that will be ready to ship
	with the next version of Mono.   Anyone can try it today by
	building Mono from SVN.    We are also porting our C# compiler
	to work with Microsoft's Reflection.Emit to enable us to run
	our &lt;a href=&quot;http://tirania.org/blog/archive/2008/Sep-08.html&quot;&gt;C#
	Interactive Shell&lt;/a&gt; in Silverlight applications and to allow
	.NET developers to embed our compiler in their applications to
	support C# Eval.

	&lt;/p&gt;&lt;p&gt;Our MSBuild implementation is very robust these days, and
	it will be fully supported in Mono 2.8 (and we will be
	backporting it to Mono 2.6 as well).

	&lt;/p&gt;&lt;p&gt;On the ASP.NET front, we are working with third party
	vendors to certify that their controls work with Mono's
	ASP.NET (we will have some tasty announcements soon) and we
	are also catching up to the new features that are coming with
	.NET 4.0.

	&lt;/p&gt;&lt;p&gt;WCF has turned out to be one of the most requested
	features.   We had historically only paid attention to WCF for
	its Silverlight/Moonlight use cases, but as time goes by, more
	and more users are moving to WCF.   We are working on
	completing our WCF support. 
	
	&lt;/p&gt;&lt;p&gt;On the ADO.NET front our major focus has been to complete
	the support for LINQ to SQL as part of the DbLinq project
	that we are contributing to.    At this point we have no plans
	to implement Entity Frameworks due to the large scope of that
	project.

&lt;/p&gt;&lt;h3&gt;Moonlight 3&lt;/h3&gt;

	&lt;p&gt;I do not need to say much about Moonlight 3.   Moonlight 3
	is one of our most visible projects right now due to the
	adoption of Silverlight and Smooth Streaming.

	&lt;/p&gt;&lt;p&gt;By the first week of Feburary there had been
	610,000 downloads of Moonlight 2.0 for Linux.   This is only
	counting the downloads since the official release on December.

&lt;/p&gt;&lt;h3&gt;Policy Changes&lt;/h3&gt;

	&lt;p&gt;Mono 2.6 was the last release of Mono to support the .NET
	1.0 API profile.   With Mono 2.8 we are going to drop the
	class library support for 1.0 and ship both 3.5 and 4.0
	assemblies.

	&lt;/p&gt;&lt;p&gt;With Mono 2.8 we are also switching the default tools and
	compiler to be 4.0-based as opposed to be based on the 3.5
	profile.  We will be doing a release of Mono 2.8 a couple of
	months after .NET 4.0 ships.

&lt;/p&gt;&lt;h3&gt;Ciao!&lt;/h3&gt;

	&lt;p&gt;The above probably reflects the main focus of the team in
	the past three months.    There are many community driven
	efforts that are very cool and that deserve their own space
	and a future blog post.   Things like the amazing work that
	was done on Qyoto and the Synapse IM client come to mind. 

	&lt;/p&gt;&lt;p&gt;We look forward to a great year ahead of us.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Valentine's Day Call to Action</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-14.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-14.html</id>
		<updated>2010-02-14T23:05:00+00:00</updated>
		<content type="html">&lt;p&gt;Everyone knows that in this day an age a software product
	is not complete until it offers a Desktop UI, a Web
	UI, and a front-end on the Appstore.

	&lt;/p&gt;&lt;p&gt;We access beautiful web sites, we purchase 0.99 apps on our
	phones and install gorgeous native software on our desktops.

	&lt;/p&gt;&lt;p&gt;The sysadmin community, once the backbone of Linux
	adoption, keeps asking &quot;but what about me?&quot;.   Indeed.   What
	about them?   

	&lt;/p&gt;&lt;p&gt;What are we doing about these heroes?  The heroes that ssh
	in the middle of the night to a remote server to fix a
	database; The heroes that remove a chubby log file clogging
	the web server arteries; The very same heroes that restore a
	backup after we drag and dropped the /bin directory into the
	trashcan?

	&lt;/p&gt;&lt;p&gt;They are a rare breed in danger of extinction, unable to
	transition into a GUI/web world.  Trapped in a vt100 where
	they are forced to by conditions to a small 80x24 window (or
	474 by 188 with 6 pixel fonts on a 21 inch flat screen display).

	&lt;/p&gt;&lt;p&gt;These fragile creatures need our attention.

	&lt;/p&gt;&lt;p&gt;Today I am doing my part, my 25 cents to help improve their
	lives. 

	&lt;/p&gt;&lt;p&gt;I am
	releasing &lt;a href=&quot;http://tirania.org/software/mono-curses/&quot;&gt;Mono
	Curses 0.4&lt;/a&gt; a toolkit to create text-based applications
	using C# or your favorite CLR language.

	&lt;/p&gt;&lt;p&gt;The combination of C#'s high-level features, Mono's
	libraries, Mono/.NET third party library ecosystem and the
	beautifully designed gui.cs, we can bring both hope and change
	to this community.   Hope and change in the form of innovative
	text-based applications that run comfortably in 80x24
	columns.    

&lt;/p&gt;&lt;h3&gt;What is gui.cs&lt;/h3&gt;

	&lt;p&gt;We know that hardcore sysadmins will want full control over
	what gets placed on the screen, so at the core of mono-curses
	we expose a
	C# &lt;a href=&quot;http://en.wikipedia.org/wiki/Curses_(programming_library)&quot;&gt;curses
	binding&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;On top of this, we provide a widget set called &quot;gui.cs&quot;.
	gui.cs
	was &lt;a href=&quot;http://tirania.org/blog/archive/2007/Apr-16.html&quot;&gt;introduced
	in 2007&lt;/a&gt; enjoying unprecedented public acclaim among a
	circle of five friends of mine.   Eight months after its
	introduction, it experienced an
	outstanding &lt;a href=&quot;http://tirania.org/blog/archive/2007/Dec-18-1.html&quot;&gt;100%
	growth&lt;/a&gt; when a second application was written using it.

	&lt;/p&gt;&lt;p&gt;Today, gui.cs is the cornerstone of great work-in-progress
	applications that any decade now will see the light of day.
	Including a new and riveting version of
	the &lt;a href=&quot;http://github.com/migueldeicaza/mc&quot;&gt;Midnight
	Commander&lt;/a&gt;:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002141245j9UsLaaH.png&quot; /&gt;
	&lt;p&gt;With only 3% of features implemented progress is clearly
	unstoppable!
        &lt;/p&gt;&lt;/center&gt;

	&lt;p&gt;I believe in dogfooding my own software before I unleash
	it to the world:
	
	&lt;/p&gt;&lt;center&gt;
	&lt;a href=&quot;http://tirania.org/shots/10021412548d1R5xY3.png&quot;&gt;
	&lt;img src=&quot;http://tirania.org/shots/10021412548d1R5xY3.png&quot; width=&quot;482&quot; /&gt;
	&lt;/a&gt;
	&lt;p&gt;On a typical 21&quot; sysadmin setup:
	474x188 with the &quot;Sysadmin Choice&quot; award winning 6 pixel font.
	&lt;/p&gt;&lt;/center&gt;
	
&lt;h3&gt;Valentine's Day&lt;/h3&gt;

	&lt;p&gt;So in this Valentine's Day, after you are tired of spending
	quality time with your grandmother, making out with your
	significant other or a stranger you just met at the checkout
	line in Costco, consider donating.  Donate some of your time
	towards building some nice applications for your favorite
	sysadmin.  God knows that he spent the whole day monitoring
	the dmesg output, looking for a SATA controller failure and
	keeping an eye on &lt;tt&gt;/var/log/secure&lt;/tt&gt;, waiting for your
	ex to deface your wordpress installation.

	&lt;/p&gt;&lt;p&gt;And you have a choice, you can use Boo, IronRuby,
	IronPython, F# for building your app.   VB.NET is also
	available if you want to teach your sysadmin a lesson in
	humility.

	&lt;/p&gt;&lt;p&gt;Get inspired today with some of the 
	&lt;a href=&quot;http://picasaweb.google.com/miguel.de.icaza/GuiCs&quot;&gt;old
	screenshots&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): XNA Example - Luminance</title>
		<link href="http://www.ironpython.info/index.php/XNA_Example_-_Luminance"/>
		<id>http://www.ironpython.info/index.php/XNA_Example_-_Luminance</id>
		<updated>2010-02-13T00:49:57+00:00</updated>
		<content type="html">&lt;p&gt;Jcao219: this is actually the conclusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/aa937791.aspx XNA] is is a set of tools with a managed runtime environment provided by Microsoft that facilitates computer game development and management.&lt;br /&gt;
&lt;br /&gt;
You should install [http://www.microsoft.com/downloads/details.aspx?FamilyID=53867a2a-e249-4560-8011-98eb3e799ef2 Microsoft XNA Framework Redistributable 3.1] first.  It is required for both developing and running XNA games.  [http://www.microsoft.com/downloads/details.aspx?FamilyId=2DA43D38-DB71-4C1B-BC6A-9B6652CD92A3&amp;amp;displaylang=en DirectX 9.0c] is also required.&lt;br /&gt;
&lt;br /&gt;
== Full Code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework')&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework.Game')&lt;br /&gt;
&lt;br /&gt;
from Microsoft.Xna.Framework import Game, GraphicsDeviceManager&lt;br /&gt;
from Microsoft.Xna.Framework.Graphics import Color&lt;br /&gt;
&lt;br /&gt;
from System import Math&lt;br /&gt;
&lt;br /&gt;
class LuminanceWindow(Game):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		self.initializeComponent()&lt;br /&gt;
&lt;br /&gt;
	def initializeComponent(self):&lt;br /&gt;
		self.Window.Title = &quot;XNA - Luminance&quot;&lt;br /&gt;
		self.graphics = GraphicsDeviceManager(self)&lt;br /&gt;
&lt;br /&gt;
	def LoadContent(self):&lt;br /&gt;
                #stuff to do when game starts goes here&lt;br /&gt;
                super(LuminanceWindow,self).LoadContent()&lt;br /&gt;
	def UnloadContent(self):&lt;br /&gt;
		#stuff to do when game closes goes here&lt;br /&gt;
		super(LuminanceWindow, self).UnloadContent()&lt;br /&gt;
	def Update(self, gameTime):&lt;br /&gt;
		super(LuminanceWindow, self).Update(gameTime)&lt;br /&gt;
	def Draw(self, gameTime):&lt;br /&gt;
		luminosity = (255.0/2.0)+Math.Sin(gameTime.TotalGameTime.Ticks/5000000.0)*(255.0/2.0)&lt;br /&gt;
		self.graphics.GraphicsDevice.Clear(Color(R=luminosity,G=luminosity,B=luminosity))&lt;br /&gt;
		&lt;br /&gt;
		super(LuminanceWindow, self).Draw(gameTime)&lt;br /&gt;
&lt;br /&gt;
game = LuminanceWindow()&lt;br /&gt;
game.Run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setting things up ===&lt;br /&gt;
Look into the first few lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework')&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework.Game')&lt;br /&gt;
&lt;br /&gt;
from Microsoft.Xna.Framework import Game, GraphicsDeviceManager&lt;br /&gt;
from Microsoft.Xna.Framework.Graphics import Color&lt;br /&gt;
&lt;br /&gt;
from System import Math&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
References are added to the assemblies Microsoft.Xna.Framework and Microsoft.Xna.Framework.Game.  Both are required in XNA.&lt;br /&gt;
We also import the required modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Namespaces in the Framework ====&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework'''&lt;br /&gt;
Contains commonly needed game classes such as timers and game loops.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Graphics'''&lt;br /&gt;
Contains API methods that use hardware to display graphics.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Content'''&lt;br /&gt;
Contains [http://msdn.microsoft.com/en-us/library/bb203887.aspx content pipeline] components.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Input'''&lt;br /&gt;
Allows games to receive input from the keyboard or mouse.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Audio'''&lt;br /&gt;
Contains API methods that allow playing or manipulating sounds.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Media'''&lt;br /&gt;
Allows games to view and play media files.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Net'''&lt;br /&gt;
Allows games to use networking and multiplayer.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Design'''&lt;br /&gt;
For the conversion of types.&lt;br /&gt;
&lt;br /&gt;
* '''Microsoft.Xna.Framework.Storage'''&lt;br /&gt;
File input and output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Class definition/init ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class LuminanceWindow(Game):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		self.initializeComponent()&lt;br /&gt;
&lt;br /&gt;
	def initializeComponent(self):&lt;br /&gt;
		self.Window.Title = &quot;XNA - Luminance&quot;&lt;br /&gt;
		self.graphics = GraphicsDeviceManager(self)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, we define a class LuminanceWindow, which will inherit from Game.&lt;br /&gt;
We initiate the game by setting the window title as &quot;XNA - Luminance&quot;,&lt;br /&gt;
and then initiating the GraphicsDeviceManager, which handles the graphics.&lt;br /&gt;
&lt;br /&gt;
=== Defining what LoadContent, Update, and UnloadContent do ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	def LoadContent(self):&lt;br /&gt;
                #stuff to do when game starts goes here&lt;br /&gt;
                super(LuminanceWindow,self).LoadContent()&lt;br /&gt;
	def UnloadContent(self):&lt;br /&gt;
		#stuff to do when game closes goes here&lt;br /&gt;
		super(LuminanceWindow, self).UnloadContent()&lt;br /&gt;
	def Update(self, gameTime):&lt;br /&gt;
		super(LuminanceWindow, self).Update(gameTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example, LoadContent, UnloadContent, and Update serve no purpose.  In fact, it would be better if those lines were simply deleted.&lt;br /&gt;
See [[XNA_Example_with_a_Bouncing_Sprite|this more complex example]], where LoadContent, UnloadContent, and Update are used. &lt;br /&gt;
&lt;br /&gt;
'''Note:''' In that example, ''UnloadGraphicsContent'' is used instead of ''UnloadContent'', and ''LoadGraphicsContent'' is used instead of ''LoadContent''.  '''Just use UnloadContent and LoadContent.'''  Also in that example, each component is manually Dispose()'d during UnloadGraphicsContent()'ing.  That is not needed anymore.&lt;br /&gt;
&lt;br /&gt;
==== Methods in Microsoft.Xna.Framework.Game ====&lt;br /&gt;
&lt;br /&gt;
Here are the important ones that we may override.&lt;br /&gt;
* '''LoadContent'''&lt;br /&gt;
Called ''once'' when the game is run.&lt;br /&gt;
This is before any game window is shown.&lt;br /&gt;
* '''Draw'''&lt;br /&gt;
Called many times a second, in order to draw a frame.&lt;br /&gt;
* '''Update'''&lt;br /&gt;
Like draw, also called many times a second, and it processes game logic.&lt;br /&gt;
* '''UnloadContent'''&lt;br /&gt;
Called ''once'' when the game is closing.&lt;br /&gt;
&lt;br /&gt;
=== Draw ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	def Draw(self, gameTime):&lt;br /&gt;
		luminosity = (255.0/2.0)+Math.Sin(gameTime.TotalGameTime.Ticks/5000000.0)*(255.0/2.0)&lt;br /&gt;
		self.graphics.GraphicsDevice.Clear(Color(R=luminosity,G=luminosity,B=luminosity))&lt;br /&gt;
		&lt;br /&gt;
		super(LuminanceWindow, self).Draw(gameTime)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is where things are actually done.&lt;br /&gt;
Start remembering what you learned in high school math now.&lt;br /&gt;
Here is a chart that you can examine in order to fully understand the mathematical expression.&lt;br /&gt;
&lt;br /&gt;
[[Image:Sine_Wave_For_Luminance.png|Visual representation of what's going on]]&lt;br /&gt;
&lt;br /&gt;
=== Running the Game ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
game = LuminanceWindow()&lt;br /&gt;
game.Run()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, we create an instance of the LuminanceWindow, and we call it's Run method.&lt;br /&gt;
When we create its instance, __init__ is called.&lt;br /&gt;
When it is run, LoadContent is first called.&lt;br /&gt;
Then Update and Draw are called continually until the game is closed, which is when UnloadContent is called.&lt;br /&gt;
&lt;br /&gt;
You may also call game.'''Exit()''', which is very useful.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
The full source code is full of unnecessary lines.&lt;br /&gt;
Now that the code and it's design has been sufficiently explained,&lt;br /&gt;
a more concise version can be written.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework')&lt;br /&gt;
clr.AddReference('Microsoft.Xna.Framework.Game')&lt;br /&gt;
&lt;br /&gt;
from Microsoft.Xna.Framework import Game, GraphicsDeviceManager&lt;br /&gt;
from Microsoft.Xna.Framework.Graphics import Color&lt;br /&gt;
&lt;br /&gt;
from System import Math&lt;br /&gt;
&lt;br /&gt;
class LuminanceWindow(Game):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		self.Window.Title = &quot;XNA - Luminance&quot;&lt;br /&gt;
		self.graphics = GraphicsDeviceManager(self)&lt;br /&gt;
	def Draw(self, gameTime):&lt;br /&gt;
		luminosity = (255.0/2.0)+Math.Sin(gameTime.TotalGameTime.Ticks/5000000.0)*(255.0/2.0)&lt;br /&gt;
		self.graphics.GraphicsDevice.Clear(Color(R=luminosity,G=luminosity,B=luminosity))&lt;br /&gt;
		super(LuminanceWindow, self).Draw(gameTime)&lt;br /&gt;
&lt;br /&gt;
LuminanceWindow().Run()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb203940.aspx XNA programming resource (MSDN)]&lt;br /&gt;
&lt;br /&gt;
Back to [[Contents]].&lt;/div&gt;</content>
		<author>
			<name>Jcao219</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Winter Olympics on Linux</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-11.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-11.html</id>
		<updated>2010-02-12T06:55:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://tirania.org/shots/1002110841WIcKKIwT.png&quot; /&gt;The &lt;b&gt;amazing&lt;/b&gt; Moonlight Team lead by Chris
	Toshok just
	released &lt;a href=&quot;http://www.go-mono.com/moonlight/prerelease.aspx&quot;&gt;Preview
	2 of Moonlight 3&lt;/a&gt; just in time for
	the &lt;a href=&quot;http://www.nbcolympics.com&quot;&gt;Winter Olympics'
	broadcast:&lt;/a&gt;

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002110832iydVVMtL.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;The player has some nice features like live streaming,
	Tivo-like &quot;jump-back&quot;, accelerated playback and slow motion
	and it does this
	using &lt;a href=&quot;http://www.iis.net/media/experiencesmoothstreaming&quot;&gt;Smooth
	Streaming&lt;/a&gt; which adjusts the quality of your video feed
	based on your bandwidth availability.

	&lt;/p&gt;&lt;p&gt;Thanks to Tom Taylor, Brian Goldfarb and the rest of the
	team at Microsoft for assisting us with test suites and early
	access to some of the technologies in use at
	&lt;a href=&quot;http://www.nbcolympics.com&quot;&gt;NBC Olympics&lt;/a&gt;.  With
	their help we were able to make sure that Moonlight 3 would
	work on time for the event (with full 24 hours and 14 minutes
	still to burn!).   

	&lt;/p&gt;&lt;p&gt;As usual, the team did a &lt;b&gt;great&lt;/b&gt; job, considering that
	we had to implement in record time plenty of Silverlight 3
	features for Moonlight.   

	&lt;/p&gt;&lt;li&gt;&lt;a href=&quot;http://www.mono-project.com/Moonlight/Preview#Preview_2&quot;&gt;Release
	notes for Preview 2&lt;/a&gt;
	
	&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.mono-project.com/Moonlight/OlympicsPlayerIssues&quot;&gt;List
	of Known Issues with the Olympics Player&lt;/a&gt;.

	&lt;p&gt;Firefox 3.7 runs this code better than 3.5, and you can
	improve the performance by disabling the pixel shaders in
	Moonlight, like this:

	&lt;/p&gt;&lt;pre&gt;
	MOONLIGHT_OVERRIDES=effects=no firefox
	&lt;/pre&gt;&lt;/li&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): XAML Crazy Windows</title>
		<link href="http://www.ironpython.info/index.php/XAML_Crazy_Windows"/>
		<id>http://www.ironpython.info/index.php/XAML_Crazy_Windows</id>
		<updated>2010-02-11T16:36:56+00:00</updated>
		<content type="html">&lt;p&gt;Lrhazi: Created page with 'This is a port of the code described in this page: [http://blogs.interknowlogy.com/johnbowen/archive/2007/06/20/20458.aspx Transparent Windows in WPF]  &amp;lt;pre&amp;gt; import clr clr.AddRe…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a port of the code described in this page: [http://blogs.interknowlogy.com/johnbowen/archive/2007/06/20/20458.aspx Transparent Windows in WPF]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference(&quot;System.Xml&quot;)&lt;br /&gt;
clr.AddReference(&quot;PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&quot;)&lt;br /&gt;
clr.AddReference(&quot;PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&quot;)&lt;br /&gt;
from System.IO import StringReader&lt;br /&gt;
from System.Xml import XmlReader&lt;br /&gt;
from System.Windows.Markup import XamlReader&lt;br /&gt;
from System.Windows import Window, Application&lt;br /&gt;
&lt;br /&gt;
xaml_str=&quot;&quot;&quot;&lt;br /&gt;
&amp;lt;Window xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;br /&gt;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;br /&gt;
    Title=&quot;A Crazy Window&quot; Height=&quot;300&quot; Width=&quot;300&quot;&lt;br /&gt;
    WindowStyle=&quot;None&quot; AllowsTransparency=&quot;True&quot;&lt;br /&gt;
    Background=&quot;{x:Null}&quot;&lt;br /&gt;
    &amp;gt;&lt;br /&gt;
    &amp;lt;Grid Name=&quot;gid&quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Viewbox Stretch=&quot;Uniform&quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Path Fill=&quot;#80D0E0FF&quot; Stroke=&quot;Red&quot; StrokeThickness=&quot;3&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot; &lt;br /&gt;
              Data=&quot;M79,3L65,82 17,91 50,138 96,157 104,192 175,154 190,167 218,78 156,76 157,9 111,39z&quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Viewbox&amp;gt;&lt;br /&gt;
      &amp;lt;TextBlock Text=&quot;{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=Title}&quot; &lt;br /&gt;
                 FontSize=&quot;18&quot; Background=&quot;Transparent&quot; HorizontalAlignment=&quot;Left&quot; VerticalAlignment=&quot;Top&quot; Margin=&quot;20&quot; &lt;br /&gt;
                  FontFamily=&quot;Impact&quot; Foreground=&quot;#C030A060&quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;TextBlock Text=&quot;Right Click Anywhere to Close&quot; Background=&quot;Black&quot; Width=&quot;200&quot; Foreground=&quot;White&quot; &lt;br /&gt;
                 VerticalAlignment=&quot;Center&quot; HorizontalAlignment=&quot;Center&quot; FontSize=&quot;14&quot; TextWrapping=&quot;Wrap&quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/Window&amp;gt;&lt;br /&gt;
&quot;&quot;&quot;&lt;br /&gt;
&lt;br /&gt;
if __name__ == &quot;__main__&quot;:&lt;br /&gt;
    xr = XmlReader.Create(StringReader(xaml_str))&lt;br /&gt;
    win = XamlReader.Load(xr)&lt;br /&gt;
    &lt;br /&gt;
    win.FindName('gid').MouseRightButtonDown+=lambda x,y: win.Close()&lt;br /&gt;
    win.FindName('gid').MouseLeftButtonDown+=lambda x,y: win.DragMove()&lt;br /&gt;
    &lt;br /&gt;
    Application().Run(win)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to [[Contents]].&lt;/div&gt;</content>
		<author>
			<name>Lrhazi</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Direct3D - Creating a Device with SlimDX</title>
		<link href="http://www.ironpython.info/index.php/Direct3D_-_Creating_a_Device_with_SlimDX"/>
		<id>http://www.ironpython.info/index.php/Direct3D_-_Creating_a_Device_with_SlimDX</id>
		<updated>2010-02-10T03:29:14+00:00</updated>
		<content type="html">&lt;p&gt;Jcao219: add a sentence, clarify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''What is SlimDX?'''&lt;br /&gt;
&lt;br /&gt;
Adapted from [http://slimdx.org/ the SlimDX main site]:&lt;br /&gt;
    SlimDX is a '''free open source framework''' that enables&lt;br /&gt;
    developers to easily build DirectX applications using&lt;br /&gt;
    .NET technologies such as C#, VB.NET, and ''IronPython''.&lt;br /&gt;
&lt;br /&gt;
     Originally, the managed game development niche was &lt;br /&gt;
     filled by Microsoft's Managed DirectX, &lt;br /&gt;
     ''which is now deprecated'' and no longer recommended!&lt;br /&gt;
&lt;br /&gt;
    In it's wake, SlimDX has stepped up to provide support&lt;br /&gt;
    in a way that is very similar to the original MDX libraries.&lt;br /&gt;
    While similar, however, they are not intended to be the same APIs.&lt;br /&gt;
    SlimDX exposes a broader range of technologies,&lt;br /&gt;
    has a core design that improves upon that provided by MDX,&lt;br /&gt;
    and is more in-tune with managed methodologies&lt;br /&gt;
    since the advent of .NET 2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Direct3d-SlimDX-createdevice.jpg|200px|No, it doesn't move, and it isn't animated. Amazing!]]&lt;br /&gt;
&lt;br /&gt;
'''You must first install SlimDX SDK!'''&lt;br /&gt;
[http://slimdx.org/download.php Get it here.]&lt;br /&gt;
&lt;br /&gt;
This example creates a Direct3D device using SlimDX.&lt;br /&gt;
I've added many comments that should help.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference('System.Windows.Forms')&lt;br /&gt;
clr.AddReference('System.Drawing')&lt;br /&gt;
clr.AddReference('SlimDX')&lt;br /&gt;
&lt;br /&gt;
import System.Drawing&lt;br /&gt;
import System.Windows.Forms&lt;br /&gt;
&lt;br /&gt;
from System.Drawing import *&lt;br /&gt;
from System.Windows.Forms import *&lt;br /&gt;
&lt;br /&gt;
from SlimDX.Direct3D9 import *&lt;br /&gt;
&lt;br /&gt;
class MainForm(Form):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		self.InitializeComponent()&lt;br /&gt;
		self.InitGraphics()&lt;br /&gt;
		self.Paint += lambda *_:self.PaintStuff()&lt;br /&gt;
	&lt;br /&gt;
	def InitializeComponent(self):#this thing is required in SharpDevelop&lt;br /&gt;
		self.SuspendLayout()&lt;br /&gt;
		# &lt;br /&gt;
		# MainForm&lt;br /&gt;
		# &lt;br /&gt;
		self.ClientSize = System.Drawing.Size(537, 403)&lt;br /&gt;
		self.Name = &quot;MainForm&quot;&lt;br /&gt;
		self.Text = &quot;Direct3D9FirstProgram&quot;&lt;br /&gt;
		self.ResumeLayout(False)&lt;br /&gt;
	def InitGraphics(self):&lt;br /&gt;
		present_params = PresentParameters()#PresentParams for device creation below&lt;br /&gt;
   		present_params.Windowed = True#not full screen&lt;br /&gt;
   		present_params.SwapEffect = SwapEffect.Discard#dunno what it means, but it's important!&lt;br /&gt;
   		&lt;br /&gt;
   		#Important Declaration Syntax (from SlimDX doc) - &lt;br /&gt;
   		&lt;br /&gt;
   					#public Device(&lt;br /&gt;
					#	Direct3D direct3D,&lt;br /&gt;
					#	int adapter,&lt;br /&gt;
					#	DeviceType deviceType,&lt;br /&gt;
					#	IntPtr controlHandle,&lt;br /&gt;
					#	CreateFlags createFlags,&lt;br /&gt;
					#	params PresentParameters[] presentParameters&lt;br /&gt;
					#)&lt;br /&gt;
					&lt;br /&gt;
		self.Device = Device(Direct3D(),  #I am unsure why this is needed as a param&lt;br /&gt;
							0,  #ordinal number that represents the adapter&lt;br /&gt;
							DeviceType.Hardware,  #Hardware device type&lt;br /&gt;
							self.Handle,  #the handle of the form&lt;br /&gt;
							CreateFlags.SoftwareVertexProcessing,  #device creation option&lt;br /&gt;
							present_params)&lt;br /&gt;
&lt;br /&gt;
	def PaintStuff(self):&lt;br /&gt;
		#Hopefully this documentary will make the code below understandable:&lt;br /&gt;
			#public Result Clear(					&lt;br /&gt;
			#		ClearFlags clearFlags,&lt;br /&gt;
			#		int color,&lt;br /&gt;
			#		float zdepth,&lt;br /&gt;
			#		int stencil&lt;br /&gt;
			#)&lt;br /&gt;
			#&lt;br /&gt;
			#public Result Present()&lt;br /&gt;
&lt;br /&gt;
		self.Device.Clear(ClearFlags.Target,&lt;br /&gt;
						Color.Blue.ToArgb(),&lt;br /&gt;
						1,&lt;br /&gt;
						0)&lt;br /&gt;
		self.Device.Present()&lt;br /&gt;
&lt;br /&gt;
Application.EnableVisualStyles()&lt;br /&gt;
form = MainForm()&lt;br /&gt;
Application.Run(form)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way, that code above is originally from [http://gregs-blog.com/2008/02/26/managed-directx-c-graphics-tutorial-1-getting-started/ here] but it has been translated from C# and edited heavily, also.&lt;br /&gt;
It has also been adapted to SlimDX, as the original code is for Microsoft's Managed DirectX.&lt;br /&gt;
Tthe code above may be imperfect here and there.&lt;br /&gt;
Feel free to carefully make it better.&lt;br /&gt;
&lt;br /&gt;
You can use the SlimDX documentation to help you.&lt;br /&gt;
It is included in the SDK download of SlimDX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:slimDX_documentation.jpg]]&lt;br /&gt;
&lt;br /&gt;
Please note that the picture's effects above may be a slight exaggeration of reality.&lt;br /&gt;
&lt;br /&gt;
Back to [[Contents]].&lt;/div&gt;</content>
		<author>
			<name>Jcao219</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Little Bit of Python Episode 4: A Pre-PyCon Special</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/haqRGUvJPHo/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/haqRGUvJPHo/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-08T00:13:48+00:00</updated>
		<content type="html">A Little Bit of Python is an occasional podcast on Python related topics with myself, Brett Cannon, Jesse Noller, Steve Holden and Andrew Kuchling. The website is in progress and apparently nearly ready, thanks to Jesse and various other people who we will thank as soon as it is done. ... [233 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=haqRGUvJPHo:ndLyoYShnt0:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=haqRGUvJPHo:ndLyoYShnt0:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/haqRGUvJPHo&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: ConfigObj 4.7.1 (and how to test warnings)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/PnQC1BTECdQ/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/PnQC1BTECdQ/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-07T23:52:41+00:00</updated>
		<content type="html">I hate doing releases. I haven't managed to automate the whole process (I should probably work on that), although setup.py sdist upload certainly helps. ... [290 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=PnQC1BTECdQ:xn9nyhK9vdM:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=PnQC1BTECdQ:xn9nyhK9vdM:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/PnQC1BTECdQ&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Discover 0.3.2 and the load_tests protocol</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/DsxgXf9syDo/arch_d7_2010_02_06.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/DsxgXf9syDo/arch_d7_2010_02_06.shtml</id>
		<updated>2010-02-07T23:25:47+00:00</updated>
		<content type="html">discover is a test discovery module for the standard library unittest test framework. Test discovery is built into unittest in Python 2.7 and 3.2. ... [335 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=DsxgXf9syDo:gsXaetyeZ-k:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=DsxgXf9syDo:gsXaetyeZ-k:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/DsxgXf9syDo&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): Running the Django Test Suite On IronPython</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/pSJ4vEiB82E/running-django-test-suite-on-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-3230898833019301203</id>
		<updated>2010-02-06T08:42:43+00:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; &lt;a href=&quot;http://bitbucket.org/jdhardy/django-ironpython/wiki/Run_the_Test_Suite&quot;&gt;A simpler version of these instructions&lt;/a&gt; is available on the &lt;tt&gt;django-ironpython&lt;/tt&gt; Bitbucket page.&lt;/p&gt;&lt;p&gt;This guide will explain how to setup and attempt to run the Django test suite on IronPython. Once the test suite runs, it should be much easier to fill in the parts of Django that don't work properly.&lt;/p&gt;&lt;h4&gt;What You'll Need&lt;/h4&gt;&lt;p&gt;It's not terribly difficult to set this up, but there are quite a few pieces.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&quot;&gt;IronPython 2.6&lt;/a&gt; – use the installer so that you get the standard library as well. &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.djangoproject.com/download/&quot;&gt;Django trunk&lt;/a&gt; – an SVN checkout for now; if you have Mercurial, you can get it from &lt;a href=&quot;http://bitbucket.org/jdhardy/django-ironpython/&quot;&gt;django-ironpython&lt;/a&gt;.  Following the hg repo will get you my IronPython fixes. &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bitbucket.org/jdhardy/adonet-dbapi/&quot;&gt;adonet-dbapi&lt;/a&gt; – For the sqlite3 module implementation – MS SQL is a future target, but not right now (use the &quot;get source&quot; link if you don't have hg installed). &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/sqlite-dotnet2/files/&quot;&gt;System.Data.SQLite&lt;/a&gt; – used by the sqlite3 module (just download the binary zip; no need to install) &lt;/li&gt;
&lt;li&gt;1 cup flour… &lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;Getting Started&lt;/h4&gt;&lt;p&gt;First up, install IronPython and checkout the Django trunk and adonet-dbapi somewhere. I'll use &lt;tt&gt;%USERPROFILE%\Documents\Repositories\django\&lt;/tt&gt; and &lt;tt&gt;%USERPROFILE%\Documents\Repositories\adonet-dbapi\&lt;/tt&gt; in these examples. Next, create a &quot;DLLs&quot; folder in the IronPython install folder and drop System.Data.SQLite.dll into it (this way IronPython will automatically reference it).&lt;/p&gt;&lt;p&gt;The next step is to prepare the Django test suite. This requires you to create a small Django app that contains things like database settings. The full instructions can be found &lt;a href=&quot;http://lazypython.blogspot.com/2008/11/running-django-test-suite.html&quot;&gt;on Alex Gaynor's blog&lt;/a&gt;, or you can &lt;a href=&quot;http://bitbucket.org/jdhardy/django-ironpython/downloads/?highlight=4776&quot;&gt;download it&lt;/a&gt; and unzip it (I'll assume &lt;tt&gt;%USERPROFILE%\Documents\Repositories\django-test\&lt;/tt&gt;).&lt;/p&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;Running the Tests&lt;/h4&gt;&lt;p&gt;OK, command prompt time – if you're not comfortable with the command prompt, this won't be for you.&lt;/p&gt;&lt;pre class=&quot;cmd&quot; name=&quot;code&quot;&gt;set PATH=%PATH%;C:\Program Files (x86)\IronPython 2.6
set IRONPYTHONPATH=%USERPROFILE%\Documents\Repositories\django\;%USERPROFILE%\Documents\Repositories\adonet-dbapi\abapi;%USERPROFILE%\Documents\Repositories\django-test\
set DJANGO_SETTINGS_MODULE=django_test.settings&lt;/pre&gt;&lt;p&gt;Now, make sure you're in the django directory and run the test cases:&lt;/p&gt;&lt;pre class=&quot;cmd&quot; name=&quot;code&quot;&gt;cd %USERPROFILE%\Documents\Repositories\django\
ipy tests\runtests.py -v 1&lt;/pre&gt;&lt;p&gt;So far, so good.&lt;/p&gt;&lt;h4&gt;The Problems&lt;/h4&gt;&lt;p&gt;It'll bomb immediately on an assertion failure. Django does not like the fact that on IronPython str == unicode and thus their lazy evaluation doesn't work immediately (see &lt;a href=&quot;http://bitbucket.org/jdhardy/django-ironpython/issue/1/assertionerror-cannot-call-lazy-with-both-str-and-unicode-return-types-on&quot;&gt;issue #1&lt;/a&gt; for details). Comment out that assertion, and it fails again – and I haven't fixed this one yet. Stay tuned.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-3230898833019301203?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/pSJ4vEiB82E&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Dave Fugate (Testing IronPython): Poor Man's PowerShell Linecount Tool</title>
		<link href="http://knowbody.livejournal.com/20579.html"/>
		<id>http://knowbody.livejournal.com/20579.html</id>
		<updated>2010-02-04T20:11:32+00:00</updated>
		<content type="html">&lt;p&gt;&lt;span style=&quot;font-size: larger;&quot;&gt;This obviously doesn't account for empty lines, comments, etc., but it works:)&lt;br /&gt;&lt;br /&gt;function get-numlines($filter) {&lt;br /&gt;    $num_lines = 0&lt;br /&gt;    ls -recurse -filter $filter |% {gc $_.FullName | measure-object} | % {$num_lines+=$_.Count}&lt;br /&gt;    return $num_lines&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: larger;&quot;&gt;get-numlines *.py&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;</content>
		<author>
			<name>Dave Fugate (Testing IronPython)</name>
			<uri>http://knowbody.livejournal.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: Debugging ASP.NET generated code</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2010/02/03/debugging-asp-net-generated-code.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7333508</id>
		<updated>2010-02-04T00:31:16+00:00</updated>
		<content type="html">This post applies to any ASP.NET app that uses .aspx files, whether WebForms or MVC. When you write an aspx/ascx/master file (I’ll just say aspx for here on, but it applies to all), it gets compiled dynamically by the ASP.NET runtime.  Note that this is true whether you use a Web Site or a Web Application Project (WAP).  While in a WAP, most of the code is built by Visual Studio, the aspx pages themselves are always built dynamically . Normally, when you work with aspx files, you only need to worry about what you write in there, and the specifics of what ASP.NET generates under the cover are somewhat of an implementation details.  However, in some cases it’s pretty useful to look at the generated code, either to learn exactly...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2010/02/03/debugging-asp-net-generated-code.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7333508&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Moonlight 3.0 Preview 1</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-03.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-03.html</id>
		<updated>2010-02-03T21:18:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://tirania.org/shots/091216105809ogrOjh.png&quot; width=&quot;320&quot; /&gt;We have just released
	our &lt;a href=&quot;http://go-mono.com/moonlight/prerelease.aspx&quot;&gt;first
	preview of Moonlight 3.0&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;This release contains many updates to our 3.0 support,
	mostly on the infrastructure level necessary to support the
	rest of the features.

	&lt;/p&gt;&lt;p&gt;In the release:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;MP4 demuxer support.   The demuxer is in place but
		there are no codecs for it yet (unless you build from
		source code and configure Moonlight to pick up the
		codecs from ffmpeg).

		&lt;/li&gt;&lt;li&gt;Initial work on UI Virtualization.

		&lt;/li&gt;&lt;li&gt;Platform Abstraction Layer: the Moonlight core is
		now separated from the windowing system engine.   This
		should make it possible for developers to port
		Moonligh to other windowing/graphics systems that are
		not X11/Gtk+ centric.

		&lt;/li&gt;&lt;li&gt;The new
		3.0 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc189022(VS.95).aspx&quot;&gt;Binding/BindingExpression&lt;/a&gt;
		support is in.
		
		&lt;/li&gt;&lt;li&gt;Many updates to the 3.0 APIs
	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;The above is in addition to some of the Silverlight
	3.0 &lt;a href=&quot;http://tirania.org/blog/archive/2009/Dec-17.html&quot;&gt;features
	that we shipped with Moonlight 2.0&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;For the adventurous among you, our SVN version of Moonlight
	contains David Reveman's pixel shader support:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1002031057QyMmY5BV.png&quot; /&gt;
	&lt;p&gt;
	From &lt;a href=&quot;http://tirania.org/blog/href&quot;&gt;Silverlight
	Parametric Pixel Shader&lt;/a&gt;.
	&lt;/p&gt;&lt;/center&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Mono at FOSDEM</title>
		<link href="http://tirania.org/blog/archive/2010/Feb-02.html"/>
		<id>http://tirania.org/blog/archive/2010/Feb-02.html</id>
		<updated>2010-02-03T04:59:00+00:00</updated>
		<content type="html">&lt;p&gt;I will be arriving in Brussels on Saturday Morning for the
	FOSDEM conference.  We have
	an &lt;a href=&quot;http://fosdem.org/2010/schedule/devrooms/mono&quot;&gt;activity-packed
	day&lt;/a&gt; on Sunday of all-things-mono.

	&lt;/p&gt;&lt;p&gt;This is the current schedule, pretty awesome!

&lt;/p&gt;&lt;div class=&quot;section&quot; id=&quot;track&quot;&gt; 
 &lt;table class=&quot;track-index&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th class=&quot;event-time&quot;&gt;When&lt;/th&gt; 
    &lt;th class=&quot;event&quot;&gt;Event&lt;/th&gt; 
    &lt;th class=&quot;speaker&quot;&gt;Speaker&lt;/th&gt; 
    &lt;th class=&quot;event-media&quot;&gt;Media&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td class=&quot;schedule-day&quot; colspan=&quot;3&quot;&gt;Sunday 2010-02-07&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 09:00-09:15    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_opening&quot;&gt;Opening&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/stephane+delcroix&quot;&gt;Stéphane Delcroix&lt;/a&gt;, &lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/ruben+vermeersch&quot;&gt;Ruben Vermeersch&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 09:15-10:00    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_develop&quot;&gt;MonoDevelop&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/lluis+sanchez+gual&quot;&gt;Lluis Sanchez Gual&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 10:00-11:00    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_ruby&quot;&gt;The Ruby and .NET love child&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/ivan+porto+carrero&quot;&gt;Ivan Porto Carrero&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 11:00-12:00    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_edge&quot;&gt;Mono Edge&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/miguel+de+icaza&quot;&gt;Miguel de Icaza&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 12:45-13:15    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_monotorrent&quot;&gt;The evolution of MonoTorrent&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/alan+mcgovern&quot;&gt;Alan McGovern&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 13:15-13:45    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_simd&quot;&gt;Image processing with Mono.Simd&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/stephane+delcroix&quot;&gt;Stéphane Delcroix&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 13:45-14:15    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_parallelfx&quot;&gt;ParallelFx, bringing Mono applications in the multicore era&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/jeremie+laval&quot;&gt;Jérémie Laval&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 14:30-15:30    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_second_life&quot;&gt;Building The Virtual Babel: Mono In Second Life&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/jim+purbrick&quot;&gt;Jim Purbrick&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 15:30-16:00    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_moonlight&quot;&gt;Moonlight and you&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/andreia+gaita&quot;&gt;Andreia Gaita&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 16:00-16:30    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_osctool&quot;&gt;OSCTool - learning C# and Mono by doing&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/jo+shields&quot;&gt;Jo Shields&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;even&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 16:30-16:45    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_smuxi&quot;&gt;Smuxi - IRC in a modern environment&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/mirco+bauer&quot;&gt;Mirco Bauer&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr class=&quot;odd&quot;&gt; 
    &lt;td class=&quot;event-timespec&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/day/sunday&quot;&gt;Sun&lt;/a&gt; 
 16:45-17:00    &lt;/td&gt; 
    &lt;td class=&quot;event&quot;&gt; 
     &lt;a href=&quot;http://fosdem.org/2010/schedule/events/mono_closing&quot;&gt;Closing&lt;/a&gt; 
    &lt;/td&gt; 
    &lt;td class=&quot;speaker devroomtrack-speaker&quot;&gt; 
&lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/stephane+delcroix&quot;&gt;Stéphane Delcroix&lt;/a&gt;, &lt;a href=&quot;http://fosdem.org/2010/schedule/speakers/ruben+vermeersch&quot;&gt;Ruben Vermeersch&lt;/a&gt;    &lt;/td&gt; 
    &lt;td class=&quot;event-media&quot;&gt; 
    &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/div&gt;

	&lt;p&gt;&lt;b&gt;Feedback requested:&lt;/b&gt; My plan is to do a
	state-of-the-union kind of presentation on Mono, but if you
	have a specific topic that you would like me to present on,
	please leave a comment, I will try to prepare for that.

	&lt;/p&gt;&lt;p&gt;See you in Brussels!&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Interview with Pardus Linux</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/V0hUHx2WObw/arch_d7_2010_01_30.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/V0hUHx2WObw/arch_d7_2010_01_30.shtml</id>
		<updated>2010-02-02T10:28:52+00:00</updated>
		<content type="html">I recently did an interview on Python with the Pardus Linux magazine. Pardus Linux is a distribution developed in Turkey (by the Turkish National Research Institute of Electronics and Cryptology) with the goal of being usable by &quot;normal&quot; people rather than just geeks. ... [3716 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=V0hUHx2WObw:mxAxteqQU2A:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=V0hUHx2WObw:mxAxteqQU2A:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/V0hUHx2WObw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): Debugging Techniques for IronPython: Breakpoints</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/2Jceo_oD8dc/debugging-techniques-for-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-542427352977643030</id>
		<updated>2010-01-31T22:02:38+00:00</updated>
		<content type="html">&lt;p&gt;Currently, programs IronPython is not particularly easy to debug – they Python code gets mixed in with the code for IronPython itself and can be hard to follow. This is the first of a few tricks to make debugging easier.&lt;/p&gt;  &lt;h4&gt;Trigger a Breakpoint&lt;/h4&gt;  &lt;p&gt;This is my favourite and most used technique – I sometimes wish Python had the equivalent of JavaScript's &lt;tt&gt;debugger&lt;/tt&gt; keyword to make it easier to use. The trick is to use the &lt;tt&gt;System.Diagnostics.Debugger.Break()&lt;/tt&gt; function to insert a breakpoint in your code – when the breakpoint is hit, Windows will offer to launch a debugger for you. Also make sure that you launch IronPython with the &lt;tt&gt;–X:Debug&lt;/tt&gt; switch, or it will be next to impossible to debug.&lt;/p&gt;  &lt;p&gt;Insert the following line where you want to trigger the breakpoint:&lt;/p&gt;  &lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;import System.Diagnostics; System.Diagnostics.Debugger.Break()&lt;/pre&gt;

&lt;p&gt;Windows will then open the following dialog (if you have Visual Studio installed; I don't have a machine without VS to see what it looks like otherwise):&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;vsjitbdgr&quot; border=&quot;0&quot; height=&quot;447&quot; src=&quot;http://lh5.ggpht.com/_RAOuCQw0XUY/S2X5oq_NjBI/AAAAAAAAADA/YWQVgvNRS4s/vsjitbdgr%5B6%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;vsjitbdgr&quot; width=&quot;412&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I prefer to use VS for debugging, so I'll open a  new instance of Visual Studio 2008.&lt;/p&gt;

&lt;h4&gt;&lt;/h4&gt;

&lt;h4&gt;Browsing the Call Stack&lt;/h4&gt;

&lt;p&gt;Now, we'll need to go looking for the actual Python code in the call stack. Open the call stack browser, and you'll see something like this:&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;dbgrbrk&quot; border=&quot;0&quot; height=&quot;199&quot; src=&quot;http://lh6.ggpht.com/_RAOuCQw0XUY/S2X5o0phnII/AAAAAAAAADE/jjdT9-4DLQs/dbgrbrk%5B7%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;dbgrbrk&quot; width=&quot;633&quot; /&gt; &lt;/p&gt;

&lt;p&gt;There are a few things to note here, especially if you're not familiar with the VS debugger:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Each line represents a call stack frame (a function call, basically). &lt;/li&gt;

  &lt;li&gt;The yellow arrow is the current execution location; this is our breakpoint. &lt;/li&gt;

  &lt;li&gt;Faded-out lines are frames that do not have any debug information available. They can be ignored. &lt;/li&gt;

  &lt;li&gt;Lines beginning with &quot;Snippets.debug&quot; are the actual Python stack frames we are looking for. Double click on those lines to open up the source for those files in the Visual Studio editor. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the Python source is loaded in the editor, you can inspect variable values by hovering over them with the mouse, just like in any other Visual Studio language. To find the calling stack frame, you'll have to skip over several IronPython frames to find the next Python frame.&lt;/p&gt;

&lt;p&gt;A better experience would elide the IronPython frames; perhaps Harry Pierson's &lt;a href=&quot;http://devhawk.net/2009/10/06/Lightweight+Debugging+For+Hybrid+CIronPython+Apps.aspx&quot;&gt;debugger work&lt;/a&gt; could be applied to improve it. That, and other Visual Studio improvements for IronPython, are &lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/&quot;&gt;another project entirely&lt;/a&gt;.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-542427352977643030?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/2Jceo_oD8dc&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Little Bit of Python Episode 3</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/ee0vjKVUcqA/arch_d7_2010_01_30.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/ee0vjKVUcqA/arch_d7_2010_01_30.shtml</id>
		<updated>2010-01-30T21:00:06+00:00</updated>
		<content type="html">A Little Bit of Python is an occasional podcast on Python related topics with myself, Brett Cannon, Jesse Noller, Steve Holden and Andrew Kuchling. We still don't have our own website although that is due to land any day now. ... [172 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=ee0vjKVUcqA:wMTde1ykrWQ:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=ee0vjKVUcqA:wMTde1ykrWQ:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/ee0vjKVUcqA&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: iPad - Inspirational Hardware</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-29.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-29.html</id>
		<updated>2010-01-29T11:05:00+00:00</updated>
		<content type="html">&lt;p&gt;iPad - Inspirational Hardware

	&lt;/p&gt;&lt;p&gt;As a software developer, I find the iPad inspirational.

	&lt;/p&gt;&lt;p&gt;Apple's iPad is not a new idea.   They are not the first ones
	to think of a tablet and as many blogs have pointed out the
	Apple iPad is not everyone's dream machine, the hardware is
	lacking gadgets and the software is not that amazing.

	&lt;/p&gt;&lt;p&gt;Five elements come together to revolutionize software:

	&lt;/p&gt;&lt;ol&gt;
	&lt;li&gt;Price
	&lt;/li&gt;&lt;li&gt;Multi-touch centric development
	&lt;/li&gt;&lt;li&gt;Standard hardware available for consumers
	&lt;/li&gt;&lt;li&gt;Apple's AppStore
	&lt;/li&gt;&lt;li&gt;Large form factor.
	&lt;/li&gt;&lt;/ol&gt;

	&lt;p&gt;The iPhoneOS is a multi-touch centric operating system.   For
	years application developers have been subjected to the
	tyranny of the mouse and keyboard.   This has been the only
	input technology that developers could reliably depend on and
	expect to be available on the user's system.   Any software
	that requires different input mechanism sees its potential
	market reduced.

	&lt;/p&gt;&lt;p&gt;The mouse is a great device for certain class of desktop
	applications.   But it has also led to applications that are
	incredibly frustrating to use.   Software for editing music
	and audio is cumbersome.   Find the target, drag it, move it,
	find the other button, click it, scroll, drag, click.
	Anyone that has used Garage Band to try to play along knows
	this.   The same applies to software to paint or draw.   The
	mouse and keyboard are poor substitutes for using your hands.

	&lt;/p&gt;&lt;p&gt;On the iPhone, and now the iPad, the situation is reversed.
	Multi-touch is the only input mechanism that developers can
	depend on.  Apple's iPhone helped create a community of
	developers that think in terms of taps, pinches and twirls
	instead of clicks, double-clicks and right-clicks.  It is no
	longer an after thought.   It is no longer a feature that is
	added if there is enough time in the schedule or enough
	budget.   It is the only option available.

	&lt;/p&gt;&lt;p&gt;Taps, pinches and twirls allow us to use the full expression
	of our hands to drive an application.   And it is not just any
	multi-touch, it is multi-touch over the same surface where the
	application is providing feedback to the user.  Software that
	respond to user input in the same way that a physical object
	responds to our physical contact is the key to create new user
	experiences.

	&lt;/p&gt;&lt;p&gt;This is a whole new space in which we can research, a new
	space that we can explore and where we can create a whole new
	class of computer/user interactions.   With the new form
	factor, we can now create applications that just made no sense
	on the iPhone.

	&lt;/p&gt;&lt;p&gt;It is fascinating.

	&lt;/p&gt;&lt;p&gt;The standardized hardware means that software developers do
	not have face testing their software with dozens of
	combinatorial options.   There are only a handful types of
	systems.  If the software works on the core systems, they will
	work on all consumer devices.   Standardized hardware is at
	the core of the success of the console gaming market,
	developers test and develop against a uniform platform.
	Price is the cherry on top of the cake, this device will be
	mass produced and the affordable price means that it will have
	a deep reach.

	&lt;/p&gt;&lt;p&gt;The possibilities for new computer/user interactions are no
	longer dampened by this market reality.   As developers, a new
	door to invention and innovation has been opened for us.  No
	longer will software developers have to cripple their user
	experiences based on the mouse and keyboard.

	&lt;/p&gt;&lt;p&gt;For the past couple of years I have had some ideas for some
	software that I wanted to build on a touch-based computer, but
	the specter of having a small user base for my experiments
	always discouraged me.  Ever since I heard the rumors about
	Apple producing a tablet computer I have not cared about what
	the device looked like, or what the software stack for it was
	going to be.  I wanted to try new touch-based UI ideas, I have
	dozens of ideas that I want to try out.  And with Mono, I get
	to do it in my favorite language.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: iPad Support for MonoTouch!</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-28-1.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-28-1.html</id>
		<updated>2010-01-29T02:56:00+00:00</updated>
		<content type="html">&lt;center&gt;
	&lt;img alt=&quot;We did it!   MonoTouch for iPad!&quot; src=&quot;http://tirania.org/shots/1001280456kpa9ZI9u.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;24 hours after we got the iPad SDK we completed the support
	for the iPad for MonoTouch!

	&lt;/p&gt;&lt;p&gt;To get started with iPad development, go to 
	&lt;a href=&quot;http://monotouch.net/iPad&quot;&gt;http://monotouch.net/iPad&lt;/a&gt;
	and follow the instructions.

	&lt;/p&gt;&lt;p&gt;Let the iPad# hacking begin!&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Release-o-Rama</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-28.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-28.html</id>
		<updated>2010-01-29T02:23:00+00:00</updated>
		<content type="html">&lt;p&gt;Nice new releases of software that I use in the last few
	days.

&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;a href=&quot;http://tirania.org/blog/pic.php?name=banshee-1.5.3-goodlies.png&amp;amp;caption= Banshee 1.5&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://primates.ximian.com/~miguel/pictures/small-banshee-1.5.3-goodlies.png&quot; /&gt;&lt;/a&gt;&lt;p&gt; Banshee 1.5&lt;/p&gt;&lt;/center&gt;
	&lt;p&gt;A
	new &lt;a href=&quot;http://abock.org/2010/01/27/banshee-1-5-3-and-the-return-of-os-x-support&quot;&gt;Banshee&lt;/a&gt;
	release, now supports new device syncing options, audiobooks,
	eMusic and GIO for non-local files.   Gabriel has
	more &lt;a href=&quot;http://gburt.blogspot.com/2010/01/banshee-153.html&quot;&gt;details&lt;/a&gt;
	as well.


	&lt;/p&gt;&lt;p&gt;Now with a fully self-contained Mono and Gtk+ stacks on
	OSX.  On the OSX note, I recommend Michael Hutchinson's blog
	entries on how
	to &lt;a href=&quot;http://mjhutchinson.com/journal/2010/01/24/creating_mac_app_bundle_for_gtk_app&quot;&gt;package
	your Gtk# app&lt;/a&gt; for use in OSX as well as his article on how
	to &lt;a href=&quot;http://mjhutchinson.com/journal/2010/01/25/integrating_gtk_application_mac&quot;&gt;make
	your Gtk# app integrate with OSX&lt;/a&gt;.   Both based on the
	lessons of bringing MonoDevelop and MonoDoc to OSX.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Jeroen
	Frijters&lt;/b&gt; &lt;a href=&quot;http://weblog.ikvm.net/PermaLink.aspx?guid=d0dc2476-471b-45f3-96bf-a90bc2f5800b&quot;&gt;released
	his IKVM.Reflection&lt;/a&gt; API.   His API could be very useful
	for Reflection-Emit compiler writers, perhaps we could even
	use it in Mono's C# compiler to solve our long standing issues
	with Reflection.   More research is needed on this area.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href=&quot;http://twitter.com/mauritsrijk&quot;&gt;Maurits
	Rijk&lt;/a&gt;&lt;/b&gt; has published a new version
	of &lt;a href=&quot;http://sourceforge.net/projects/gimp-sharp/&quot;&gt;GIMP#&lt;/a&gt;
	his Mono-based plugin engine that lets you write plugins in
	any Mono supported language.   There are samples in C# 3, F#,
	Boo, Nemerle, Oxygene, IronPython, Java/IKVM and Visual Basic.


	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://primates.ximian.com/~miguel/pictures/tomboy-jump-lists.png&quot; /&gt;
	&lt;/center&gt;
	
	&lt;p&gt;&lt;a href=&quot;http://automorphic.blogspot.com/&quot;&gt;Sandy&lt;/a&gt; &lt;a href=&quot;http://automorphic.blogspot.com/2010/01/tomboy-111-released-tomboy-online-plans.html&quot;&gt;released
	a new version of Tomboy&lt;/a&gt;, now supports exporting data in
	HTML format to the clipboard and jump Lists on Windows 7.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): LINQ Support for IronPython</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/9sTUC2MD0W8/linq-support-for-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-4713506012823596341</id>
		<updated>2010-01-28T15:00:03+00:00</updated>
		<content type="html">&lt;p&gt;This is a collection of thoughts and a summary of &lt;a href=&quot;http://lists.ironpython.com/pipermail/users-ironpython.com/2009-December/011856.html&quot;&gt;a mailing list conversation&lt;/a&gt; about LINQ support in IronPython. The IronPython team (which seems to be just Dino &amp;amp; Dave at this point) seemed receptive to the idea; it's just a matter of resources. Therefore, please vote on the linked issues so that they can get their priorities straight.&lt;/p&gt;  &lt;p&gt;There are two key parts to LINQ support: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb383977.aspx&quot;&gt;extension methods&lt;/a&gt; and &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb882636.aspx&quot;&gt;expression trees&lt;/a&gt;. Each is useful on its own, but both are required to really take advantage of LINQ.&lt;/p&gt;  &lt;h4&gt;Extensions Methods&lt;/h4&gt;  &lt;p&gt;An extension method is a way of adding a function to a class without editing the class, or providing a default implementation for a class implementing an interface. LINQ is almost entirely composed of extension methods on the IEnumerable&amp;lt;T&amp;gt; and IQueryable&amp;lt;T&amp;gt;interfaces, so supporting them in IronPython is critical to supporting LINQ and many other interfaces. In this case I'm only talking about IronPython being able to &lt;em&gt;c0nsume&lt;/em&gt; extension methods, not create them.&lt;/p&gt;  &lt;p&gt;In C#, an extension method is made available by a &lt;tt&gt;using&lt;/tt&gt; directive for the namespace containing a static class that contains the method. For example, the &lt;tt&gt;Enumerable&lt;/tt&gt; class is in the namespace &lt;tt&gt;System.Linq&lt;/tt&gt; and contains about half of LINQ's extension methods. To use this class from C# requires only:&lt;/p&gt;  &lt;pre class=&quot;c#&quot; name=&quot;code&quot;&gt;using System.Linq;&lt;/pre&gt;

&lt;p&gt;The Python equivalent of this would be:&lt;/p&gt;

&lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;from System.Linq import *&lt;/pre&gt;

&lt;p&gt;Now, this style is frowned upon in Python circles because it pollutes the namespace unnecessarily. A more Pythonic equivalent would be:&lt;/p&gt;

&lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;from System.Linq import Enumerable&lt;/pre&gt;

&lt;p&gt; When doing an import, IronPython would have to check if &lt;tt&gt;Enumerable&lt;/tt&gt; contains any static methods marked with &lt;tt&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.extensionattribute.aspx&quot;&gt;ExtensionAttribute&lt;/a&gt;&lt;/tt&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.extensionattribute.aspx&quot;&gt;&lt;/a&gt; and add them to the list of possible methods to resolve for the applicable type. I actually tried to implement this at one point, but haven't had the time to finish it up.&lt;/p&gt;

&lt;p&gt;The issue for this is &lt;a href=&quot;http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=17250&quot;&gt;CodePlex #17250 - Support for LINQ extension methods&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Expression Trees&lt;/h4&gt;

&lt;p&gt;An expression tree is an abstract, language-independent representation of a piece of code that can be more easily parsed and transformed than the raw code it was generated from. From the expression tree, the LINQ provider (such as LINQ to SQL) determines how to convert it into a query in its target language (such as SQL). The DLR actually uses &quot;expression&quot; trees as well (a superset of the LINQ classes that support statements as well as expressions), which are compiled into IL code and then executed.&lt;/p&gt;

&lt;p&gt;In C# (and VB), lambda expressions are convertible to expression trees. Python also has lambda expressions, and these should also be convertible to expression trees – in particular, expression trees that exactly match what would be created by the C# compiler for an equivalent lambda, which is what every existing LINQ provider would expect.&lt;/p&gt;

&lt;p&gt;The issue for this is &lt;a href=&quot;http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=26044&quot;&gt;CodePlex #26044 - lambda should be convertible to Expression&amp;lt;...&amp;gt;&lt;/a&gt;.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-4713506012823596341?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/9sTUC2MD0W8&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: 24 hour race</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-27.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-27.html</id>
		<updated>2010-01-28T02:34:00+00:00</updated>
		<content type="html">&lt;p&gt;Another Mono-race, in 24 hours we are aiming to:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;Support the iPad SDK from Apple (freshly baked and
		published).

		&lt;/li&gt;&lt;li&gt;Add MonoDevelop support for it.
	&lt;/li&gt;&lt;/ul&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Using Compiled Python Classes from .NET/CSharp IP 2.6</title>
		<link href="http://www.ironpython.info/index.php/Using_Compiled_Python_Classes_from_.NET/CSharp_IP_2.6"/>
		<id>http://www.ironpython.info/index.php/Using_Compiled_Python_Classes_from_.NET/CSharp_IP_2.6</id>
		<updated>2010-01-27T20:10:45+00:00</updated>
		<content type="html">&lt;p&gt;Djlawler: Created page with 'You can compile an IronPython class to a DLL and then use IronPython hosting in c# to access the methods (this is for IronPython 2.6 and .Net 2.0).  Create a c# program like this…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can compile an IronPython class to a DLL and then use IronPython hosting in c# to access the methods (this is for IronPython 2.6 and .Net 2.0).&lt;br /&gt;
&lt;br /&gt;
Create a c# program like this:&lt;br /&gt;
&lt;br /&gt;
    using System;&lt;br /&gt;
    using System.IO;&lt;br /&gt;
    using System.Reflection;&lt;br /&gt;
    using IronPython.Hosting;&lt;br /&gt;
    using Microsoft.Scripting.Hosting;&lt;br /&gt;
    // we get access to Action and Func on .Net 2.0 through Microsoft.Scripting.Utils&lt;br /&gt;
    using Microsoft.Scripting.Utils;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    namespace TestCallIronPython&lt;br /&gt;
    {&lt;br /&gt;
        class Program&lt;br /&gt;
        {&lt;br /&gt;
            public static void Main(string[] args)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&quot;Hello World!&quot;);&lt;br /&gt;
                ScriptEngine pyEngine = Python.CreateEngine();&lt;br /&gt;
    &lt;br /&gt;
                Assembly myclass = Assembly.LoadFile(Path.GetFullPath(&quot;MyClass.dll&quot;));&lt;br /&gt;
                pyEngine.Runtime.LoadAssembly(myclass);&lt;br /&gt;
                ScriptScope pyScope = pyEngine.Runtime.ImportModule(&quot;MyClass&quot;);&lt;br /&gt;
    &lt;br /&gt;
                // Get the Python Class&lt;br /&gt;
                object MyClass = pyEngine.Operations.Invoke(pyScope.GetVariable(&quot;MyClass&quot;));&lt;br /&gt;
    &lt;br /&gt;
                // Invoke a method of the class&lt;br /&gt;
                pyEngine.Operations.InvokeMember(MyClass, &quot;somemethod&quot;, new object[0]);&lt;br /&gt;
    &lt;br /&gt;
                // create a callable function to 'somemethod'&lt;br /&gt;
                Action SomeMethod2 = pyEngine.Operations.GetMember&amp;lt;Action&amp;gt;(MyClass, &quot;somemethod&quot;);&lt;br /&gt;
                SomeMethod2();&lt;br /&gt;
                &lt;br /&gt;
                // create a callable function to 'isodd'&lt;br /&gt;
                Func&amp;lt;int, bool&amp;gt; IsOdd = pyEngine.Operations.GetMember&amp;lt;Func&amp;lt;int, bool&amp;gt;&amp;gt;(MyClass, &quot;isodd&quot;);&lt;br /&gt;
                Console.WriteLine(IsOdd(1).ToString());&lt;br /&gt;
                Console.WriteLine(IsOdd(2).ToString());&lt;br /&gt;
                &lt;br /&gt;
                Console.Write(&quot;Press any key to continue . . . &quot;);&lt;br /&gt;
                Console.ReadKey(true);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
make a trivial python class like this:&lt;br /&gt;
&lt;br /&gt;
    class MyClass:&lt;br /&gt;
        def __init__(self):&lt;br /&gt;
            print &quot;I'm in a compiled class (I hope)&quot;&lt;br /&gt;
            &lt;br /&gt;
        def somemethod(self):&lt;br /&gt;
            print &quot;in some method&quot;&lt;br /&gt;
        &lt;br /&gt;
        def isodd(self, n):&lt;br /&gt;
            return 1 == n % 2&lt;br /&gt;
&lt;br /&gt;
compile it (I use SharpDevelop) but the clr.CompileModules method should work also.  Then shove the compiled MyClass.dll into the directory where the compiled c# program lives and run it.  You should get this as the result:&lt;br /&gt;
&lt;br /&gt;
    Hello World!&lt;br /&gt;
    I'm in a compiled class (I hope)&lt;br /&gt;
    in some method&lt;br /&gt;
    in some method&lt;br /&gt;
    True&lt;br /&gt;
    False&lt;br /&gt;
    Press any key to continue . . .&lt;/div&gt;</content>
		<author>
			<name>Djlawler</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Using Python Classes from .NET/CSharp IP 2.6</title>
		<link href="http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET/CSharp_IP_2.6"/>
		<id>http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET/CSharp_IP_2.6</id>
		<updated>2010-01-27T20:08:56+00:00</updated>
		<content type="html">&lt;p&gt;Djlawler: Created page with '    using System;     using IronPython.Hosting;     using Microsoft.Scripting.Hosting;     // we get access to Action and Func on .Net 2.0     using Microsoft.Scripting.Utils;   …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;    using System;&lt;br /&gt;
    using IronPython.Hosting;&lt;br /&gt;
    using Microsoft.Scripting.Hosting;&lt;br /&gt;
    // we get access to Action and Func on .Net 2.0&lt;br /&gt;
    using Microsoft.Scripting.Utils;&lt;br /&gt;
    &lt;br /&gt;
    namespace TestCallIronPython&lt;br /&gt;
    {&lt;br /&gt;
        class Program&lt;br /&gt;
        {&lt;br /&gt;
            public static void Main(string[] args)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&quot;Hello World!&quot;);&lt;br /&gt;
                ScriptEngine pyEngine = Python.CreateEngine();&lt;br /&gt;
                ScriptScope pyScope = pyEngine.CreateScope();&lt;br /&gt;
                pyScope.SetVariable(&quot;test&quot;, &quot;test me&quot;);&lt;br /&gt;
                &lt;br /&gt;
                string code = @&quot;&lt;br /&gt;
    print 'test = ' + test&lt;br /&gt;
    class MyClass:&lt;br /&gt;
        def __init__(self):&lt;br /&gt;
            pass&lt;br /&gt;
                &lt;br /&gt;
        def somemethod(self):&lt;br /&gt;
            print 'in some method'&lt;br /&gt;
                &lt;br /&gt;
        def isodd(self, n):&lt;br /&gt;
            return 1 == n % 2&lt;br /&gt;
    &quot;;&lt;br /&gt;
                ScriptSource source = pyEngine.CreateScriptSourceFromString(code);&lt;br /&gt;
                CompiledCode compiled = source.Compile();&lt;br /&gt;
                compiled.Execute(pyScope);&lt;br /&gt;
    &lt;br /&gt;
                // Get the Python Class&lt;br /&gt;
                object MyClass = pyEngine.Operations.Invoke(pyScope.GetVariable(&quot;MyClass&quot;));&lt;br /&gt;
                // Invoke a method of the class&lt;br /&gt;
                pyEngine.Operations.InvokeMember(MyClass, &quot;somemethod&quot;, new object[0]);&lt;br /&gt;
    &lt;br /&gt;
                // create a callable function to 'somemethod'&lt;br /&gt;
                Action SomeMethod2 = pyEngine.Operations.GetMember&amp;lt;Action&amp;gt;(MyClass, &quot;somemethod&quot;);&lt;br /&gt;
                SomeMethod2();&lt;br /&gt;
                    &lt;br /&gt;
                // create a callable function to 'isodd'&lt;br /&gt;
                Func&amp;lt;int, bool&amp;gt; IsOdd = pyEngine.Operations.GetMember&amp;lt;Func&amp;lt;int, bool&amp;gt;&amp;gt;(MyClass, &quot;isodd&quot;);&lt;br /&gt;
                Console.WriteLine(IsOdd(1).ToString());&lt;br /&gt;
                Console.WriteLine(IsOdd(2).ToString());&lt;br /&gt;
                &lt;br /&gt;
                Console.Write(&quot;Press any key to continue . . . &quot;);&lt;br /&gt;
                Console.ReadKey(true);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;/div&gt;</content>
		<author>
			<name>Djlawler</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Using Python Classes from .NET (c</title>
		<link href="http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET_(c"/>
		<id>http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET_(c</id>
		<updated>2010-01-27T20:01:46+00:00</updated>
		<content type="html">&lt;p&gt;Djlawler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to use IronPython hosting in c# to access methods in an IronPython class (this is for IronPython 2.6 and .Net 2.0).&lt;br /&gt;
&lt;br /&gt;
Create a c# program like this:&lt;br /&gt;
&lt;br /&gt;
    using System;&lt;br /&gt;
    using IronPython.Hosting;&lt;br /&gt;
    using Microsoft.Scripting.Hosting;&lt;br /&gt;
    // we get access to Action and Func on .Net 2.0&lt;br /&gt;
    using Microsoft.Scripting.Utils;&lt;br /&gt;
    &lt;br /&gt;
    namespace TestCallIronPython&lt;br /&gt;
    {&lt;br /&gt;
        class Program&lt;br /&gt;
        {&lt;br /&gt;
            public static void Main(string[] args)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&quot;Hello World!&quot;);&lt;br /&gt;
                ScriptEngine pyEngine = Python.CreateEngine();&lt;br /&gt;
                ScriptScope pyScope = pyEngine.CreateScope();&lt;br /&gt;
                pyScope.SetVariable(&quot;test&quot;, &quot;test me&quot;);&lt;br /&gt;
                &lt;br /&gt;
                string code = @&quot;&lt;br /&gt;
    print 'test = ' + test&lt;br /&gt;
    class MyClass:&lt;br /&gt;
        def __init__(self):&lt;br /&gt;
            pass&lt;br /&gt;
            &lt;br /&gt;
        def somemethod(self):&lt;br /&gt;
            print 'in some method'&lt;br /&gt;
            &lt;br /&gt;
        def isodd(self, n):&lt;br /&gt;
            return 1 == n % 2&lt;br /&gt;
    &quot;;&lt;br /&gt;
                ScriptSource source = pyEngine.CreateScriptSourceFromString(code);&lt;br /&gt;
                CompiledCode compiled = source.Compile();&lt;br /&gt;
                compiled.Execute(pyScope);&lt;br /&gt;
    &lt;br /&gt;
                // Get the Python Class&lt;br /&gt;
                object MyClass = pyEngine.Operations.Invoke(pyScope.GetVariable(&quot;MyClass&quot;));&lt;br /&gt;
                // Invoke a method of the class&lt;br /&gt;
                pyEngine.Operations.InvokeMember(MyClass, &quot;somemethod&quot;, new object[0]);&lt;br /&gt;
    &lt;br /&gt;
                // create a callable function to 'somemethod'&lt;br /&gt;
                Action SomeMethod2 = pyEngine.Operations.GetMember&amp;lt;Action&amp;gt;(MyClass, &quot;somemethod&quot;);&lt;br /&gt;
                SomeMethod2();&lt;br /&gt;
                &lt;br /&gt;
                // create a callable function to 'isodd'&lt;br /&gt;
                Func&amp;lt;int, bool&amp;gt; IsOdd = pyEngine.Operations.GetMember&amp;lt;Func&amp;lt;int, bool&amp;gt;&amp;gt;(MyClass, &quot;isodd&quot;);&lt;br /&gt;
                Console.WriteLine(IsOdd(1).ToString());&lt;br /&gt;
                Console.WriteLine(IsOdd(2).ToString());&lt;br /&gt;
                &lt;br /&gt;
                Console.Write(&quot;Press any key to continue . . . &quot;);&lt;br /&gt;
                Console.ReadKey(true);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;/div&gt;</content>
		<author>
			<name>Djlawler</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Using Compiled Python Classes from .NET (c</title>
		<link href="http://www.ironpython.info/index.php/Using_Compiled_Python_Classes_from_.NET_(c"/>
		<id>http://www.ironpython.info/index.php/Using_Compiled_Python_Classes_from_.NET_(c</id>
		<updated>2010-01-27T19:51:07+00:00</updated>
		<content type="html">&lt;p&gt;Djlawler: Created page with 'You can compile an IronPython class to a DLL and then use IronPython hosting in c# to access the methods (this is for IronPython 2.6 and .Net 2.0).  Create a c# program like this…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can compile an IronPython class to a DLL and then use IronPython hosting in c# to access the methods (this is for IronPython 2.6 and .Net 2.0).&lt;br /&gt;
&lt;br /&gt;
Create a c# program like this:&lt;br /&gt;
&lt;br /&gt;
    using System;&lt;br /&gt;
    using System.IO;&lt;br /&gt;
    using System.Reflection;&lt;br /&gt;
    using IronPython.Hosting;&lt;br /&gt;
    using Microsoft.Scripting.Hosting;&lt;br /&gt;
    // we get access to Action and Func on .Net 2.0 through Microsoft.Scripting.Utils&lt;br /&gt;
    using Microsoft.Scripting.Utils;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    namespace TestCallIronPython&lt;br /&gt;
    {&lt;br /&gt;
        class Program&lt;br /&gt;
        {&lt;br /&gt;
            public static void Main(string[] args)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&quot;Hello World!&quot;);&lt;br /&gt;
                ScriptEngine pyEngine = Python.CreateEngine();&lt;br /&gt;
    &lt;br /&gt;
                Assembly myclass = Assembly.LoadFile(Path.GetFullPath(&quot;MyClass.dll&quot;));&lt;br /&gt;
                pyEngine.Runtime.LoadAssembly(myclass);&lt;br /&gt;
                ScriptScope pyScope = pyEngine.Runtime.ImportModule(&quot;MyClass&quot;);&lt;br /&gt;
    &lt;br /&gt;
                // Get the Python Class&lt;br /&gt;
                object MyClass = pyEngine.Operations.Invoke(pyScope.GetVariable(&quot;MyClass&quot;));&lt;br /&gt;
    &lt;br /&gt;
                // Invoke a method of the class&lt;br /&gt;
                pyEngine.Operations.InvokeMember(MyClass, &quot;somemethod&quot;, new object[0]);&lt;br /&gt;
    &lt;br /&gt;
                // create a callable function to 'somemethod'&lt;br /&gt;
                Action SomeMethod2 = pyEngine.Operations.GetMember&amp;lt;Action&amp;gt;(MyClass, &quot;somemethod&quot;);&lt;br /&gt;
                SomeMethod2();&lt;br /&gt;
                &lt;br /&gt;
                // create a callable function to 'isodd'&lt;br /&gt;
                Func&amp;lt;int, bool&amp;gt; IsOdd = pyEngine.Operations.GetMember&amp;lt;Func&amp;lt;int, bool&amp;gt;&amp;gt;(MyClass, &quot;isodd&quot;);&lt;br /&gt;
                Console.WriteLine(IsOdd(1).ToString());&lt;br /&gt;
                Console.WriteLine(IsOdd(2).ToString());&lt;br /&gt;
                &lt;br /&gt;
                Console.Write(&quot;Press any key to continue . . . &quot;);&lt;br /&gt;
                Console.ReadKey(true);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
make a trivial python class like this:&lt;br /&gt;
&lt;br /&gt;
    class MyClass:&lt;br /&gt;
        def __init__(self):&lt;br /&gt;
            print &quot;I'm in a compiled class (I hope)&quot;&lt;br /&gt;
            &lt;br /&gt;
        def somemethod(self):&lt;br /&gt;
            print &quot;in some method&quot;&lt;br /&gt;
        &lt;br /&gt;
        def isodd(self, n):&lt;br /&gt;
            return 1 == n % 2&lt;br /&gt;
&lt;br /&gt;
compile it (I use SharpDevelop) but the clr.CompileModules method should work also.  Then shove the compiled MyClass.dll into the directory where the compiled c# program lives and run it.  You should get this as the result:&lt;br /&gt;
&lt;br /&gt;
    Hello World!&lt;br /&gt;
    I'm in a compiled class (I hope)&lt;br /&gt;
    in some method&lt;br /&gt;
    in some method&lt;br /&gt;
    True&lt;br /&gt;
    False&lt;br /&gt;
    Press any key to continue . . .&lt;/div&gt;</content>
		<author>
			<name>Djlawler</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): IronPython Web Roles for Windows Azure</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/ypu4-_9Jn1g/ironpython-web-roles-for-windows-azure.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-6863234684684846855</id>
		<updated>2010-01-27T03:37:03+00:00</updated>
		<content type="html">&lt;p&gt;Following up to my previous post on &lt;a href=&quot;http://jdhardy.blogspot.com/2010/01/ironpython-worker-roles-for-windows.html&quot;&gt;IronPython worker roles&lt;/a&gt;, I'm going to discuss how to implement web roles using IronPython. The &lt;a href=&quot;http://bitbucket.org/jdhardy/pyazureexamples/src/&quot;&gt;code discussed here&lt;/a&gt; is on bitbucket, as usual.&lt;/p&gt;&lt;p&gt;There are currently two ways to implement IronPython web roles on Azure: using the &lt;a href=&quot;http://www.codeplex.com/wikipage?ProjectName=aspnet&amp;amp;title=Dynamic%20Language%20Support&amp;amp;referringTitle=Home&quot;&gt;ASP.NET Dynamic Language Support&lt;/a&gt; or using &lt;a href=&quot;http://nwsgi.codeplex.com/&quot;&gt;NWSGI&lt;/a&gt;. Someday I hope the &lt;a href=&quot;http://github.com/jschementi/ironrubymvc&quot;&gt;IronRubyMVC&lt;/a&gt; project matures to be an option as well.&lt;/p&gt;&lt;h4&gt;Using ASP.NET Dynamic Language Support&lt;/h4&gt;&lt;p&gt;This example can be found in the PyWebRole folder of &lt;a href=&quot;http://bitbucket.org/jdhardy/pyazureexamples/src/&quot;&gt;the project&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;First, you'll need to download the &lt;a href=&quot;http://www.codeplex.com/wikipage?ProjectName=aspnet&amp;amp;title=Dynamic%20Language%20Support&amp;amp;referringTitle=Home&quot;&gt;ASP.NET Dynamic Language Support&lt;/a&gt; (ASP.NET DLS) files. Next, create a standard C# web role and delete all of the &lt;tt&gt;.cs&lt;/tt&gt; files except &lt;tt&gt;WebRole.cs&lt;/tt&gt;. After that, there's really not much to it – drop the assemblies from the ASP.NET DLS package  into the project's &lt;tt&gt;bin&lt;/tt&gt; folder and add the following bits to the &lt;tt&gt;web.config&lt;/tt&gt; file (alternatively, just copy the &lt;tt&gt;Web.config&lt;/tt&gt; from the project):&lt;/p&gt;&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;configSections&amp;gt;
    &amp;lt;!-- Add this to the existing &amp;lt;configSections&amp;gt; element --&amp;gt;
    &amp;lt;section name=&quot;microsoft.scripting&quot; type=&quot;Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&quot; requirePermission=&quot;false&quot;/&amp;gt;
&amp;lt;/configSections&amp;gt;

&amp;lt;system.web&amp;gt;
    &amp;lt;!-- Replace the existing &amp;lt;pages&amp;gt; element (if any) --&amp;gt;
    &amp;lt;pages compilationMode=&quot;Auto&quot; pageParserFilterType=&quot;Microsoft.Web.Scripting.UI.NoCompileCodePageParserFilter&quot; pageBaseType=&quot;Microsoft.Web.Scripting.UI.ScriptPage&quot; userControlBaseType=&quot;Microsoft.Web.Scripting.UI.ScriptUserControl&quot;&amp;gt;
        &amp;lt;controls&amp;gt;
            &amp;lt;add tagPrefix=&quot;asp&quot; namespace=&quot;System.Web.UI&quot; assembly=&quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&amp;gt;
            &amp;lt;add tagPrefix=&quot;asp&quot; namespace=&quot;System.Web.UI.WebControls&quot; assembly=&quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&quot;/&amp;gt;
        &amp;lt;/controls&amp;gt;
    &amp;lt;/pages&amp;gt;
&amp;lt;/system.web&amp;gt;

&amp;lt;system.webserver&amp;gt;
    &amp;lt;modules&amp;gt;
        &amp;lt;!-- Add this to the existing &amp;lt;modules&amp;gt; element --&amp;gt;
        &amp;lt;add name=&quot;DynamicLanguageHttpModule&quot; preCondition=&quot;integratedMode&quot; type=&quot;Microsoft.Web.Scripting.DynamicLanguageHttpModule&quot;/&amp;gt;
    &amp;lt;/modules&amp;gt;
&amp;lt;/system.webserver&amp;gt;

&amp;lt;!-- Add this whole section --&amp;gt;
&amp;lt;microsoft.scripting debugMode=&quot;true&quot;&amp;gt;
    &amp;lt;languages&amp;gt;
        &amp;lt;language names=&quot;IronPython;Python;py&quot; extensions=&quot;.py&quot; displayName=&quot;IronPython 2.6&quot; type=&quot;IronPython.Runtime.PythonContext, IronPython, Version=2.6.10920.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&quot; /&amp;gt;
    &amp;lt;/languages&amp;gt;
&amp;lt;/microsoft.scripting&amp;gt;&lt;/pre&gt;

&lt;p&gt;From here, just follow the directions on the ASP.NET DLS page and in the package to create an ASP.NET Dynamic Language site.&lt;/p&gt;

&lt;h4&gt;NWSGI&lt;/h4&gt;

&lt;p&gt;First, download NWSGI 2.0. Next, deploying NWSGI to Azure is exactly the same as &lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-installation-usage.html&quot;&gt;deploying it to any other server&lt;/a&gt; using &lt;tt&gt;xcopy&lt;/tt&gt;. That's about it. You can see this example in the PyHelloWorld folder of &lt;a href=&quot;http://bitbucket.org/jdhardy/pyazureexamples/src/&quot;&gt;the project&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Now What?&lt;/h4&gt;

&lt;p&gt;Unfortunately, now you're pretty much on your own. So far, none of the big Python web frameworks work 100% on IronPython, there is no Python library to access Azure's storage tables, blobs, or queues, and the .NET storage client library relies on LINQ support (which &lt;a href=&quot;http://lists.ironpython.com/pipermail/users-ironpython.com/2009-December/011856.html&quot;&gt;IronPython doesn't have&lt;/a&gt;, yet).&lt;/p&gt;

&lt;p&gt;Personally, I plan to implement the data access in C# and call that from IronPython, running my own web framework. We'll see how it goes.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-6863234684684846855?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/ypu4-_9Jn1g&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Preordering the Apple Tablet</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-25.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-25.html</id>
		<updated>2010-01-25T22:30:00+00:00</updated>
		<content type="html">&lt;p&gt;
&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/1001251141TABFSeyl.png&quot; /&gt;

&lt;/center&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: What can you get with 10KB of Ruby or Python code?</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/euq9xTKM_GM/what-can-you-get-with-10kb-of-ruby-or.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-1159494539523701321</id>
		<updated>2010-01-21T00:54:00+00:00</updated>
		<content type="html">&lt;h3&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;$1000 and a trip to MIX 2010!&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href=&quot;http://mix10k.visitmix.com/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;mix10kart&quot; height=&quot;360&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/S1eltjOaRdI/AAAAAAAAAQc/VYs1v6V0ECg/mix10kart%5B5%5D.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;mix10kart&quot; width=&quot;367&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;9 days left, an counting&lt;/font&gt;, &lt;/strong&gt;to &lt;a href=&quot;http://mix10k.visitmix.com/Entry/Create&quot; target=&quot;_blank&quot;&gt;enter&lt;/a&gt; your minimalist creation into the &lt;a href=&quot;http://mix10k.visitmix.com/&quot; target=&quot;_blank&quot;&gt;MIX 10K Sm&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;art&lt;/font&gt;&lt;/strong&gt; Coding Challenge&lt;/a&gt;. Do anything you want, it just has to be less than 10 kilobytes of source code. You can use HTML5, or Silverlight, and also use &lt;a href=&quot;http://visitmix.com/labs/gestalt&quot; target=&quot;_blank&quot;&gt;Ruby or Python through Gestalt&lt;/a&gt; (&lt;a href=&quot;http://mix10k.visitmix.com/Terms#4&quot; target=&quot;_blank&quot;&gt;learn more about the entry rules&lt;/a&gt;). You can win a free trip to MIX and up to $1000 in cash (&lt;a href=&quot;http://mix10k.visitmix.com/Terms#8&quot; target=&quot;_blank&quot;&gt;learn more about the prizes&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Check out the &lt;a href=&quot;http://mix10k.visitmix.com/Gallery&quot; target=&quot;_blank&quot;&gt;already submitted apps&lt;/a&gt; for inspiration; they are starting to look really awesome.&lt;/p&gt;  &lt;p&gt;As an added bonus, I’m part of the &lt;a href=&quot;http://live.visitmix.com/News/MIX-10K-Judge-Panel-Announced&quot; target=&quot;_blank&quot;&gt;MIX 10K Judge Panel&lt;/a&gt;! Since I work on &lt;a href=&quot;http://ironruby.net&quot; target=&quot;_blank&quot;&gt;IronRuby&lt;/a&gt; and &lt;a href=&quot;http://ironpython.net&quot; target=&quot;_blank&quot;&gt;IronPython&lt;/a&gt;, and wrote/maintain &lt;a href=&quot;http://visitmix.com/labs/gestalt&quot; target=&quot;_blank&quot;&gt;Gestalt&lt;/a&gt;, I’ll be &lt;em&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;“very happy”&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt; if I you submit a Ruby or Python app. Of course I won’t be biased against JavaScript or C# based apps, but just sayin’ … ;)&lt;/p&gt;  &lt;p&gt;Entries will be accepted through January 29, so …&lt;/p&gt; 


#mix10k_enter,
#mix10k_enter:link,
#mix10k_enter:visited {
border-bottom: #666 3px solid; border-left: #666 3px solid; padding-bottom: 10px; background-color: #444; margin: 10px 50px 20px 0px; padding-left: 10px; padding-right: 10px; display: block; color: white; font-size: 24px; border-top: #666 3px solid; border-right: #666 3px solid; padding-top: 10px;
}
#mix10k_enter:hover {
  background-color: #555;
  text-decoration: none;
}&lt;a href=&quot;http://mix10k.visitmix.com/Entry/Create&quot; id=&quot;mix10k_enter&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Enter your app right now »&lt;/strong&gt;&lt;/a&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-1159494539523701321?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=euq9xTKM_GM:stYkXbLHmgA:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=euq9xTKM_GM:stYkXbLHmgA:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=euq9xTKM_GM:stYkXbLHmgA:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=euq9xTKM_GM:stYkXbLHmgA:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=euq9xTKM_GM:stYkXbLHmgA:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=euq9xTKM_GM:stYkXbLHmgA:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=euq9xTKM_GM:stYkXbLHmgA:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/euq9xTKM_GM&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: Take your MVC User Controls to the next level</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2010/01/13/take-your-mvc-user-controls-to-the-next-level.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7309334</id>
		<updated>2010-01-13T08:46:00+00:00</updated>
		<content type="html">Note: this is based on ASP.NET MVC 2 RC , and will not work on earlier builds.   The quick pitch: make your User Controls as cool as built-in render helpers! The goal of this post is to show you how to change the way MVC user controls are called from something like this: &amp;lt;%= Html.Partial(&quot;~/Views/Shared/gravatar.ascx&quot;, new { Email = &quot;foo@bar.com&quot;, Size = 80 }) %&amp;gt; To something that looks just like a built-in render helper (like Html.TextBox(…)): &amp;lt;%= Html.Gravatar(&quot;foo@bar.com&quot;, 80) %&amp;gt;   The current model for User Controls in MVC If you have used ASP.NET MVC, you probably know that you can use User Controls (.ascx files) to provide partial rendering. For example, the default MVC app has a Site...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2010/01/13/take-your-mvc-user-controls-to-the-next-level.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7309334&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Psyco 2 Binaries for Windows and Python 2.4, 2.5 and 2.6</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/k8ti35mJ0cs/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/k8ti35mJ0cs/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-12T00:16:10+00:00</updated>
		<content type="html">Pysco is a specializing compiler (a kind of JIT) for Python written by Armin Rigo. The difficulty of maintaining and extending psyco was one of the motivating factors behind the inception of PyPy. ... [191 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=k8ti35mJ0cs:7UsFj5hEA9g:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=k8ti35mJ0cs:7UsFj5hEA9g:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/k8ti35mJ0cs&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: MVP Award</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-11-1.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-11-1.html</id>
		<updated>2010-01-11T23:57:00+00:00</updated>
		<content type="html">&lt;p&gt;Thanks to everyone that participated in the campaign to
	nominate me for a C# MVP award, when I got back to Boston I
	found on my piles of email that I am now part of the program.

	&lt;/p&gt;&lt;p&gt;This is Pretty Sweet(tm).  This will be a great opportunity
	to build more bridges with Windows developers and show them
	that there is an ECMA CLI life in the other side of the OS
	spectrum.

	&lt;/p&gt;&lt;p&gt;Looking forward to the group picture!&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Mono at FOSDEM</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-11.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-11.html</id>
		<updated>2010-01-11T23:48:00+00:00</updated>
		<content type="html">&lt;p&gt;This year we will have a Mono Room at
	the &lt;a href=&quot;http://fosdem.org/2010/&quot;&gt;FOSDEM Conference&lt;/a&gt; in
	Brussels.   The FOSDEM conference is held on the weekend on
	February 6th and 7th.

	&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://weblog.savanne.be/&quot;&gt;Ruben&lt;/a&gt;
	and &lt;a href=&quot;http://blog.reblochon.org/&quot;&gt;Stephane&lt;/a&gt;
	organized the room and the speakers for the it.  has posted
	the finalized schedule for the Mono activities at FOSDEM on
	Sunday.

	&lt;/p&gt;&lt;p&gt;Here is the schedule, there are some pretty interesting
	talks:

	&lt;/p&gt;&lt;table border=&quot;0&quot;&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot; width=&quot;20%&quot;&gt;09:00 - 09:15&lt;/td&gt;&lt;td width=&quot;80%&quot;&gt;Opening (Ruben Vermeersch, Stéphane Delcroix)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;09:15 - 10:00&lt;/td&gt;&lt;td&gt;MonoDevelop (Lluis Sanchez Gual)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;10:00 - 11:00&lt;/td&gt;&lt;td&gt;The Ruby and .NET love child (Ivan Porto Carrero)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;11:00 - 12:00&lt;/td&gt;&lt;td&gt;Mono Edge (Miguel de Icaza)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;em&gt;Lunch Break&lt;/em&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;12:45 - 13:15&lt;/td&gt;&lt;td&gt;The evolution of MonoTorrent (Alan McGovern)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;13:15 - 13:45&lt;/td&gt;&lt;td&gt;Image processing with Mono.Simd (Stéphane Delcroix)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;13:45 - 14:15&lt;/td&gt;&lt;td&gt;ParallelFx, bringing Mono applications in the multicore era (Jérémie Laval)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;div align=&quot;center&quot;&gt;&lt;em&gt;Coffee Break&lt;/em&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;14:30 - 15:30&lt;/td&gt;&lt;td&gt;Building The Virtual Babel: Mono In Second Life (Jim Purbrick)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;15:30 - 16:00&lt;/td&gt;&lt;td&gt;Moonlight and you (Andreia Gaita)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;16:00 - 16:30&lt;/td&gt;&lt;td&gt;OSCTool - learning C# and Mono by doing (Jo Shields)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;16:30 - 16:45&lt;/td&gt;&lt;td&gt;Smuxi - IRC in a modern environment (Mirco Bauer)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td nowrap=&quot;nowrap&quot;&gt;16:45 - 17:00&lt;/td&gt;&lt;td&gt;Closing (Ruben Vermeersch, Stéphane Delcroix)&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): IronPython Worker Roles for Windows Azure</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/lCkwdZjQ2vk/ironpython-worker-roles-for-windows.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-5012592915631187365</id>
		<updated>2010-01-11T01:22:03+00:00</updated>
		<content type="html">&lt;p&gt;Curiosity has finally got the better of me and I've started looking into Windows Azure again. It's matured quite a bit since I looked at it last year and now looks like a pretty solid platform to work with.&lt;/p&gt;  &lt;p&gt;Aside from using NWSGI to write a web role (which I'll show later), I wanted to see if it was possible to write a worker role in Python. Happily, it is, and it's not that complicated. In fact, it's pretty similar to how NWSGI works – load up a Python file and run some functions.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;h4&gt;Worker Role Requirements&lt;/h4&gt;  &lt;p&gt;A standard C# worker roles requires three functions: &lt;tt&gt;OnStart&lt;/tt&gt;, &lt;tt&gt;OnStop&lt;/tt&gt;, and &lt;tt&gt;Run&lt;/tt&gt;:&lt;/p&gt;  &lt;pre class=&quot;c#&quot; name=&quot;code&quot;&gt;public class PyWorkerRole : RoleEntryPoint
{
    public override bool OnStart() { /* ... */ }
    public override void OnStop() { /* ... */ }
    public override void Run() { /* ... */ }
}&lt;/pre&gt;

&lt;p&gt;This can be mapped to a Python module in a fairly straightforward fashion:&lt;/p&gt;

&lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;def start():
    return True

def run():
    pass

def stop():
    pass&lt;/pre&gt;

&lt;p&gt;This has some advantages and disadvantages compared to using a class, but I like it for its simplicity.&lt;/p&gt;

&lt;h4&gt;The Implementation&lt;/h4&gt;

&lt;p&gt;Azure requires an actual .NET class to implement a worker role, so we create one that hosts the IronPython engine. This is a good example of how to embed IronPython to run very simple scripts. The core IronPython hosting function is shown here; for the rest, see the files linked below.&lt;/p&gt;

&lt;pre class=&quot;c#&quot; name=&quot;code&quot;&gt;private void InitScripting(string scriptName)
{
    this.engine = Python.CreateEngine();
    this.engine.Runtime.LoadAssembly(typeof(string).Assembly);
    this.engine.Runtime.LoadAssembly(typeof(DiagnosticMonitor).Assembly);
    this.engine.Runtime.LoadAssembly(typeof(RoleEnvironment).Assembly);
    this.engine.Runtime.LoadAssembly(typeof(Microsoft.WindowsAzure.CloudStorageAccount).Assembly);                 
    
    this.scope = this.engine.CreateScope();
    engine.CreateScriptSourceFromFile(scriptName).Execute(scope);             
    
    if(scope.ContainsVariable(&quot;start&quot;))
        this.start = scope.GetVariable&amp;lt;Func&amp;lt;bool&amp;gt;&amp;gt;(&quot;start&quot;);
    
    this.run = scope.GetVariable&amp;lt;Action&amp;gt;(&quot;run&quot;);
    
    if(scope.ContainsVariable(&quot;stop&quot;))
        this.stop = scope.GetVariable&amp;lt;Action&amp;gt;(&quot;stop&quot;);
}&lt;/pre&gt;

&lt;p&gt;First, we create a &lt;tt&gt;ScriptEngine&lt;/tt&gt; and add some useful assemblies;  then we create a &lt;tt&gt;Scope&lt;/tt&gt; to execute in; then we actually execute the script. Finally, we try to pull out the functions and convert them to C# delegates; &lt;tt&gt;run&lt;/tt&gt; is required but &lt;tt&gt;start&lt;/tt&gt; and &lt;tt&gt;stop&lt;/tt&gt; are optional. Those delegates are called from the C# wrapper (from &lt;tt&gt;Run&lt;/tt&gt;, &lt;tt&gt;OnStart&lt;/tt&gt;, and &lt;tt&gt;OnStop&lt;/tt&gt;, as appropriate).&lt;/p&gt;

&lt;p&gt;The rest of the file is pretty much taken from the worker role template, so I'll leave it out.&lt;/p&gt;

&lt;h4&gt;Doing Actual Work&lt;/h4&gt;

&lt;p&gt;Now, a worker role needs some actual work to do – usually, reading items from a queue and processing them. Happily, the Azure StorageClient library is perfectly usable from IronPython.&lt;/p&gt;

&lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;from Microsoft.WindowsAzure import CloudStorageAccount
from Microsoft.WindowsAzure.StorageClient import CloudQueueMessage, CloudStorageAccountStorageClientExtensions

def run():
    account = CloudStorageAccount.FromConfigurationSetting(&quot;DataConnectionString&quot;)
    queueClient = CloudStorageAccountStorageClientExtensions.CreateCloudQueueClient(account)
    queue = queueClient.GetQueueReference(&quot;messagequeue&quot;)

    while True:
        Thread.Sleep(10000)

        if queue.Exists():
            msg = queue.GetMessage()
            if msg:
                Trace.TraceInformation(&quot;Message '%s' processed.&quot; % msg.AsString)
                queue.DeleteMessage(msg)&lt;/pre&gt;

&lt;p&gt;The only catch is that CreateCloudQueueClient is an extension method, so it must be called as a static method on the CloudStorageAccountStorageClientExtensions class.&lt;/p&gt;

&lt;h4&gt;Using the Code&lt;/h4&gt;

&lt;p&gt;To actually use the code, create a C# worker role as per usual, but replace the generated class file with &lt;tt&gt;PythonWorkerRole.cs&lt;/tt&gt; (see below). Next, add the IronPython assemblies as references to the project. Then, create a string setting for the role (under the Cloud project's Roles folder) called &lt;tt&gt;ScriptName&lt;/tt&gt; and set it to the name of the script file. Finally, add a &lt;tt&gt;.py&lt;/tt&gt; file to the worker role and ensure that (under 'Properties') its 'Build Action' is 'Content' and 'Copy to Output' is 'Copy if Newer'.&lt;/p&gt;

&lt;p&gt;The code can be downloaded from my &lt;a href=&quot;http://bitbucket.org/jdhardy/pyazureexamples/&quot;&gt;PyAzureExamples repository&lt;/a&gt;, including zip archives of it. It includes the PyWorkerRole project and the Cloud Service project.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-5012592915631187365?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/lCkwdZjQ2vk&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Rambling Recording on Member Lookup in Python (podcast)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/_Y87LN511NA/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/_Y87LN511NA/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T20:25:22+00:00</updated>
		<content type="html">I was thinking about the Python object model, in part as a result of my post on The Python Class Statement. Python is a really easy language to learn, but it also has advanced features like its protocols, descriptors and metaclasses, that make the full object model pretty complex - and that's before you start looking at the corner cases. ... [539 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=_Y87LN511NA:4Ggy50kGghI:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=_Y87LN511NA:4Ggy50kGghI:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/_Y87LN511NA&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Notes on the Python Class Statement</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/y7-c3169YBw/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/y7-c3169YBw/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T13:49:13+00:00</updated>
		<content type="html">Python classes are created at runtime, usually when you execute a script, or import the module they are defined in. Class creation is done primarily with the class statement. ... [889 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=y7-c3169YBw:qfrec8KwoNw:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=y7-c3169YBw:qfrec8KwoNw:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/y7-c3169YBw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Release: ConfigObj 4.7.0 and validate 1.0.1</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/08gNAV1rIh0/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/08gNAV1rIh0/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-10T00:14:15+00:00</updated>
		<content type="html">I've just released ConfigObj 4.7.0 and validate 1.0.1. ConfigObj is an easy to use configuration file reader and writer module. ... [576 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=08gNAV1rIh0:94MptoAhgfM:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=08gNAV1rIh0:94MptoAhgfM:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/08gNAV1rIh0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: PyCrypto 2.1.0 Binaries for Windows 32bit Python 2.6, 2.5 and 2.4</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/HFXVJrq_LVI/arch_d7_2010_01_09.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/HFXVJrq_LVI/arch_d7_2010_01_09.shtml</id>
		<updated>2010-01-09T15:57:29+00:00</updated>
		<content type="html">PyCrypto is a Python cryptography package originally created by Andrew Kuchling and now maintained by Dwayne C. Litzenberger. For a while I've been hosting Windows binaries for version 2.0.1. ... [126 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=HFXVJrq_LVI:EmIoDaVIqyM:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=HFXVJrq_LVI:EmIoDaVIqyM:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/HFXVJrq_LVI&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Pixel Shaders for Moonlight</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-07.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-07.html</id>
		<updated>2010-01-08T03:01:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/David_Reveman&quot;&gt;David
	Reveman&lt;/a&gt; has just posted a fascinating patch that debuts
	the &lt;a href=&quot;http://lists.ximian.com/pipermail/moonlight-list/2010-January/000831.html&quot;&gt;support
	of pixel shaders&lt;/a&gt; in Moonlight.

	&lt;/p&gt;&lt;p&gt;David's patch uses Gallium, and he says:

	&lt;/p&gt;&lt;blockquote&gt;
	The current implementation uses gallium's softpipe driver but
	hooking up the llvm driver as well should be a minor task and give
	significantly better software performance.

	&lt;p&gt;[...]

	&lt;/p&gt;&lt;p&gt;My current approach is to focus on getting all these things
	working in software first. By using a OpenVG backend for cairo
	we can incrementally move to using gallium and hardware for
	all rendering.

	&lt;/p&gt;&lt;/blockquote&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">tech-michael: Switched to engrstephens.blogspot.com</title>
		<link href="http://feedproxy.google.com/~r/MichaelsRandomTechnologyPosts/~3/yU3vW8ocWDs/switched-to-engrstephensblogspotcom.html"/>
		<id>tag:blogger.com,1999:blog-6355218471395609447.post-3131482371213156267</id>
		<updated>2010-01-07T18:40:00+00:00</updated>
		<content type="html">I have switched all my accounts over to engrstehpens&lt;br /&gt;
&lt;br /&gt;
I have reposted all these blogs to my new blog!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6355218471395609447-3131482371213156267?l=tech-michael.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/MichaelsRandomTechnologyPosts/~4/yU3vW8ocWDs&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael (noreply@blogger.com)</name>
			<uri>http://tech-michael.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Fun with Unicode, Latin-1 and a C1 Control Code</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/KXHHPqpbp88/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/KXHHPqpbp88/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-07T12:42:27+00:00</updated>
		<content type="html">Unicode is a rabbit-warren of complexity; almost fractal in nature, the more you learn about it the more complexity you discover. Anyway, all that aside you can have great fun (i.e. ... [554 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=KXHHPqpbp88:uSourtwfvec:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=KXHHPqpbp88:uSourtwfvec:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/KXHHPqpbp88&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Moonlight: Platform Abstraction Layer Lands</title>
		<link href="http://tirania.org/blog/archive/2010/Jan-06.html"/>
		<id>http://tirania.org/blog/archive/2010/Jan-06.html</id>
		<updated>2010-01-07T05:16:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Chris_Toshok&quot;&gt;Chris
	Toshok&lt;/a&gt; &lt;a href=&quot;http://groups.google.com/group/mono-svn-patches/browse_thread/thread/dd5ab23522f495dc&quot;&gt;has
	landed&lt;/a&gt; the changes necessary to abstract Moonlight's
	engine from the platform.

	&lt;/p&gt;&lt;p&gt;The platform abstraction layer lives in
	moon/src/pal and the Gtk+ interface lives in
	moon/src/pal/gtk.

	&lt;/p&gt;&lt;p&gt;This is a necessary step to bring Moonlight to non-X11
	powered GUI systems.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Current State of Unladen Swallow (Towards a Faster Python)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/-cyi7P7JuOc/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/-cyi7P7JuOc/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-07T01:35:39+00:00</updated>
		<content type="html">I'm helping to organise the Python Language Summit that precedes the PyCon Conference this year. One of the first topics we'll be discussing is &quot;Python 3 adoption and tools and the Python language moratorium&quot; which will include representatives of the major Python implementations telling us the current state of their implementation and their plans or progress for supporting Python 3. ... [561 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=-cyi7P7JuOc:gDgevwJLb6A:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=-cyi7P7JuOc:gDgevwJLb6A:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/-cyi7P7JuOc&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: T4MVC 2.6.10: fluent route value API, shorter way to refer to action, and more</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2010/01/04/t4mvc-2-6-10-fluent-route-value-api-shorter-way-to-refer-to-action-and-more.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7300591</id>
		<updated>2010-01-05T02:45:36+00:00</updated>
		<content type="html">To get the latest build of T4MVC: Go to T4MVC page on CodePlex   I just posted build 2.6.10.  There were also a few builds in between since I last blogged about 2.6, so this post describes some of those changes (full history here ).   Fluent route value API As you probably know, T4MVC uses a pattern where the route values are encapsulated using a pseudo-call to a controller action, e.g. Html.ActionLink(&quot;Delete Dinner&quot;, MVC.Dinners.Delete(Model.DinnerID)) This adds the controller, the action and the method parameters to the route values in a convenient way with no hard coded strings. But in some situation, you may need to add extra values to the route that don’t exist in the action method.  Now you can do it as follows...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2010/01/04/t4mvc-2-6-10-fluent-route-value-api-shorter-way-to-refer-to-action-and-more.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7300591&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Most Popular Articles of 2009</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/uMZra-w7lo0/most-popular-articles-of-2009.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-8044910760637303761</id>
		<updated>2010-01-04T23:18:18+00:00</updated>
		<content type="html">In 2009 I made 312 posts on IronPython-URLs, a bit short of an average of one a day that it looked like I might manage earlier in the year.&lt;br /&gt;
&lt;br /&gt;
According to google analytics there were more than 112 thousand page views to a total of 2042 pages on the blog. An average of over three hundred page views a day. Feedburner estimates that this blog has around eight hundred readers. Many of those will read the articles via &lt;a href=&quot;http://feeds.feedburner.com/IronpythonUrls&quot;&gt;RSS&lt;/a&gt; or &lt;a href=&quot;http://planet.python.org/&quot;&gt;Planet Python&lt;/a&gt; and rarely visit the website.&lt;br /&gt;
&lt;br /&gt;
It's interesting to note that of the most popular articles in 2009 (most page views) several of them are to do with choice of IDE or using IronPython with Visual Studio. The question of which IDE to use with IronPython is still alive and well:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/05/new-sample-writing-dlr-language-in-c-or.html&quot;&gt;New Sample: Writing a DLR Language in C# or IronPython&lt;/a&gt;  (May 2009, 1892 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/05/ironpython-in-sharpdevelop-31-and.html&quot;&gt;IronPython in SharpDevelop 3.1 and Converting C# to IronPython&lt;/a&gt;  (May 2009, 1412 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2008/12/c-becomes-dynamic-language.html&quot;&gt;C# Becomes a Dynamic Language...&lt;/a&gt;  (December 2008, 1164 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/02/python-is-easiest-language-in-which-to.html&quot;&gt;Python is the easiest language in which to do interesting things&lt;/a&gt;  (February 2009, 1150 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/06/python-support-in-visual-studio.html&quot;&gt;Python Support in Visual Studio&lt;/a&gt;  (June 2009, 1119 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/07/another-ide-for-ironpython-eclipse-and.html&quot;&gt;Another IDE for IronPython? Eclipse and PyDev&lt;/a&gt;  (July 2009, 1077 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/01/davys-ironpython-editor.html&quot;&gt;Davy's IronPython Editor&lt;/a&gt;  (January 2009, 1032 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/01/jeff-hardy-django-zlib-and-easyinstall.html&quot;&gt;Jeff Hardy: Django, Zlib and easy_install on IronPython&lt;/a&gt; (January 2009, 949 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/03/writing-ironpython-debugger.html&quot;&gt;Writing an IronPython Debugger&lt;/a&gt;  (March 2009, 816 page views)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython-urls.blogspot.com/2008/09/running-python-from-c.html&quot;&gt;Running Python from C#&lt;/a&gt;  (September 2008, 789 page views)&lt;/li&gt;
&lt;/ol&gt;My recent post &lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/12/does-microsoft-take-dynamic-languages.html&quot;&gt;Does Microsoft Take Dynamic Languages Seriously&lt;/a&gt; looks a bit at how much work it would be to get IronPython support in Visual Studio, and there have been a couple of interesting posts on this topic since. IDEs and IronPython is a topic that is likely to continue to be of interest in 2010 as well.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-8044910760637303761?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/_gYo-W8QAvvXtnTJ3REwm1fippI/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/_gYo-W8QAvvXtnTJ3REwm1fippI/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/_gYo-W8QAvvXtnTJ3REwm1fippI/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/_gYo-W8QAvvXtnTJ3REwm1fippI/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=uMZra-w7lo0:9gKnrmr69pY:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=uMZra-w7lo0:9gKnrmr69pY:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=uMZra-w7lo0:9gKnrmr69pY:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=uMZra-w7lo0:9gKnrmr69pY:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=uMZra-w7lo0:9gKnrmr69pY:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/uMZra-w7lo0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: New Year's Python Meme</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/IElYt3kyvi4/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/IElYt3kyvi4/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-04T14:31:39+00:00</updated>
		<content type="html">This is the blog entry I had nearly finished when I started messing around with Mock on Saturday. Started by Tarek Ziade, five short questions on you and Python in 2009 (or in this case me and Python)... ... [1050 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=IElYt3kyvi4:kY-DWMKLO1E:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=IElYt3kyvi4:kY-DWMKLO1E:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=IElYt3kyvi4:kY-DWMKLO1E:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=IElYt3kyvi4:kY-DWMKLO1E:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=IElYt3kyvi4:kY-DWMKLO1E:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=IElYt3kyvi4:kY-DWMKLO1E:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=IElYt3kyvi4:kY-DWMKLO1E:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/IElYt3kyvi4&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Python Surprises</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/5-jT0opN5Yw/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/5-jT0opN5Yw/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-04T12:16:12+00:00</updated>
		<content type="html">In the last few days I've run into several things I didn't know about Python. Not necessarily bad or wrong, just new to me. ... [593 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=5-jT0opN5Yw:V3LR3R5Z8SY:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=5-jT0opN5Yw:V3LR3R5Z8SY:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=5-jT0opN5Yw:V3LR3R5Z8SY:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=5-jT0opN5Yw:V3LR3R5Z8SY:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=5-jT0opN5Yw:V3LR3R5Z8SY:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=5-jT0opN5Yw:V3LR3R5Z8SY:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=5-jT0opN5Yw:V3LR3R5Z8SY:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/5-jT0opN5Yw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">tech-michael: Silverlight 4 Communicating with Matlab</title>
		<link href="http://feedproxy.google.com/~r/MichaelsRandomTechnologyPosts/~3/0YRi7WTDClM/silverlight-communicating-with-matlab.html"/>
		<id>tag:blogger.com,1999:blog-6355218471395609447.post-4435710026368438223</id>
		<updated>2010-01-03T21:55:00+00:00</updated>
		<content type="html">&lt;p&gt;I have taken it on myself to try and expand and inspire people’s view of what a web application can do.  In this installment I’m leveraging Silverlight 4 and Matlab to build a simple Matlab console.&lt;/p&gt;  &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c15b7088-2e11-4510-bc44-f9a60644e69e&quot; style=&quot;padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px;&quot;&gt;&lt;div id=&quot;10423d91-23cf-42ba-8d5b-486cb5b8edab&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=p5e4GqhjYNE&quot; target=&quot;_new&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://lh4.ggpht.com/_9gNP2BoIX5o/S0ESQK8ai_I/AAAAAAAAAWs/QcMqUTigmdk/videobb9556065d97%5B8%5D.jpg?imgmax=800&quot; style=&quot;border-style: none;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Again I am using COM automation to communicate with Silverlight.  Why would anyone want to do this? Well, I’m slowly porting some Matlab code to c# so it is nice to check my code by communicating with Matlab.  Matlab also has an insane amount of its own functions so if you wanted to build a neural network but use Silverlight to display and distribute your code then Silverlight 4 is for you!&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Interop;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;namespace &lt;/span&gt;SLMatlab&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue;&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af;&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;matlab;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            input.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            output.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            Install.Visibility = &lt;span style=&quot;color: #2b91af;&quot;&gt;Visibility&lt;/span&gt;.Collapsed;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;.Current.InstallState != &lt;span style=&quot;color: #2b91af;&quot;&gt;InstallState&lt;/span&gt;.Installed)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;To run this, this application must be installed, Please click install.&quot;&lt;/span&gt;);&lt;br /&gt;                Install.Visibility = &lt;span style=&quot;color: #2b91af;&quot;&gt;Visibility&lt;/span&gt;.Visible;&lt;br /&gt;                Connect.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;else if &lt;/span&gt;(!&lt;span style=&quot;color: #2b91af;&quot;&gt;Application&lt;/span&gt;.Current.IsRunningOutOfBrowser)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;This application is installed but is running inside the browser. Please launch this from the desktop!&quot;&lt;/span&gt;);&lt;br /&gt;                Connect.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;Connect_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;try&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                matlab = &lt;span style=&quot;color: #2b91af;&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Matlab.Application&quot;&lt;/span&gt;);&lt;br /&gt;                matlab.Visible = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;                input.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;                output.IsEnabled = &lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;catch &lt;/span&gt;{ }&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;input_KeyDown(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;KeyEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;try&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(e.Key == &lt;span style=&quot;color: #2b91af;&quot;&gt;Key&lt;/span&gt;.Enter)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;result = matlab.Execute(input.Text);&lt;br /&gt;                    input.Text = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;                    output.Text = result.ToString() + &lt;span style=&quot;color: #2b91af;&quot;&gt;Environment&lt;/span&gt;.NewLine + output.Text;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;catch &lt;/span&gt;{ }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;Install_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;App&lt;/span&gt;.Current.Install();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;UserControl &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;SLMatlab.MainPage&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Ignorable&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;d&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;DesignHeight&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;300&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;DesignWidth&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;400&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;LayoutRoot&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;White&quot;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;*&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Install&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Install&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;0&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Install_Click&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Connect&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Connect&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Connect_Click&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;input&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;2&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;KeyDown&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;input_KeyDown&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;output&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;3&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;UserControl&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6355218471395609447-4435710026368438223?l=tech-michael.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/MichaelsRandomTechnologyPosts/~4/0YRi7WTDClM&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael (noreply@blogger.com)</name>
			<uri>http://tech-michael.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Mocking Magic Methods and Preserving Function Signatures Whilst Mocking</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/QJxXvptMMT0/arch_d7_2010_01_02.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/QJxXvptMMT0/arch_d7_2010_01_02.shtml</id>
		<updated>2010-01-03T00:35:50+00:00</updated>
		<content type="html">So, I'm most of the way through one blog entry, my tax return is due, I have a PyCon talk to write and I have a release of ConfigObj [1] just waiting for me to finish updating the docs. Naturally then I should mess around implementing new features for Mock. ... [1166 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=QJxXvptMMT0:mLQt1LwxLkk:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=QJxXvptMMT0:mLQt1LwxLkk:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=QJxXvptMMT0:mLQt1LwxLkk:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=QJxXvptMMT0:mLQt1LwxLkk:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=QJxXvptMMT0:mLQt1LwxLkk:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=QJxXvptMMT0:mLQt1LwxLkk:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=QJxXvptMMT0:mLQt1LwxLkk:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/QJxXvptMMT0&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython Cookbook (New Entries): Random String Generation</title>
		<link href="http://www.ironpython.info/index.php/Random_String_Generation"/>
		<id>http://www.ironpython.info/index.php/Random_String_Generation</id>
		<updated>2010-01-02T16:45:56+00:00</updated>
		<content type="html">&lt;p&gt;Jcao219: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can use System.Guid to easily generate a random string in IronPython.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from System import Guid&lt;br /&gt;
myguid = Guid.NewGuid()&lt;br /&gt;
print myguid.ToString('N')&lt;br /&gt;
raw_input()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ToString() can take these strings as a parameter:&amp;lt;br /&amp;gt;&lt;br /&gt;
*'N'&amp;lt;br /&amp;gt;&lt;br /&gt;
32 digits:&amp;lt;br /&amp;gt;&lt;br /&gt;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*'D'&amp;lt;br /&amp;gt;&lt;br /&gt;
32 digits separated by hyphens:&amp;lt;br /&amp;gt;&lt;br /&gt;
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*'B'&amp;lt;br /&amp;gt;&lt;br /&gt;
32 digits separated by hyphens, enclosed in brackets:&amp;lt;br /&amp;gt;&lt;br /&gt;
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
*'P'&amp;lt;br /&amp;gt;&lt;br /&gt;
32 digits separated by hyphens, enclosed in parentheses:&amp;lt;br /&amp;gt;&lt;br /&gt;
(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to [[Contents]].&lt;/div&gt;</content>
		<author>
			<name>Jcao219</name>
			<uri>http://www.ironpython.info/index.php/Special:NewPages</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: A Good Mix 34: Silverlight Logging, WPF and NotifyIcon, more Python and Ruby and pickling Python books</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/Neg_9P6D6yw/good-mix-34-silverlight-logging-wpf-and.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-4716352901291004083</id>
		<updated>2009-12-31T22:04:38+00:00</updated>
		<content type="html">Another collection of IronPython and DLR related articles from around the web. A fine way to end 2009.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://bitbucket.org/bwmcadams/slog/&quot;&gt;SLog: Silverlight Logging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;A nascent project to Port Log(4|5)J from Java to C# with the goal of usefulness in Silverlight, especially for IronPython. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://palepoli.skr.jp/wp/2009/12/01/ironpython-%E3%81%B8%E3%81%AE%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91/&quot;&gt;A WPF Picture Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://palepoli.skr.jp/wp/2009/12/31/notifyicon-to-use-from-ironpython/&quot;&gt;NotifyIcon to use from IronPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; Two Japanese blog entries, both by sasakima-nao. As with previous entries the code examples are very readable. The first is a simple WPF picture viewer (nice penguins) and the second shows how to create a &lt;span&gt;NotifyIcon&lt;/span&gt; and &lt;span&gt;ContextMenu&lt;/span&gt; in the taskbar (with Windows Forms classes).&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://roinet.net/2009/12/08/python-ruby-interop/&quot;&gt;Python-Ruby (and a little bit of soap)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;This blog entry is in Russian, but I think there are enough code examples for it to be useful for those of us who don't speak Russian. As I've mentioned before the promise of the Dynamic Language Runtime is that dynamic languages can interoperate and share libraries. This is exactly what this blog entry shows: using the Ruby &lt;a href=&quot;http://ruby-doc.org/core/classes/SOAP.html&quot;&gt;soap/wsdlDriver&lt;/a&gt; from Python.&lt;br /&gt;
&lt;br /&gt;
The cool thing is that this is done with a helper / wrapper library, that looks like it could be used to expose virtually any Ruby module / class that can be accessed through IronRuby to IronPython. Using his ruby module, the code looks like this:&lt;br /&gt;
&lt;blockquote&gt;&lt;span&gt;from ruby import _import_, get_class&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;_import_('soap/wsdlDriver')&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;Soap = get_class('SOAP::WSDLDriverFactory')&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span&gt;client = Soap('http://localhost1/Service1.asmx?WSDL').create_rpc_driver()&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;client.HelloWorld(None)&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://mmcelhaney-my-gadgets.blogspot.com/2009/12/ive-been-bitten-byiron-python.html&quot;&gt;I've Been Bitten By... IronPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Marcus McElhaney has discovered IronPython and likes it. The reasons he gives are:&lt;br /&gt;
&lt;blockquote&gt;1. I can very easy use everything I know about the .Net Framework, VB.Net, and  C#&lt;br /&gt;
2. I can run IronPython in Visual Studio&lt;br /&gt;
3. I can reference ESRI's  ArcObjects libraries in  Visual Studio and IronPython&lt;br /&gt;
&lt;/blockquote&gt;What's even more gratifying is that he has been exploring IronPython through &lt;a href=&quot;http://www.ironpythoninaction.com/&quot;&gt;IronPython in Action&lt;/a&gt; and likes that too. A slight misspelling gives rise to my favourite quote about IronPython in Action:&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;IronPython In Action is probably the best Python book I have ever pickled up because it also explains a lot of not just Python but also about .Net.&lt;/i&gt;&lt;br /&gt;
&lt;/blockquote&gt;If any book deserved to be pickled up, this is it... Have a great 2010.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-4716352901291004083?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/L__G3C2_fGfYPTCWfAC3nAzKcqM/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/L__G3C2_fGfYPTCWfAC3nAzKcqM/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/L__G3C2_fGfYPTCWfAC3nAzKcqM/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/L__G3C2_fGfYPTCWfAC3nAzKcqM/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=Neg_9P6D6yw:2rM_Em7tz0g:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=Neg_9P6D6yw:2rM_Em7tz0g:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=Neg_9P6D6yw:2rM_Em7tz0g:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=Neg_9P6D6yw:2rM_Em7tz0g:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=Neg_9P6D6yw:2rM_Em7tz0g:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/Neg_9P6D6yw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): How hard is it to add IronPython support to Visual Studio?</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/tvxgwKsZbVs/how-hard-is-it-to-add-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-7193305805613596273</id>
		<updated>2009-12-31T15:19:37+00:00</updated>
		<content type="html">&lt;p&gt;Hard. &lt;em&gt;Very&lt;/em&gt; hard.&lt;/p&gt;&lt;p&gt;Michael Foord has a good post about &lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/12/does-microsoft-take-dynamic-languages.html&quot;&gt;whether Microsoft cares about dynamic languages&lt;/a&gt;. Some people [who?] believe that because IronPython/IronRuby don't have full support in Visual Studio 2010 that Microsoft doesn't care about dynamic languages.&lt;/p&gt;&lt;p&gt;I think I can safely say that adding full, high-quality support for IronPython to Visual Studio would require at least a couple of man-years of work. The rabbit hole goes pretty deep when you consider all of the functionality that VS offers, not to mention the difficulty of doing IntelliSense well. I estimate they'd have to at least double the IronPython team to get full support into VS11. IronRuby would require the same commitment.&lt;/p&gt;&lt;p&gt;Also, IronPython and IronRuby have only recently got to the point where I would consider them production-ready. Thus, getting IronRuby or IronPython into VS2010 was never realistic.&lt;/p&gt;&lt;p&gt;Now, if they don't have some support in VS11 (VS2012?), well, that's a different story. At least the &lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/&quot;&gt;IronPython extensions&lt;/a&gt; should be pretty mature by then.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-7193305805613596273?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/tvxgwKsZbVs&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): NWSGI 2.0 Release</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/81kwSiyTBWU/nwsgi-20-release.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-1306640373347400386</id>
		<updated>2009-12-30T17:56:48+00:00</updated>
		<content type="html">&lt;p&gt;I'm very pleased to announce the release of the &lt;a href=&quot;http://nwsgi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29348&quot;&gt;final version of NWSGI 2.0&lt;/a&gt;. It's been a long road since it was first shown as &quot;NWSGI 1.1 Preview1&quot; way back in March. Since then most of the code has been overhauled to make maintenance easier and improve performance. IronPython has also come  a long way; the 2.6 release is a fantastic piece of work with much better performance and compatibility than 2.0. Both IronPython and NWSGI are reaching the point where it will soon be feasible to run most Python web apps with little to no modification – I'm hoping by this time next year that everything will &quot;just work&quot;.&lt;/p&gt;  &lt;h4&gt;What's New&lt;/h4&gt;  &lt;p&gt;NWSGI 2.0 is mostly a lot of little changes that add up to a much better experience:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-configuration-changes.html&quot;&gt;Easier configuration&lt;/a&gt;: In v1.0 there were different ways to configure NWSGI depending on your configuration. Now there is only one way to do it. The ambiguous options with multiple meanings are gone, and new options added to support the extra optional features of IronPython 2.6. &lt;/li&gt;    &lt;li&gt;Better management UI: The new management UI is both easier to use and easier to maintain. &lt;/li&gt;    &lt;li&gt;Performance improvements: NWSGI will now cache the WSGI callable and associated modules instead of reloading it each time. IronPython 2.6 is also much faster then 2.0. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;More Information&lt;/h4&gt;  &lt;p&gt;My blog posts from earlier in the year are still relevant:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-installation-usage.html&quot;&gt;Installation &amp;amp; Usage&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-configuration-changes.html&quot;&gt;Configuration Changes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-configuration-details.html&quot;&gt;Configuration Details&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-dispatching.html&quot;&gt;Disptaching&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://jdhardy.blogspot.com/2009/06/nwsgi-20-advanced-dispatching.html&quot;&gt;Advanced Dispatching&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/07/nwsgi-20-removing-url-warts.html&quot;&gt;Removing URL Warts&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I'll be moving the information in these over to Codeplex soon, so that it's easier to find.&lt;/p&gt;  &lt;h4&gt;&lt;/h4&gt;  &lt;p&gt;Please let me know what you think of the new release, and what it's being used for – I'm always curious to hear what people think. &lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-1306640373347400386?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/81kwSiyTBWU&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Does Microsoft take Dynamic Languages Seriously?</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/R_UvThYHGsc/does-microsoft-take-dynamic-languages.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-4980023736222734058</id>
		<updated>2009-12-30T17:28:16+00:00</updated>
		<content type="html">My belief is that the answer to the question in the title of this entry is an emphatic yes. Microsoft have poured a lot of money into IronPython, IronRuby and the Dynamic Language Runtime and have demonstrated a consistent commitment since the inception of IronPython. What they haven't done is build full support into their premier development tool, Visual Studio. The reason for this is that it is a very &lt;i&gt;difficult&lt;/i&gt; problem. Visual Studio is built around statically typed languages. Features like intellisense, refactoring and code navigation all rely on having type information which is absent in languages like Python and Ruby. (The way they are implemented in Visual Studio requires that information I mean.)&lt;br /&gt;
&lt;br /&gt;
What Microsoft have done is provide example integration in the form of IronPython Studio, which &lt;a href=&quot;http://www.voidspace.org.uk/ironpython/tools-and-ides.shtml&quot;&gt;frankly sucks&lt;/a&gt;. Many important features are fragile, broken or missing altogether. Good IDEs like PyDev and Wing do provide these features, so it is definitely possible - it just requires a lot of work from scratch.&lt;br /&gt;
&lt;br /&gt;
Microsoft have however added &lt;a href=&quot;http://blogs.msdn.com/bursteg/archive/2009/06/05/getting-started-with-jquery-in-visual-studio-2008.aspx&quot;&gt;intellisense for Javascript&lt;/a&gt;, particularly for jQuery, into Visual Studio. Javascript is of course a dynamic language, but without having tried the integration I can't tell you how well it compares to using a good Python IDE. I believe that Microsoft would &lt;i&gt;like&lt;/i&gt; to add support for dynamic languages to Visual Studio and that it &lt;i&gt;will&lt;/i&gt; come eventually. Really they have a lot to lose by not doing it.&lt;br /&gt;
&lt;br /&gt;
Now they have a good platform for dynamic developers to use, which they give away free, but the tools they charge for don't really support them. This puts them in a position of either bringing developers to their platform but not being able to make any money, or having their existing developers stay with their platform but losing dependence on the toolset. Neither option looks much good for Microsoft.&lt;br /&gt;
&lt;br /&gt;
(&lt;b&gt;NOTE:&lt;/b&gt; for those who can't wait for official Microsoft support and have Visual Studio 2010, try Jeff Hardy's &lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/downloads/&quot;&gt;IronPython for Visual Studio Extensions&lt;/a&gt;.)&lt;br /&gt;
&lt;br /&gt;
Anyway, K. Scott Allen sees things a little differently and I understand his frustration:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href=&quot;http://odetocode.com/Blogs/scott/archive/2009/11/23/is-microsoft-taking-dynamic-languages-seriously.aspx&quot;&gt;Is Microsoft taking Dynamic Languages Seriously?&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;Consider this …&lt;br /&gt;
&lt;br /&gt;
IronPython got underway in July of 2004. Five years later it appears IronPython is still not a candidate to be a first class language in the .NET framework and tools. You can &lt;a href=&quot;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=475830&quot;&gt;vote on this issue&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Microsoft first released IronRuby at Mix in 2007. Nearly three years later it appears IronRuby is still not a candidate to be a first class language in the .NET framework and tools. You can &lt;a href=&quot;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=479957&quot;&gt;vote on this issue&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
A first class language is deployed when the full .NET framework is installed. It’s as easy to find as &lt;span&gt;csc.exe&lt;/span&gt;. It’s not a language you have to ask the IT department to install separately. It’s not a language that requires you to jump out of Visual Studio to edit or run.&lt;br /&gt;
&lt;br /&gt;
Most of all, a first class language doesn’t require justification to higher powers. A first class language is pre-certified and stamped with a seal of approval. It’s as easy to use in the locked-down big corporate setting as the company paper shredder.&lt;br /&gt;
&lt;/blockquote&gt;Of course here we are talking about Microsoft as if it was a single entity with a single intention. The reality of course is that Microsoft is a huge company with many divisions and even more individuals working there. In all likelihood the vast majority of Microsoft employees have never heard of IronPython. The &lt;i&gt;relevant&lt;/i&gt; division is the programming languages group, which includes Visual Studio development, and where the majority of employees who are developers probably have heard of IronPython if not actually used it... Adding official dynamic languages support to Visual Studio would require substantial investment of time and effort, so even if everyone in this department was determined to add support it would still be dependent on forces from other parts of the company who have other needs and priorities...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-4980023736222734058?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/mZ1pperZchb1wJE4zf8YpWAmSPA/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/mZ1pperZchb1wJE4zf8YpWAmSPA/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/mZ1pperZchb1wJE4zf8YpWAmSPA/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/mZ1pperZchb1wJE4zf8YpWAmSPA/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=R_UvThYHGsc:yUluII8uAdk:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=R_UvThYHGsc:yUluII8uAdk:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=R_UvThYHGsc:yUluII8uAdk:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=R_UvThYHGsc:yUluII8uAdk:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=R_UvThYHGsc:yUluII8uAdk:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/R_UvThYHGsc&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jeff Hardy's Blog (NWSGI): IronPython Extensions for Visual Studio 0.4</title>
		<link href="http://feedproxy.google.com/~r/JeffHardysBlog/~3/I30TExWVxjw/ironpython-extensions-for-visual-studio.html"/>
		<id>tag:blogger.com,1999:blog-597261753977781.post-4201239435903221691</id>
		<updated>2009-12-30T16:07:59+00:00</updated>
		<content type="html">&lt;p&gt;Last week I uploaded &lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/downloads/&quot;&gt;version 0.4 of the IronPython Extensions for Visual Studio&lt;/a&gt; to BitBucket and the &lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/a0ffaffc-d1c2-4b6c-a9d1-3addc37a5673&quot;&gt;Visual Studio Gallery&lt;/a&gt;. This release includes a couple of new features and some minor performance improvements to the old features.&lt;/p&gt;  &lt;h4&gt;What's New&lt;/h4&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;Squiggles! The editor will now underline inconsistent tabs (mixing tabs and spaces) and syntax errors. It doesn't currently display a tooltip explaining what the underline is for, or offer any automatic fixes, but those should be coming soon.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_RAOuCQw0XUY/Szt6213YO9I/AAAAAAAAACc/h7BHuP28sm8/s1600-h/error-squiggles%5B3%5D.png&quot;&gt;&lt;img alt=&quot;error-squiggles&quot; border=&quot;0&quot; height=&quot;154&quot; src=&quot;http://lh4.ggpht.com/_RAOuCQw0XUY/Szt63K1YYRI/AAAAAAAAACg/DA4XNFSwwW0/error-squiggles_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;error-squiggles&quot; width=&quot;232&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Also new is an interactive console for use in Visual Studio. The advantage this has over a normal IronPython console is that it will syntax-highlight the console history. Eventually I'd like to have it pull the colour scheme from the editor.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_RAOuCQw0XUY/Szt63YE2ZoI/AAAAAAAAACk/ZvD_W2FYONg/s1600-h/console-0.4%5B12%5D.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;IronPython Interactive Console&quot; border=&quot;0&quot; height=&quot;72&quot; src=&quot;http://lh5.ggpht.com/_RAOuCQw0XUY/Szt63qQLgvI/AAAAAAAAACo/5vF0XiPIGnY/console-0.4_thumb%5B10%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;IronPython Interactive Console&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;What Else is Included&lt;/h4&gt;  &lt;p&gt;This release includes the features of the &lt;a href=&quot;http://jdhardy.blogspot.com/2009/11/ironpython-extensions-for-visual-studio.html&quot;&gt;previous release&lt;/a&gt; – syntax highlighting and outlining of classes and functions – but I've improved the performance of both to make the editor a little snappier (not much, mind you – ever try running a profiler on all of Visual Studio?).&lt;/p&gt;  &lt;h4&gt;What's Next&lt;/h4&gt;  &lt;p&gt;Besides some minor changes to all of the existing features that I'd like to make, there are two big pieces missing: a project system and IntelliSense. IntelliSense is the more interesting of the two, so I think I'm going to tackle it next. If anyone wants to tackle the project system, let me know and I'll give you some pointers.&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/597261753977781-4201239435903221691?l=jdhardy.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/JeffHardysBlog/~4/I30TExWVxjw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>jdhardy (jdhardy@gmail.com)</name>
			<uri>http://jdhardy.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Ironclad 2.6 and Spare Batteries for IronPython</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/sDyfQTNyR_M/ironclad-26-and-spare-batteries-for.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-3705552752487906905</id>
		<updated>2009-12-30T15:27:13+00:00</updated>
		<content type="html">&lt;a href=&quot;http://code.google.com/p/ironclad/&quot;&gt;Ironclad&lt;/a&gt; is a compatibility layer that allows you to use Python C extensions with IronPython. Ironclad is open source and development has been funded by &lt;a href=&quot;http://www.resolversystems.com/&quot;&gt;Resolver Systems&lt;/a&gt; and it is integrated into Resolver One to allow you to &lt;a href=&quot;http://www.resolversystems.com/screencasts/numpy/&quot;&gt;use Numpy within Resolver One spreadsheets&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Ironclad works by implementing the Python C API in a combination of C#, C and Python. Although Ironclad only works on 32 bit Windows at the moment the implementation has been done in such a way that porting it to run on other platforms (with Mono) and 64 bit would be &lt;i&gt;relatively&lt;/i&gt; easy. Patches welcomed!&lt;br /&gt;
&lt;br /&gt;
Recent development has changed the implementation to use &lt;a href=&quot;http://www.gccxml.org/&quot;&gt;gcc-xml&lt;/a&gt; to access and transform the Python C source code. By reusing as much of the original implementation as possible it minimizes the amount that needs to be 'hand-coded'. It leaves only a (moderately) small core that would need to be reimplemented if Jython, PyPy (or other implementations) wanted to reuse Ironclad. The C# would need to be re-coded in Java or RPython, using the platform's native FFI instead of PInvoke on .NET. The advantage of reusing Ironclad is that difficult problems, like handling the Global Interpreter Lock and matching reference counting to different garbage collection strategies, are already solved (well, for some value of solved...).&lt;br /&gt;
&lt;br /&gt;
Anyway, that is all by way of introduction. William Reade, core developer of Ironclad, has just announced Ironclad 2.6 RC. This is a release candidate of Ironclad targeting IronPython 2.6.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://lists.ironpython.com/pipermail/users-ironpython.com/2009-December/011870.html&quot;&gt;Ironclad 2.6.0rc1 released&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;I'm very happy to announce the latest release (candidate) of Ironclad, the 120-proof home-brewed CPython compatibility layer, now available for IronPython 2.6!&lt;br /&gt;
&lt;br /&gt;
No longer need .NET pythonistas toil thanklessly without the benefits of &lt;span&gt;bz2&lt;/span&gt;, &lt;span&gt;csv&lt;/span&gt;, &lt;span&gt;numpy&lt;/span&gt; and &lt;span&gt;scipy&lt;/span&gt;: with a simple '&lt;span&gt;import ironclad&lt;/span&gt;', (most parts of) the above packages -- and many more -- will transparently Just Work.&lt;br /&gt;
&lt;br /&gt;
Get the package from:&lt;br /&gt;
    &lt;a href=&quot;http://code.google.com/p/ironclad/&quot;&gt;http://code.google.com/p/ironclad/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
...and get support from:&lt;br /&gt;
    &lt;a href=&quot;http://groups.google.com/group/c-extensions-for-ironpython&quot;&gt;http://groups.google.com/group/c-extensions-for-ironpython&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
...or just ask me directly.&lt;br /&gt;
&lt;br /&gt;
I'm very keen to hear your experiences, both positive and negative; I haven't been able to test it on as many machines as I have in the past, so your feedback is especially important this time round*.&lt;br /&gt;
&lt;br /&gt;
Cheers&lt;br /&gt;
William&lt;br /&gt;
&lt;br /&gt;
* I'd be especially grateful if someone with a newish multicore machine would run the numpy and scipy test scripts (included in the source distrbution) a few times to check for consistent results and absence of weird crashes; if someone volunteers, I'll help however I can.&lt;br /&gt;
&lt;/blockquote&gt;William has recently started blogging. I recommend browsing the few entries he has already posted, particularly this &lt;a href=&quot;http://foolish-assertions.blogspot.com/2009/01/more-foolishness-now-with-added.html&quot;&gt;rant on static typing&lt;/a&gt; and this post on &lt;a href=&quot;http://foolish-assertions.blogspot.com/2009/09/net-marshalling-mildly-sarcastic-q.html&quot;&gt;.NET marshalling&lt;/a&gt;, but his latest is of particular interest:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://foolish-assertions.blogspot.com/2009/12/spare-batteries-for-ironpython.html&quot;&gt;Spare batteries for IronPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;As we all know, Python comes with batteries included in the form of a rich standard library; and, on top of this, there are many awesome and liberally-licensed packages just an &lt;span&gt;easy_install&lt;/span&gt; away.&lt;br /&gt;
&lt;br /&gt;
IronPython, of course, includes *most* of the CPython standard library, but if you're a heavy user you might have noticed a few minor holes: in the course of my work on Ironclad, I certainly have. Happily for you I can vaguely remember what I did in the course of bodging them closed with cow manure and chewing gum; here then, for your edification and delectation, is my personal recipe for a delicious reduced-hassle IronPython install, with access to the best and brightest offered by CPython, on win32. &lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-3705552752487906905?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/zg-2FjbXpAN1HRmblFLw5VPKhd8/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/zg-2FjbXpAN1HRmblFLw5VPKhd8/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/zg-2FjbXpAN1HRmblFLw5VPKhd8/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/zg-2FjbXpAN1HRmblFLw5VPKhd8/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=sDyfQTNyR_M:ZsjcR5mANbY:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=sDyfQTNyR_M:ZsjcR5mANbY:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=sDyfQTNyR_M:ZsjcR5mANbY:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=sDyfQTNyR_M:ZsjcR5mANbY:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=sDyfQTNyR_M:ZsjcR5mANbY:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/sDyfQTNyR_M&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: A Good Mix 33: Embedding Python and Ruby, Profiling IronPython, News on JScript, ctypes and DeviantArt</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/802NiTTDzDE/good-mix-33-embedding-python-and-ruby.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-7599541517272773368</id>
		<updated>2009-12-29T11:58:32+00:00</updated>
		<content type="html">More IronPython and DLR related projects, articles and news from around the web.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.randallsutton.net/post/Embedded-IronRuby-and-IronPython-in-Silverlight-with-Multiple-Sources-Files.aspx&quot;&gt;Embedded IronRuby and IronPython in Silverlight with Multiple Source Files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;A  nice example of embedding &lt;i&gt;both&lt;/i&gt; IronPython &lt;i&gt;and&lt;/i&gt; IronRuby in a single C# project. As an added bonus the project is a Silverlight project so you can add both Python and Ruby scripting to applications that run in the browser.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/slimtune/&quot;&gt;slimtune: A free profiling and performance tuning tool for .NET applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;IronPython 2.6 has useful new hooks for profiling and debugging IronPython code. Unfortunately most 'standard' .NET tools don't know how to use these, and if you attempt to profile IronPython code (particularly in an embedded environment) you have to work hard to get useful information about performance of your Python code. It's nice to see a new (and open source) tool that is designed to work with IronPython:&lt;br /&gt;
&lt;blockquote&gt;SlimTune is a free profiler and performance analysis/tuning tool for .NET based applications, including C#, VB.NET, IronPython, and more. It provides many powerful features, such as remote profiling, real time results, multiple plugin-based visualizations, and much more. The source code is available under the terms of the MIT License.&lt;br /&gt;
&lt;br /&gt;
SlimTune is currently in the prototyping phase of development, but a preview release is available for testing and feedback is welcome. Both x86 and x64 targets are supported, but only sampling based profiling is available in the release.&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dlr.codeplex.com/Thread/View.aspx?ThreadId=58121&quot;&gt;Future of Managed JScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;When IronPython 2 and the Dynamic Language Runtime were announced one of the &lt;i&gt;three&lt;/i&gt; Microsoft developed languages that ran on the DLR was JScript. Managed JScript was an implementation of ECMAScript (otherwise known as Javascript) and touted as a useful bridge for porting 'traditional-ajax' applications to run on Silverlight. Unfortunately as the DLR evolved JScript languished and there was no official word on its fate.&lt;br /&gt;
&lt;br /&gt;
In this post on the DLR Codeplex forum Bill Chiles (DLR Program Manager) gives the bad news:&lt;br /&gt;
&lt;blockquote&gt;The DLR JScript was experimental for informing the design of the DLR (expression trees, interop, callsites, hosting, etc.).  The JS we released with asp futures and the Silverlight dynamic sdk became very old and unserviceable as the DLR continued evolving for release in CLR 4.0.  Unfortunately, there are no plans at this time to develop and release a DLR-hostable JScript.&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://palepoli.skr.jp/wp/2009/11/23/ironpython-shgetfileinfow-is-ctypes/&quot;&gt;IronPython SHGetFileInfoW is ctypes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;A Japanese blog entry showing example code using the new implementation of &lt;a href=&quot;http://docs.python.org/library/ctypes.html&quot;&gt;ctypes&lt;/a&gt; in IronPython 2.6. ctypes is the Python FFI and in IronPython it is built on top of &lt;a href=&quot;http://www.pinvoke.net/&quot;&gt;PInvoke&lt;/a&gt;, the .NET FFI. ctypes is used for calling into native code, like the Win32 API. Calls &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb762179%28VS.85%29.aspx&quot;&gt;SHGetFileInfoW&lt;/a&gt;, which &quot;&lt;i&gt;Retrieves information about an object in the file system, such as a file, folder, directory, or drive root&lt;/i&gt;.&quot;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://ironpython.deviantart.com/&quot;&gt;IronPython on deviantART&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;No idea what this has to do with the implementation of Python for .NET, but IronPython is the username of someone on the alternative community art site deviantART. Some pretty nice computer generated art, and who knows - maybe they were created from Python...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-7599541517272773368?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Sbe1GwJgiff282GjzmYvNuaNRnQ/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Sbe1GwJgiff282GjzmYvNuaNRnQ/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Sbe1GwJgiff282GjzmYvNuaNRnQ/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Sbe1GwJgiff282GjzmYvNuaNRnQ/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=802NiTTDzDE:tZIuAg7gtwU:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=802NiTTDzDE:tZIuAg7gtwU:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=802NiTTDzDE:tZIuAg7gtwU:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=802NiTTDzDE:tZIuAg7gtwU:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=802NiTTDzDE:tZIuAg7gtwU:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/802NiTTDzDE&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Scripting Applications with IronPython (ADAM, Revit, AutoCAD &amp;amp; Postsharp)</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/FkoZ_O80_gw/scripting-applications-with-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-1869175078124282075</id>
		<updated>2009-12-29T11:37:26+00:00</updated>
		<content type="html">IronPython and the Dynamic Language Runtime make it almost ridiculously easy to add scripting to .NET applications.&lt;br /&gt;
&lt;br /&gt;
In recent weeks several examples of using IronPython to add scripting or interactive shells to .NET applications have been posted by the .NET community:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://through-the-interface.typepad.com/through_the_interface/2009/12/command-line-scripting-of-ironpython-code-in-autocad.html&quot;&gt;Command-line scripting of IronPython code in AutoCAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;This post was heavily inspired by the code presented by my old friend Albert Szilvasy during &lt;a href=&quot;http://au.autodesk.com/?nd=e_class&amp;amp;session_id=5164&quot;&gt;his excellent AU class on using .NET 4.0 with AutoCAD&lt;/a&gt;.&lt;br /&gt;
...&lt;br /&gt;
In this post we’ll take Albert’s technique and implement a command-line interface for querying and executing IronPython script. This approach could also be adapted to work with other DLR languages such as IronRuby, of course.&lt;br /&gt;
&lt;br /&gt;
Here’s the updated C# code which now not only implements PYLOAD functionality, but also a PYEXEC command.&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt; &lt;a href=&quot;http://www.thegrubbsian.com/2009/12/15/scriptability-via-the-dlr-and-postsharp/&quot;&gt;Scriptability via the DLR and PostSharp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt; Making an application scriptable (particularly in a static language) has historically been difficult. With the advent of the DLR (Dynamic Language Runtime) on the .NET platform it becomes almost trivial to add scripting support to any application. For a recent project I needed the ability to add scripting hooks throughout the application and coupling the DLR with PostSharp AOP attributes made this effort pretty straightforward. Here’s how it was done.&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://thebuildingcoder.typepad.com/blog/2009/12/revit-python-shell.html&quot;&gt;Revit Python Shell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://darenatwork.blogspot.com/2009/12/introducing-revitpythonshell.html&quot;&gt;Introducing RevitPythonShell &lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;According to &lt;a href=&quot;http://en.wikipedia.org/wiki/Revit&quot;&gt;wikipedia&lt;/a&gt;: &quot;&lt;i&gt;Autodesk Revit is Building Information Modeling software for Microsoft Windows, currently developed by Autodesk, which allows the user to design with parametric modeling and drafting elements.  Building Information Modeling is a Computer Aided Design (CAD) paradigm that allows for intelligent, 3D and parametric object-based design.&lt;/i&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
Jeremy Tavik blogs about working with the Revit API, and in this post he discusses a Python Shell for Revit that created by Daren Thomas with IronPython:&lt;br /&gt;
&lt;blockquote&gt; Daren Thomas of the Professur für Gebäudetechnik, Institut für Hochbautechnik at the technical university ETH Zürich has published a Python Shell for Revit. It was implemented using IronPython and is used to automate the running of daily tests of a building energy analysis package. Hosting IronPython via a Revit plug-in is a now solved problem. Daren's intention is to continue publishing samples of what you can do with it pretty regularly in the future.&lt;br /&gt;
&lt;br /&gt;
The source code is available under the GNU General Public License v3 from a Subversion repository on code.google.com. It is documented, though there is currently little other stand-alone documentation. One would probably want to look for the IExternalApplication entry point and go from there. What the application does is:&lt;br /&gt;
&lt;br /&gt;
Add a button to the Revit ribbon to start the python shell.&lt;br /&gt;
Execute a python script entered in a text box, with output going to a separate window. &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;Daren describes one of the main scripts like this: it &quot;&lt;i&gt;will open up an interactive interpreter loop known as a REPL that will let you explore the Revit API. And by explore, I mean type a statement, hit enter, see the results, carry on. It doesn't get easier as this!&lt;/i&gt;&quot;&lt;br /&gt;
&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blogs.adamsoftware.net/Engine/ScriptingADAMwithIronPython.aspx&quot;&gt;Scripting ADAM with IronPython&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;IronPython is an implementation of the Python language for the .NET framework, using the new Dynamic Language Runtime (DLR) as language services layer on top of the Common Language Runtime (CLR). The DLR's reusable hosting model makes it extremely suitable to add scripting capabilities to existing products. &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;In this post we'll create an ADAM command line utility that will allow us to run IronPython scripts against an ADAM application.&lt;br /&gt;
...&lt;br /&gt;
Our command line tool will expose a single command, RunScript, that will take in ADAM connection information and a path to a Python file to execute:&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-1869175078124282075?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/APfqU_EA5gmSTXyBYWxxCdlDXsI/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/APfqU_EA5gmSTXyBYWxxCdlDXsI/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/APfqU_EA5gmSTXyBYWxxCdlDXsI/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/APfqU_EA5gmSTXyBYWxxCdlDXsI/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=FkoZ_O80_gw:pn8vLl72Jyo:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=FkoZ_O80_gw:pn8vLl72Jyo:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=FkoZ_O80_gw:pn8vLl72Jyo:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=FkoZ_O80_gw:pn8vLl72Jyo:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=FkoZ_O80_gw:pn8vLl72Jyo:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/FkoZ_O80_gw&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Decoding json on Silverlight with System.Json (plus implicit conversion operators in IronPython)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/SZEnaBvMKvE/arch_d7_2009_12_26.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/SZEnaBvMKvE/arch_d7_2009_12_26.shtml</id>
		<updated>2009-12-28T22:56:22+00:00</updated>
		<content type="html">As I explained we're writing a Silverlight application that communicates with our Django server and exchanges a lot of json with it. Unfortunately, due to what is apparently just an oversight, the codecs module is incomplete for IronPython on Silverlight. ... [539 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=SZEnaBvMKvE:Jz90NWFurhE:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=SZEnaBvMKvE:Jz90NWFurhE:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=SZEnaBvMKvE:Jz90NWFurhE:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=SZEnaBvMKvE:Jz90NWFurhE:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=SZEnaBvMKvE:Jz90NWFurhE:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=SZEnaBvMKvE:Jz90NWFurhE:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=SZEnaBvMKvE:Jz90NWFurhE:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/SZEnaBvMKvE&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: PythonSilverScripting: Silverlight apps in the browser with Python</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/fhFfausHR68/pythonsilverscripting-silverlight-apps.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-5160742418827229411</id>
		<updated>2009-12-28T16:57:39+00:00</updated>
		<content type="html">Tarn Barford is an Australian blogger and programmer who uses IronPython. He's created a Google App Engine site for experimenting with IronPython in the browser (through Silverlight).&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pythonsilverscripting.appspot.com/&quot;&gt;PythonSilverScripting: Scripting Python Silverlight Applications&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;PythonSilverScripting lowers the barriers to building Silverlight applications so anyone from high school kids to seasoned programmers can have fun writing Silverlight applications in Python from within a browser!&lt;br /&gt;
&lt;br /&gt;
Below is a simple script that creates a Silverlight application, sets the background blue and adds a TextBlock element with the text &quot;Hello World&quot;.&lt;br /&gt;
&lt;/blockquote&gt;He's also blogged about the new site, including his future plans for it:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.sharpthinking.com.au/post/2009/12/02/Creating-Silverlight-apps-in-the-browser.aspx&quot;&gt;Creating Silverlight apps in the browser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;PythonSilverScripting is based on crazy idea I have that it should be possible to make Silverlight applications in Python on the web. No tools, no SDKs.. just a browser (and obviously the Silverlight browser plug-in). &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;I've played around a bit with Silverlight and Dynamic Languages here and there and thought it was probably possible. When I got a chance I looked into it and found I was able to build working XAPs by zipping up plain text IronPython code, the IronPython DLR assemblies, an xml application manifest file and all the additional resources such XAML, images and more source. &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;All I needed was a web server that could zip files. Google App Engine with Python is good fun and I was able to get this working prototype together in an evening. I'd like to build the features to support building bigger projects (more source files, XAML documents, images and assemblies). On the other hand I'd also like to build features to share, discuss and rate scripts. We'll see how it goes. &lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-5160742418827229411?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/VGiDv04gpRsWt8fBLwsSCGtxkUk/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/VGiDv04gpRsWt8fBLwsSCGtxkUk/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/VGiDv04gpRsWt8fBLwsSCGtxkUk/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/VGiDv04gpRsWt8fBLwsSCGtxkUk/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=fhFfausHR68:nM45g5jfdGc:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=fhFfausHR68:nM45g5jfdGc:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=fhFfausHR68:nM45g5jfdGc:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=fhFfausHR68:nM45g5jfdGc:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=fhFfausHR68:nM45g5jfdGc:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/fhFfausHR68&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Why IronPython Podcast and Best of MSDN Ebook</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/2xMhA73aDIA/why-ironpython-podcast-and-best-of-msdn.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-2160554936094778161</id>
		<updated>2009-12-28T16:33:46+00:00</updated>
		<content type="html">I recently wrote an article for the UK MSDN (Microsoft Developer Network) newsletter called &lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/12/why-ironpython.html&quot;&gt;Why IronPython?&lt;/a&gt; This article made it into the collection of the thirteen best technical articles of 2009:&lt;br /&gt;
&lt;br /&gt;
You can download these articles as a free ebook in XPS or PDF format, or read it online:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://geekswithblogs.net/iupdateable/archive/2009/12/08/free-msdn-flash-ebook-of-the-best-13-technical-articles.aspx&quot;&gt;FREE MSDN Flash eBook of the best 13 technical articles of 2009&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;The UK MSDN Flash developer newsletter contains great short technical articles written by UK developers both inside Microsoft and in the broader developer community. This eBook pulls together these great articles in one place. There are thirteen articles in this second edition covering Python, Inversion of Control, Behavior Driven Development, Silverlight and more.&lt;br /&gt;
&lt;/blockquote&gt;The MSDN Flash newsletter is run by Eric Nelson. He also has a podcast and we recorded an episode together about Python, IronPython, PyCon and various other topics:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://geekswithblogs.net/iupdateable/archive/2009/12/22/msdn-flash-podcast-018-ndash-michael-foord-discusses-ironpython.aspx&quot;&gt;MSDN Flash Podcast 018 – Michael Foord discusses IronPython&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;A great chat with Michael Foord, author of &lt;a href=&quot;http://www.ironpythoninaction.com/&quot;&gt;IronPython in Action&lt;/a&gt;, on why a C# or Visual Basic .NET developer should look at also investing time in learning and using IronPython. Michael wrote an article on IronPython for the November 18th 2009 UK MSDN Flash newsletter:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;“One of the new features in .NET 4.0 is the dynamic keyword, building on the Dynamic Language Runtime. A major reason for dynamic is to enable easier interaction with dynamic languages like IronPython. But if you're a dyed in the wool C# or VB.NET programmer why should you be interested in IronPython? &lt;/i&gt;&lt;br /&gt;
… &lt;br /&gt;
&lt;i&gt;IronPython is a .NET implementation of the popular open source programming language Python. Python is an expressive language that is easy to learn and supports several different programming styles; interactive, scripting, procedural, functional, object oriented and metaprogramming. But what can you do with IronPython that isn't already easy with your existing tools? …&lt;/i&gt;”&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-2160554936094778161?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/1S-jFAFGvlhPKBKJp-BwszHLIio/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/1S-jFAFGvlhPKBKJp-BwszHLIio/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/1S-jFAFGvlhPKBKJp-BwszHLIio/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/1S-jFAFGvlhPKBKJp-BwszHLIio/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=2xMhA73aDIA:Yl35QX29xJ0:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=2xMhA73aDIA:Yl35QX29xJ0:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=2xMhA73aDIA:Yl35QX29xJ0:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=2xMhA73aDIA:Yl35QX29xJ0:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=2xMhA73aDIA:Yl35QX29xJ0:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/2xMhA73aDIA&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Dave Fugate (Testing IronPython): Mom's Chicken-fried Steak Recipe</title>
		<link href="http://knowbody.livejournal.com/20286.html"/>
		<id>http://knowbody.livejournal.com/20286.html</id>
		<updated>2009-12-27T00:53:15+00:00</updated>
		<content type="html">&lt;ul&gt;&lt;li&gt;Cube Steak or beef steak that you tenderize&lt;/li&gt;&lt;li&gt;Salt and Pepper&lt;/li&gt;&lt;li&gt;Buttermilk&lt;/li&gt;&lt;li&gt;Egg&lt;/li&gt;&lt;li&gt;Flour&lt;/li&gt;&lt;li&gt;Oil&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Begin heating oil as soon as the meat is tenderized.  Take tenderized steak (cube steak) and salt and pepper both sides to taste.  Dip meat in flour to cover on both sides.  Shake off excess.  Beat egg into buttermilk.  Dip flour covered meat in egg mixture covering well.  Dip meat back into flour.  Test oil by dropping a small drop of water in it.  If it splatters, it is hot enough.  Place meat into hot oil and fry on one side until brown.  Turn meat and cook on other side until brown.  Check for doneness.  Turn and fry some more if needed.  Sometimes a salt and pepper the flour too.  I use bacon fat for deer steak or any wild meat.  I like it for beef too, but it is not always available.</content>
		<author>
			<name>Dave Fugate (Testing IronPython)</name>
			<uri>http://knowbody.livejournal.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: Django: Tear down and re-sync the database</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/c9Vyzefb2Vk/arch_d7_2009_12_26.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/c9Vyzefb2Vk/arch_d7_2009_12_26.shtml</id>
		<updated>2009-12-27T00:06:13+00:00</updated>
		<content type="html">Django includes the useful management command syncdb for creating the database tables and columns used by your application. If you add new tables (model classes) then re-running syncdb will add them for you. ... [712 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=c9Vyzefb2Vk:yUsAToh23j0:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=c9Vyzefb2Vk:yUsAToh23j0:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=c9Vyzefb2Vk:yUsAToh23j0:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=c9Vyzefb2Vk:yUsAToh23j0:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=c9Vyzefb2Vk:yUsAToh23j0:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=c9Vyzefb2Vk:yUsAToh23j0:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=c9Vyzefb2Vk:yUsAToh23j0:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/c9Vyzefb2Vk&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Custom json Emitter for Django</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/9b2dW6-iZ2w/arch_d7_2009_12_19.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/9b2dW6-iZ2w/arch_d7_2009_12_19.shtml</id>
		<updated>2009-12-24T17:19:28+00:00</updated>
		<content type="html">I blogged previously about the limited built-in support for JSON in Django (Python web framework), and how I got around it by first using the wadostuff json encoder and then modifying the one built in to django-piston. Well, it turned out that json was still a bottleneck in our application. ... [812 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=9b2dW6-iZ2w:uj2BaaFWMro:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=9b2dW6-iZ2w:uj2BaaFWMro:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=9b2dW6-iZ2w:uj2BaaFWMro:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=9b2dW6-iZ2w:uj2BaaFWMro:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=9b2dW6-iZ2w:uj2BaaFWMro:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=9b2dW6-iZ2w:uj2BaaFWMro:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=9b2dW6-iZ2w:uj2BaaFWMro:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/9b2dW6-iZ2w&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: UK TV License and the Common Law Right of Access</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/FdPS0901hxs/arch_d7_2009_12_19.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/FdPS0901hxs/arch_d7_2009_12_19.shtml</id>
		<updated>2009-12-24T16:52:23+00:00</updated>
		<content type="html">The UK, in common with countries like France, has a separate 'tax' to pay for the public television stations. In the UK these stations are run by the British Broadcasting Corporation who also collect the Television License fee. ... [949 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=FdPS0901hxs:mnBhlvPnYG0:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=FdPS0901hxs:mnBhlvPnYG0:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=FdPS0901hxs:mnBhlvPnYG0:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=FdPS0901hxs:mnBhlvPnYG0:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=FdPS0901hxs:mnBhlvPnYG0:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=FdPS0901hxs:mnBhlvPnYG0:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=FdPS0901hxs:mnBhlvPnYG0:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/FdPS0901hxs&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">tech-michael: Twitter-&amp;gt;SL4-&amp;gt;Arduino Light Controller</title>
		<link href="http://feedproxy.google.com/~r/MichaelsRandomTechnologyPosts/~3/speJAwzd-28/twitter-light-controller.html"/>
		<id>tag:blogger.com,1999:blog-6355218471395609447.post-4695232504482929739</id>
		<updated>2009-12-24T08:35:00+00:00</updated>
		<content type="html">&lt;p&gt;This is a preliminary post about a new project I just finished (a variation of &lt;a href=&quot;http://www.handelit.com/Home/Home/tabid/36/mid/592/newsid589/720/Default.aspx&quot; target=&quot;_blank&quot;&gt;CoffeeTrack&lt;/a&gt;). I wanted to test the new capabilities of Silverlight 4 and push the boundaries of what people think of as a web application.  I made a point to not have a server portion of my application.  This application only requires SL4 and a COM library (trying to avoid).&lt;/p&gt;  &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:cd18d9bc-db8d-4371-806c-d41b77a05aed&quot; style=&quot;padding-bottom: 0px; padding-left: 0px; width: 842px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px;&quot;&gt;&lt;div id=&quot;d248217c-953c-47e7-8046-6101b32a7eec&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=rV481lJNApY&amp;amp;fmt=37&quot; target=&quot;_new&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://lh4.ggpht.com/_9gNP2BoIX5o/Szl-bCKagDI/AAAAAAAAAWE/5zl0YuRnkKM/video3963bda58a13%5B6%5D.jpg?imgmax=800&quot; style=&quot;border-style: none;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;I wanted to be able to control my lights from the internet.  This system takes twitter posts (now possible in SL4) and interprets them as commands and commands the Arduino via COM automation. Once a command is received the web cam snaps a photo and posts that to twitter to confirm the results.&lt;/p&gt;  &lt;p&gt;The Arduino code is DEAD simple. The Arduino is linked to a wireless light controller found at Walmart for $10. I found one online that is &lt;a href=&quot;http://www.northshorecommercialdoor.com/skwswirecofo.html&quot; target=&quot;_blank&quot;&gt;similar&lt;/a&gt;.  I used relays to close the switches.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_9gNP2BoIX5o/SzMn1d1fnmI/AAAAAAAAAVk/bBmjaqslty8/s1600-h/image3.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;308&quot; src=&quot;http://lh5.ggpht.com/_9gNP2BoIX5o/SzMn3jjHhqI/AAAAAAAAAVo/1v4D5pHs3U4/image_thumb1.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;image&quot; width=&quot;477&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;const int ledPin1 = 13; // the pin that the LED is attached to    &lt;br /&gt;const int ledPin2 = 12; // the pin that the LED is attached to &lt;/p&gt;  &lt;p&gt;int incomingByte;      // a variable to read incoming serial data into &lt;/p&gt;  &lt;p&gt;void setup() {    &lt;br /&gt;  // initialize serial communication:     &lt;br /&gt;  Serial.begin(9600);     &lt;br /&gt;  // initialize the LED pin as an output:     &lt;br /&gt;  pinMode(ledPin1, OUTPUT);     &lt;br /&gt;  pinMode(ledPin2, OUTPUT);     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;void loop() {    &lt;br /&gt;  // see if there's incoming serial data:     &lt;br /&gt;  if (Serial.available() &amp;gt; 0)     &lt;br /&gt;  {     &lt;br /&gt;    // read the oldest byte in the serial buffer:     &lt;br /&gt;    incomingByte = Serial.read();     &lt;br /&gt;   Serial.println((char)incomingByte);     &lt;br /&gt;   if (incomingByte == '0') {     &lt;br /&gt;      digitalWrite(ledPin1, HIGH);     &lt;br /&gt;      delay(1000);     &lt;br /&gt;      digitalWrite(ledPin1, LOW);     &lt;br /&gt;      Serial.println(&quot;Lights are off&quot;);     &lt;br /&gt;    }     &lt;br /&gt;    else if (incomingByte == '1') {     &lt;br /&gt;      digitalWrite(ledPin2, HIGH);     &lt;br /&gt;      delay(1000);     &lt;br /&gt;      digitalWrite(ledPin2, LOW);     &lt;br /&gt;      Serial.println(&quot;Lights are on!&quot;);     &lt;br /&gt;    }     &lt;br /&gt;  }     &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The Silverlight 4 code is a combination of many, many different libraries. I was able to successfully talk to twitter as long as I ran as an out of browser application (dumb client access policy).  I used the &lt;a href=&quot;http://code.google.com/p/fjcore/&quot; target=&quot;_blank&quot;&gt;FJCore&lt;/a&gt; library to encode images to Jpeg. Special thanks to VisiFire for some &lt;a href=&quot;http://www.visifire.com/blog/2009/11/12/exporting-visifire-silverlight-chart-as-image/&quot; target=&quot;_blank&quot;&gt;helpful code&lt;/a&gt; using FJCore. I spent about 3 days working with the code from this &lt;a href=&quot;http://stackoverflow.com/questions/1015930/twitter-updateprofileimage-in-c&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt; (which works in a Console App).  Once I figured out how the encodings worked I was able to update a photo on twitter via Silverlight.  The rest of the code I stole from CoffeeTrack (stay tuned!).&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Net;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Documents;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Media;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Media.Animation;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Shapes;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Xml.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Threading;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Threading;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Net.Browser;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Media.Imaging;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;FluxJpeg.Core.Encoder;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;FluxJpeg.Core;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;namespace &lt;/span&gt;XmasLightController&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue;&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af;&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: #2b91af;&quot;&gt;DispatcherTimer &lt;/span&gt;t = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;DispatcherTimer&lt;/span&gt;() { Interval = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;TimeSpan&lt;/span&gt;(&lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;) };&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[] currentImage = &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;value = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            t.Tick += &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;EventHandler&lt;/span&gt;(t_Tick);&lt;br /&gt;            &lt;span style=&quot;color: green;&quot;&gt;//t.Start();&lt;br /&gt;            &lt;/span&gt;MakeRequest();&lt;br /&gt;            &lt;span style=&quot;color: green;&quot;&gt;//UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;void &lt;/span&gt;t_Tick(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            MakeRequest();&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;MakeRequest()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest &lt;/span&gt;request = (&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;)&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;.Create(&lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Uri&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;http://twitter.com/statuses/user_timeline/uwstephens.atom?&amp;amp;count=1&quot;&lt;/span&gt;));&lt;br /&gt;            request.BeginGetResponse(&lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;AsyncCallback&lt;/span&gt;(ReadCallback), request);&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Contacting twitter&quot;&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;currentcommand = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;ReadCallback(&lt;span style=&quot;color: #2b91af;&quot;&gt;IAsyncResult &lt;/span&gt;asynchronousResult)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;                t.Stop();&lt;br /&gt;         &lt;br /&gt;            });&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Recieved response from twitter&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest &lt;/span&gt;request = (&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;)asynchronousResult.AsyncState;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebResponse &lt;/span&gt;response = (&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebResponse&lt;/span&gt;)request.EndGetResponse(asynchronousResult);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;StreamReader &lt;/span&gt;streamReader1 = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;StreamReader&lt;/span&gt;(response.GetResponseStream()))&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;resultString = streamReader1.ReadToEnd();&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;XDocument &lt;/span&gt;doc = &lt;span style=&quot;color: #2b91af;&quot;&gt;XDocument&lt;/span&gt;.Parse(resultString, &lt;span style=&quot;color: #2b91af;&quot;&gt;LoadOptions&lt;/span&gt;.SetBaseUri | &lt;span style=&quot;color: #2b91af;&quot;&gt;LoadOptions&lt;/span&gt;.SetLineInfo);&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af;&quot;&gt;XElement&lt;/span&gt;&amp;gt; elems = doc.Elements(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;entry&quot;&lt;/span&gt;).ToList();&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;oldcommand = currentcommand;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;var &lt;/span&gt;a &lt;span style=&quot;color: blue;&quot;&gt;in &lt;/span&gt;doc.Descendants().ToList())&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(a.Name.LocalName == &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;entry&quot;&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;(value!=a.Value)&lt;br /&gt;                        {&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;                        }&lt;br /&gt;                        value=a.Value;&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;action&quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;else if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;cut&quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown;&quot;&gt;2&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;else if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;snap&quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown;&quot;&gt;3&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                {&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(currentcommand == &lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Start command received&quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                            input.Text = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;1&quot;&lt;/span&gt;;&lt;br /&gt;                            SendMessage();&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;else if &lt;/span&gt;(currentcommand == &lt;span style=&quot;color: brown;&quot;&gt;2&lt;/span&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Stop command received&quot;&lt;/span&gt;);&lt;br /&gt;                            input.Text = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;0&quot;&lt;/span&gt;;&lt;br /&gt;                            SendMessage();&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;                        }&lt;br /&gt;                    &lt;br /&gt;                });&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                {&lt;br /&gt;                    t.Start();&lt;br /&gt;                });&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public void &lt;/span&gt;WriteText(&lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;txt)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;() { &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.outputWindow.Text += &lt;span style=&quot;color: #2b91af;&quot;&gt;Environment&lt;/span&gt;.NewLine + txt; });&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public void &lt;/span&gt;UpdateTwitterImage()&lt;br /&gt;        {&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Updating image&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(currentImage == &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) { &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;String &lt;/span&gt;avatarUrl = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;http://twitter.com/account/update_profile_image.xml&quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;String &lt;/span&gt;file = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;xmas&quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;imageType = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;png&quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;WebRequest&lt;/span&gt;.RegisterPrefix(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;http://&quot;&lt;/span&gt;, System.Net.Browser.&lt;span style=&quot;color: #2b91af;&quot;&gt;WebRequestCreator&lt;/span&gt;.ClientHttp);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;contentBoundaryBase = &lt;span style=&quot;color: #2b91af;&quot;&gt;DateTime&lt;/span&gt;.Now.Ticks.ToString(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;x&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;beginContentBoundary = &lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;--{0}\r\n&quot;&lt;/span&gt;, contentBoundaryBase);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;var &lt;/span&gt;contentDisposition = &lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Content-Disposition:form-data); name=\&quot;image\&quot;); filename=\&quot;{0}\&quot;\r\nContent-Type: image/{1}\r\n\r\n&quot;&lt;/span&gt;, file, imageType);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;var &lt;/span&gt;endContentBoundary = &lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;\r\n--{0}--\r\n&quot;&lt;/span&gt;, contentBoundaryBase);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[] fileBytes = &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;Encoding &lt;/span&gt;encoding = &lt;span style=&quot;color: #2b91af;&quot;&gt;Encoding&lt;/span&gt;.UTF8;&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream &lt;/span&gt;test = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream&lt;/span&gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[] data = encoding.GetBytes(beginContentBoundary);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = encoding.GetBytes(contentDisposition);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = currentImage;&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = encoding.GetBytes(endContentBoundary);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            fileBytes = test.GetBuffer();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;var &lt;/span&gt;req = (&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;)&lt;span style=&quot;color: #2b91af;&quot;&gt;HttpWebRequest&lt;/span&gt;.Create(&lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Uri&lt;/span&gt;(avatarUrl, &lt;span style=&quot;color: #2b91af;&quot;&gt;UriKind&lt;/span&gt;.Absolute));&lt;br /&gt;            req.ContentType = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;multipart/form-data;boundary=&quot; &lt;/span&gt;+ contentBoundaryBase;&lt;br /&gt;            req.AllowReadStreamBuffering = &lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            req.Method = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;POST&quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            req.UseDefaultCredentials = &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            req.Credentials = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;NetworkCredential&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;uwstephens&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;-&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;File&lt;/span&gt;.WriteAllBytes(&lt;span style=&quot;color: #a31515;&quot;&gt;@&quot;C:\Users\michael\Documents\test.txt&quot;&lt;/span&gt;, fileBytes);&lt;br /&gt;            req.BeginGetRequestStream(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;IAsyncResult &lt;/span&gt;result)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;Stream &lt;/span&gt;reqStream = req.EndGetRequestStream(result);&lt;br /&gt;                reqStream.Write(fileBytes, &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, fileBytes.Length);&lt;br /&gt;                &lt;span style=&quot;color: green;&quot;&gt;//reqStream.wr(fileBytes, 0, fileBytes.Length);&lt;br /&gt;                &lt;/span&gt;reqStream.Close();&lt;br /&gt;                req.BeginGetResponse(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;IAsyncResult &lt;/span&gt;result1)&lt;br /&gt;                {&lt;br /&gt;                    WriteText(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Image updated&quot;&lt;/span&gt;);&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(req.HaveResponse)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;try&lt;br /&gt;                        &lt;/span&gt;{&lt;br /&gt;                            &lt;span style=&quot;color: #2b91af;&quot;&gt;WebResponse &lt;/span&gt;resp = req.EndGetResponse(result1);&lt;br /&gt;                            WriteText(resp.Headers[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;status&quot;&lt;/span&gt;]);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue;&quot;&gt;catch &lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception &lt;/span&gt;e) { WriteText(e.Message); }&lt;br /&gt;                    }&lt;br /&gt;                }, req);&lt;br /&gt;&lt;br /&gt;            }, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: #2b91af;&quot;&gt;VideoCaptureDevice &lt;/span&gt;webcam = &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: #2b91af;&quot;&gt;CaptureSource &lt;/span&gt;captureSource = &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;loadCamera_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            webcam = &lt;span style=&quot;color: #2b91af;&quot;&gt;CaptureDeviceConfiguration&lt;/span&gt;.GetDefaultVideoCaptureDevice();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;CaptureDeviceConfiguration&lt;/span&gt;.RequestDeviceAccess())&lt;br /&gt;            {&lt;br /&gt;                captureSource = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;CaptureSource&lt;/span&gt;();&lt;br /&gt;                captureSource.VideoCaptureDevice = webcam;&lt;br /&gt;                captureSource.Start();&lt;br /&gt;                captureSource.AsyncCaptureImage(snap);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public void &lt;/span&gt;snap(&lt;span style=&quot;color: #2b91af;&quot;&gt;WriteableBitmap &lt;/span&gt;b)&lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;            currentImage = GetImageStream(b).GetBuffer();&lt;br /&gt;            webcamImg.Source = b;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;File&lt;/span&gt;.WriteAllBytes(&lt;span style=&quot;color: #a31515;&quot;&gt;@&quot;C:\Users\michael\Documents\test\test.png&quot;&lt;/span&gt;, currentImage);&lt;br /&gt;            captureSource.AsyncCaptureImage(snap);&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;        &lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;Reads raster information from WriteableBitmap&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&quot;bitmap&quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;WriteableBitmap&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;Array of bytes&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public static byte&lt;/span&gt;[][,] ReadRasterInformation(&lt;span style=&quot;color: #2b91af;&quot;&gt;WriteableBitmap &lt;/span&gt;bitmap)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;width = bitmap.PixelWidth;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;height = bitmap.PixelHeight;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;bands = &lt;span style=&quot;color: brown;&quot;&gt;3&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[][,] raster = &lt;span style=&quot;color: blue;&quot;&gt;new byte&lt;/span&gt;[bands][,];&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;i = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;; i &amp;lt; bands; i++)&lt;br /&gt;            {&lt;br /&gt;                raster[i] = &lt;span style=&quot;color: blue;&quot;&gt;new byte&lt;/span&gt;[width, height];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;row = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;; row &amp;lt; height; row++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;column = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;; column &amp;lt; width; column++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;pixel = bitmap.Pixels[width * row + column];&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;)(pixel &amp;gt;&amp;gt; &lt;span style=&quot;color: brown;&quot;&gt;16&lt;/span&gt;);&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;)(pixel &amp;gt;&amp;gt; &lt;span style=&quot;color: brown;&quot;&gt;8&lt;/span&gt;);&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown;&quot;&gt;2&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;)pixel;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;return &lt;/span&gt;raster;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;Encode raster information to MemoryStream&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&quot;raster&quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;Raster information (Array of bytes)&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&quot;colorSpace&quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;ColorSpace used&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public static &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream &lt;/span&gt;EncodeRasterInformationToStream(&lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[][,] raster, &lt;span style=&quot;color: #2b91af;&quot;&gt;ColorSpace &lt;/span&gt;colorSpace)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;ColorModel &lt;/span&gt;model = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ColorModel &lt;/span&gt;{ colorspace = &lt;span style=&quot;color: #2b91af;&quot;&gt;ColorSpace&lt;/span&gt;.RGB };&lt;br /&gt;            FluxJpeg.Core.&lt;span style=&quot;color: #2b91af;&quot;&gt;Image &lt;/span&gt;img = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;FluxJpeg.Core.&lt;span style=&quot;color: #2b91af;&quot;&gt;Image&lt;/span&gt;(model, raster);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: green;&quot;&gt;//Encode the Image as a JPEG&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream &lt;/span&gt;stream = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream&lt;/span&gt;();&lt;br /&gt;            FluxJpeg.Core.Encoder.&lt;span style=&quot;color: #2b91af;&quot;&gt;JpegEncoder &lt;/span&gt;encoder = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;FluxJpeg.Core.Encoder.&lt;span style=&quot;color: #2b91af;&quot;&gt;JpegEncoder&lt;/span&gt;(img, &lt;span style=&quot;color: brown;&quot;&gt;100&lt;/span&gt;, stream);&lt;br /&gt;            encoder.Encode();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: green;&quot;&gt;// Back to the start&lt;br /&gt;            &lt;/span&gt;stream.Seek(&lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #2b91af;&quot;&gt;SeekOrigin&lt;/span&gt;.Begin);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;return &lt;/span&gt;stream;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;Get image MemoryStream from WriteableBitmap&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&quot;bitmap&quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;WriteableBitmap&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;public static &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MemoryStream &lt;/span&gt;GetImageStream(&lt;span style=&quot;color: #2b91af;&quot;&gt;WriteableBitmap &lt;/span&gt;bitmap)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;[][,] raster = ReadRasterInformation(bitmap);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;return &lt;/span&gt;EncodeRasterInformationToStream(raster, &lt;span style=&quot;color: #2b91af;&quot;&gt;ColorSpace&lt;/span&gt;.RGB);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;com;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;serialConnect_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            com = System.Windows.Interop.&lt;span style=&quot;color: #2b91af;&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;ActiveXperts.ComPort&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;count = com.GetDeviceCount();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;            com.Device = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;COM1&quot;&lt;/span&gt;;&lt;br /&gt;            com.Open();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;MessageBox&lt;/span&gt;.Show(com.GetErrorDescription(com.LastError));&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;buffer = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;            System.Threading.&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread &lt;/span&gt;t = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ThreadStart&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;while &lt;/span&gt;(&lt;span style=&quot;color: brown;&quot;&gt;1 &lt;/span&gt;== &lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    com.Sleep(&lt;span style=&quot;color: brown;&quot;&gt;200&lt;/span&gt;);&lt;br /&gt;                    buffer = com.ReadString();&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(buffer == &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;) { &lt;span style=&quot;color: blue;&quot;&gt;continue&lt;/span&gt;; }&lt;br /&gt;                    serialOutput.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                    {&lt;br /&gt;                        serialOutput.Text += &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;\r\n&quot; &lt;/span&gt;+ buffer;&lt;br /&gt;                    });&lt;br /&gt;                }&lt;br /&gt;            }));&lt;br /&gt;            t.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;void &lt;/span&gt;SendMessage()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(com != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;char &lt;/span&gt;c &lt;span style=&quot;color: blue;&quot;&gt;in &lt;/span&gt;input.Text)&lt;br /&gt;                {&lt;br /&gt;                    com.WriteByte((&lt;span style=&quot;color: blue;&quot;&gt;byte&lt;/span&gt;)c);&lt;br /&gt;                }&lt;br /&gt;                input.Text = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;input_KeyUp(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;KeyEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(e.Key == &lt;span style=&quot;color: #2b91af;&quot;&gt;Key&lt;/span&gt;.Enter)&lt;br /&gt;            {&lt;br /&gt;                SendMessage();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6355218471395609447-4695232504482929739?l=tech-michael.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/MichaelsRandomTechnologyPosts/~4/speJAwzd-28&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael (noreply@blogger.com)</name>
			<uri>http://tech-michael.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: C# Support for Tuples</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-23.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-23.html</id>
		<updated>2009-12-24T03:11:00+00:00</updated>
		<content type="html">&lt;p&gt;More Mono proof of concept extensions to C#.
	
	&lt;/p&gt;&lt;p&gt;As part of the list of things I would like to see in C# is
	support for tuples in the language.   They would show up in a
	few places, for example, to return multiple values from a
	function and assign the results to multiple values at once.

	&lt;/p&gt;&lt;p&gt;In recent versions of the framework there is a new datatype
	called Tuple, it is used to hold N values, the Tuple for N=2
	looks like this:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	public class Tuple&amp;lt;T1, T2&amp;gt; {
		public Tuple (T1 v1, T2 v2);
		T1 Item1 { get; set; }
		T2 Item2 {get; set; }
	}
	&lt;/pre&gt;

	&lt;p&gt;The &lt;a href=&quot;http://tirania.org/tmp/tuple.diff&quot;&gt;tuple
	patch&lt;/a&gt; extends the C# language to allow multiple variables
	to be assigned from any Tuple, like this:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	(user, password, host, port, path) = ParseUri (url);
	&lt;/pre&gt;

	&lt;p&gt;The above would assign the four values to user, password,
	host, port and path from the call to ParseUri.   ParseUri
	would be declared like this:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	Tuple&amp;lt;string, string, string, int, string&amp;gt; ParseUri (string url);
	&lt;/pre&gt;

&lt;h3&gt;Future Work and Ideas&lt;/h3&gt;

	&lt;p&gt;In addition to handling Tuples, I would like to extend this
	to support collections and IEnumerables as well, for example:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	(section, header) = my_array;
	&lt;/pre&gt;

	&lt;p&gt;The above would store my_array [0] in section, and my_array
	[1] in header.

	&lt;/p&gt;&lt;p&gt;If the last element of a tuple is a collection, it could
	store the rest of the values from the collection or enumerable
	in the last element:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	(query, page, other_options) = Request.QueryString;
	&lt;/pre&gt;

	&lt;p&gt;The above would store the first item in the QueryString
	into query, the second into page, and the rest into the
	other_options array.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tuple creation syntax:&lt;/b&gt;I would like to add nicer
	support for creating Tuples as return values, it could just
	mirror the assignment syntax.

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	ParseUri ()
	{
		...
		return (user, password, host, port, path);
	}
	&lt;/pre&gt;

	&lt;p&gt;&lt;b&gt;Handling well-known types:&lt;/b&gt; In addition to Tuple,
	ICollections and IEnumerables, perhaps the compiler should
	know about older versions of Tuple like DictionaryEntry.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Using statements:&lt;/b&gt; Today the using statement is
	limited to a single resource, with multi-valued return types,
	it could handle multiple resources at once, like this:

	&lt;/p&gt;&lt;pre class=&quot;code-csharp&quot;&gt;
	using (var (image, audio, badge) = iphoneApp.GetNotifications ()){
	    // use IDisposable image
	    // use IDisposable audio
	    // use trivial int badge
	}
	&lt;/pre&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: New Moonlight Covenant has been posted</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-22-1.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-22-1.html</id>
		<updated>2009-12-23T02:50:00+00:00</updated>
		<content type="html">&lt;p&gt;As I mentioned a few days ago, there is a new covenant form
	Microsoft for Moonlight, it
	&lt;a href=&quot;http://www.microsoft.com/interop/msnovellcollab/newmoonlight.mspx&quot;&gt;has
	been posted&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Cena Linuxera en el DF, hoy</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-22.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-22.html</id>
		<updated>2009-12-23T02:44:00+00:00</updated>
		<content type="html">&lt;p&gt;Cena Linuxera/Monera hoy (Diciembre 22) en el
	bar/restaurante del Covadonga a las 7pm.  Para todo p�blico
	(incluso talibanes).

	&lt;/p&gt;&lt;p&gt;Direcci�n: Puebla 121 cerca de el Metro Insurgentes.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">The Voidspace Techie Blog: A Little Bit of Python (Podcast)</title>
		<link href="http://feedproxy.google.com/~r/voidspace/~3/Cm2WIfkJj-o/arch_d7_2009_12_19.shtml"/>
		<id>http://feedproxy.google.com/~r/voidspace/~3/Cm2WIfkJj-o/arch_d7_2009_12_19.shtml</id>
		<updated>2009-12-22T16:13:11+00:00</updated>
		<content type="html">Myself and several co-conspirators have started an 'occasional podcast' on all things Python, and the first two episodes are now online. The podcast is called A Little Bit of Python and stars: Michael Foord (me, author of IronPython in Action and maintainer of unittest) Andrew Kuchling (creator of PyCrypto and one of the python.org webmasters) Steve Holden (PSF chairman) Dr. ... [404 words]&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Cm2WIfkJj-o:cJMHfRb9Ofg:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Cm2WIfkJj-o:cJMHfRb9Ofg:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Cm2WIfkJj-o:cJMHfRb9Ofg:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Cm2WIfkJj-o:cJMHfRb9Ofg:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Cm2WIfkJj-o:cJMHfRb9Ofg:gIN9vFwOqvQ&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?i=Cm2WIfkJj-o:cJMHfRb9Ofg:gIN9vFwOqvQ&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/voidspace?a=Cm2WIfkJj-o:cJMHfRb9Ofg:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/voidspace?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/voidspace/~4/Cm2WIfkJj-o&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>The Voidspace Techie Blog</name>
			<uri>http://www.voidspace.org.uk/python/weblog/index.shtml</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Executing IronPython Code from IronRuby</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/d6q_AKgNj08/executing-ironpython-code-from-ironruby.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-4881810474911230956</id>
		<updated>2009-12-22T00:02:26+00:00</updated>
		<content type="html">The Dynamic Language Runtime is a framework for writing dynamic languages that run on the .NET framework, with the two &quot;Microsoft sponsored&quot; languages being IronPython and IronRuby. There is also &lt;a href=&quot;http://ironscheme.codeplex.com/&quot;&gt;IronScheme&lt;/a&gt;, a community project hosted on Codeplex.&lt;br /&gt;
&lt;br /&gt;
The promise of the DLR is not just that it makes implementing dynamic languages &lt;i&gt;possible&lt;/i&gt;, but also that through the DLR .NET languages can interoperate. This includes IronPython and IronRuby (etc) interacting with C#, F# and VB.NET (the supported and statically typed Microsoft .NET languages) but also the reverse (statically typed languages interoperating with dynamically typed languages) and dynamically typed languages interoperating amongst themselves. All very incestuous.&lt;br /&gt;
&lt;br /&gt;
As far as I know this is still unique amongst the modern polyglot runtimes (.NET and Mono, the JVM, LLVM, Parrot and so on).&lt;br /&gt;
&lt;br /&gt;
Whilst IronRuby in particular has been changing very rapidly (IronRuby has only &lt;a href=&quot;http://ironruby.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35312&quot;&gt;recently&lt;/a&gt; reached 1.0 RC 1) it has been hard to get versions of both languages built on the same version of the DLR. However recent builds have tended to include compatible versions of the other language, making it a bit easier.&lt;br /&gt;
&lt;br /&gt;
IronShay (Shay Friedman) has written a blog entry demonstrating how IronPython and IronRuby can share code and use each others libraries:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ironshay.com/post/Executing-IronPython-Code-from-IronRuby.aspx&quot;&gt;Executing IronPython Code from IronRuby&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt; One of the advantages of the Dynamic Language Runtime (DLR) is the fact that it makes sharing code between the languages that are written on top of it (and on top of the CLR as well). Therefore, it is possible to share code between IronPython and IronRuby (and any other DLR language as well like IronScheme).&lt;br /&gt;
&lt;br /&gt;
This means that IronPython libraries can be used from IronRuby code and vice versa. Ruby on Rails in Python? Django in Ruby? feels like the end of days, isn’t it? perhaps we should really start preparing to year &lt;a href=&quot;http://en.wikipedia.org/wiki/2012_phenomenon&quot;&gt;2012&lt;/a&gt;…&lt;br /&gt;
&lt;br /&gt;
In this post I’ll show you how to run simple IronPython code from IronRuby so you can take it and do whatever your imagination guides you to.&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-4881810474911230956?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/4xojnipsoJuBegmPr_3GvFSvkPc/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/4xojnipsoJuBegmPr_3GvFSvkPc/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/4xojnipsoJuBegmPr_3GvFSvkPc/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/4xojnipsoJuBegmPr_3GvFSvkPc/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=d6q_AKgNj08:-Cr94yeH1yI:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=d6q_AKgNj08:-Cr94yeH1yI:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=d6q_AKgNj08:-Cr94yeH1yI:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=d6q_AKgNj08:-Cr94yeH1yI:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=d6q_AKgNj08:-Cr94yeH1yI:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/d6q_AKgNj08&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: Why IronPython?</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/8it1cwT69V8/why-ironpython.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-2849247046765955159</id>
		<updated>2009-12-21T23:29:25+00:00</updated>
		<content type="html">&lt;b&gt;&lt;/b&gt;This is a short article I wrote for the UK MSDN Flash newsletter (a Microsoft newsletter for developers). Unfortunately the online versions of these newsletters aren't being updated at the moment; so instead of linking to it I'm reproducing it here.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why IronPython?&lt;/b&gt;                                     &lt;br /&gt;
&lt;br /&gt;
One of the new features in .NET 4.0 is the dynamic keyword, building on the Dynamic Language Runtime. A major reason for dynamic is to enable easier interaction with dynamic languages like IronPython. But if you're a dyed in the wool C# or VB.NET programmer why should you be interested in IronPython?&lt;br /&gt;
&lt;br /&gt;
Much of the discussion here applies to other dynamic languages, including IronRuby, but Python is my particular area of expertise.&lt;br /&gt;
&lt;br /&gt;
IronPython is a .NET implementation of the popular open source programming language Python. Python is an expressive language that is easy to learn and supports several different programming styles; interactive, scripting, procedural, functional, object oriented and metaprogramming. But what can you do with IronPython that isn't already easy with your existing tools?&lt;br /&gt;
&lt;br /&gt;
The first entry in the list of programming styles is 'interactive'. The &lt;a href=&quot;http://ironpython.codeplex.com/&quot;&gt;IronPython distribution&lt;/a&gt; includes ipy.exe, the executable for running scripts or programs that also doubles as an interactive interpreter. When you run ipy.exe you can enter Python code that is evaluated immediately and the result returned. It is a powerful tool for exploring assemblies and learning how to use new frameworks and classes by working with live objects.&lt;br /&gt;
&lt;br /&gt;
The second reason to use IronPython is also the second programming style in the list; scripting. Python makes an excellent tool for generating XML from templates, automating build tasks and a host of other everyday operations. Because scripts can be executed without compilation experimentation is simple and fast. Python often creeps into businesses as a scripting language, but beware it spreads!&lt;br /&gt;
&lt;br /&gt;
One of the big use cases for IronPython is for embedding in applications. Potential uses include user scripting, adding a live console for debugging, creating domain specific languages where rules can be added or modified at runtime or even building hybrid applications using several languages. Python has several features, like the ability to customise attribute access, that make it particularly suited to the creation of lightweight DSLs. IronPython has been designed with these uses in mind and has a straightforward hosting API.&lt;br /&gt;
&lt;br /&gt;
There are many areas where dynamic languages are fundamentally different from statically typed languages, a topic that rouses strong opinions. Here are a few features of IronPython that make it easy to develop with:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;No type declarations&lt;/li&gt;
&lt;li&gt;First class and higher order functions&lt;/li&gt;
&lt;li&gt;No need for generics, flexible container types instead&lt;/li&gt;
&lt;li&gt;Protocols and duck-typing instead of compiler enforced interfaces&lt;/li&gt;
&lt;li&gt;First class types and namespaces that can be modified at runtime&lt;/li&gt;
&lt;li&gt;Easier to test than statically typed languages&lt;/li&gt;
&lt;li&gt;Easy introspection (reflection without the pain)&lt;/li&gt;
&lt;li&gt;Problems like covariance, contravariance and casting just disappear&lt;/li&gt;
&lt;/ul&gt;The best way to learn how to get the best from IronPython is my book &lt;a href=&quot;http://www.ironpythoninaction.com/&quot;&gt;IronPython in Action&lt;/a&gt;. I've also written a series of articles aimed at .NET developers to help get you started including &lt;a href=&quot;http://www.voidspace.org.uk/ironpython/introduction-to-ironpython.shtml&quot;&gt;Introduction to IronPython&lt;/a&gt;, &lt;a href=&quot;http://www.voidspace.org.uk/ironpython/python-for-programmers.shtml&quot;&gt;Python for .NET Programmers&lt;/a&gt; and &lt;a href=&quot;http://www.voidspace.org.uk/ironpython/tools-and-ides.shtml&quot;&gt;Tools and IDEs for IronPython&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Happy experimenting!&lt;br /&gt;
&lt;br /&gt;
Michael Foord&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-2849247046765955159?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/sVuxcELA6j51GrmTNxw7ybNFrq4/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/sVuxcELA6j51GrmTNxw7ybNFrq4/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/sVuxcELA6j51GrmTNxw7ybNFrq4/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/sVuxcELA6j51GrmTNxw7ybNFrq4/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=8it1cwT69V8:HIe8j7mVRnM:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=8it1cwT69V8:HIe8j7mVRnM:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=8it1cwT69V8:HIe8j7mVRnM:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=8it1cwT69V8:HIe8j7mVRnM:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=8it1cwT69V8:HIe8j7mVRnM:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/8it1cwT69V8&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: C# String Interpolation</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-20.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-20.html</id>
		<updated>2009-12-20T11:20:00+00:00</updated>
		<content type="html">&lt;p&gt;We have discussed in the past adding support to C# to
	support string interpolation.    I have cooked a
	&lt;a href=&quot;http://tirania.org/tmp/string-interpolation.patch&quot;&gt;patch&lt;/a&gt; that
	allows C# developers to embed expressions inside strings, like
	this:

	&lt;/p&gt;&lt;pre&gt;
	var a = 'Hello {name} how are you?';
	&lt;/pre&gt;

	&lt;p&gt;Single quotes are used for strings that will have
	expressions interpolated between the braces.   The above
	sample is equivalent to:

	&lt;/p&gt;&lt;pre&gt;
	var a = String.Format (&quot;Hello {0} how are you?&quot;, name);
	&lt;/pre&gt;

	&lt;p&gt;Currently the patch supports arbitrary expressions in the
	braces, it is not limited to referencing variables:

	&lt;/p&gt;&lt;pre&gt;
	var a = 'There are {list.Count} elements';
	&lt;/pre&gt;

	&lt;p&gt;This notation can be abused, this shows a LINQ expression
	embedded in the string:

	&lt;/p&gt;&lt;pre&gt;
	var a = 'The {(from x in args where x.StartsWith (&quot;a&quot;) select x).FirstOrDefault ()} arguments';
	&lt;/pre&gt;

	&lt;p&gt;I am not familiar with what are the best practices for this
	sort of thing in Python, Ruby and other languages.  Curious to
	find out.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; after the discussion on the comments the
	syntax was changed to use $&quot; instead of the single quote to
	denote a string that will be interpolated.   Now you will write:
	
	&lt;/p&gt;&lt;pre&gt;
	var a = $&quot;There are {list.Count} elements&quot;;
	var greeting = $&quot;Hello {name} how are you?&quot;;
	&lt;/pre&gt;

	&lt;p&gt;The updated patch is &lt;a href=&quot;http://tirania.org/tmp/string-interpolation-2.patch&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">ASP.NET for IronPython: Passing anonymous objects to MVC views and accessing them using dynamic</title>
		<link href="http://blogs.msdn.com/davidebb/archive/2009/12/18/passing-anonymous-objects-to-mvc-views-and-accessing-them-using-dynamic.aspx"/>
		<id>c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7284106</id>
		<updated>2009-12-19T00:06:00+00:00</updated>
		<content type="html">First, I’ll start with a little disclaimer: this post is not about whether using dynamic is better/worse than static typing. Instead, it’s about making it more convenient to use dynamic if you choose to go that route . Clearly, some people dislike dynamic, as you can see in the comments in that post from Phil Haack , and for the most part, all the key arguments for/against have been made. So anyway, let’s proceed… Recently, a few people have experimented with extending their view pages from ViewPage&amp;lt;dynamic&amp;gt;. The idea is to then be able to access model data using the more convenient dynamic syntax. e.g. check out this thread on StackOverflow, as well as Phil’s post I mention above. One limitation that people are hitting is that you can...(&lt;a href=&quot;http://blogs.msdn.com/davidebb/archive/2009/12/18/passing-anonymous-objects-to-mvc-views-and-accessing-them-using-dynamic.aspx&quot;&gt;read more&lt;/a&gt;)&lt;img height=&quot;1&quot; src=&quot;http://weblogs.asp.net/aggbug.aspx?PostID=7284106&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Angle Bracket Percent : ASP.NET</name>
			<uri>http://weblogs.asp.net/aspnet-ironpython/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Debugging Silverlight/Moonlight Apps on Linux</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-17-1.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-17-1.html</id>
		<updated>2009-12-18T06:06:00+00:00</updated>
		<content type="html">&lt;p&gt;A little hidden feature from our release of MonoDevelop 2.2
	and Mono
	2.6 &lt;a href=&quot;http://tirania.org/blog/archive/2009/Dec-15.html&quot;&gt;earlier
	this week&lt;/a&gt; was MonoDevelop's support for debugging
	Moonlight applications:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/0912170654K7Y65HXA.png&quot; /&gt;
	&lt;/center&gt;

	&lt;p&gt;Moonlight debugging is a feature that came together very
	recently, but we delayed Mono and MonoDevelop's release to
	make sure that we shipped with it.

	&lt;/p&gt;&lt;p&gt;To debug, merely open your Moonlight/Silverlight project,
	set some breakpoints, and run your program (F5).   Your
	app will be debugged. 

	&lt;/p&gt;&lt;p&gt;I did
	a &lt;a href=&quot;http://www.youtube.com/watch?v=GSUZRZWzTQM&quot;&gt;quick
	screencast&lt;/a&gt; and annotated it:&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Releasing Moonlight 2, Roadmap to Moonlight 3 and 4</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-17.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-17.html</id>
		<updated>2009-12-18T02:48:00+00:00</updated>
		<content type="html">&lt;p&gt;Today we are making a few of announcements:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.go-mono.com/moonlight&quot;&gt;Moonlight
		2&lt;/a&gt; is complete: Moonlight 2, our open source
		implementation of Silverlight 2 is done.

		&lt;/li&gt;&lt;li&gt;An updated collaboration agreement between
		Microsoft and Novell to bring Silverlight 3 and 4 to
		open source Unix.

		&lt;/li&gt;&lt;li&gt;Microsoft has an updated patent covenant that
		will covers third party distributions.
		
	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Sean Michael
	Kerner &lt;a href=&quot;http://www.linuxplanet.com/linuxplanet/reports/6932/1/&quot;&gt;covers
	the announcement&lt;/a&gt; and talks to Brian Goldfarb from
	Microsoft.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update 2:&lt;/b&gt; New covenant from
	Microsoft &lt;a href=&quot;http://www.microsoft.com/interop/msnovellcollab/newmoonlight.mspx&quot;&gt;has
	been posted&lt;/a&gt;.
	
	&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;center&gt;
&lt;img src=&quot;http://tirania.org/shots/091216105809ogrOjh.png&quot; /&gt;
&lt;/center&gt;

&lt;h3&gt;2.5 API&lt;/h3&gt;

	&lt;p&gt;Moonlight 2 is a superset of Silverlight 2.   It
	contains everything that is part of Silverlight 2 but
	already ships with various features from Silverlight 3:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;Silverlight 3 Pluggable Pipeline, this allows
		developers to hook into the media decoding pipeline at
		various points:

		&lt;ul&gt;
			&lt;li&gt;Data fetching (this is how adaptive
			streaming and smooth streaming are
			supported).   Test it out
			at &lt;a href=&quot;http://www.iis.net/media/experiencesmoothstreaming&quot;&gt;Experience
			Smooth Streaming&lt;/a&gt;.

			&lt;/li&gt;&lt;li&gt;Demuxing (this is how
			the &lt;a href=&quot;http://tirania.org/blog/archive/2009/Mar-24-1.html&quot;&gt;
			Moonlight Ogg&lt;/a&gt; container can be fed into
			Moonlight and Microsoft's Silverlight).  

			&lt;/li&gt;&lt;li&gt;Codecs (this is
			how &lt;a href=&quot;http://anonsvn.mono-project.com/viewvc/trunk/mooncodecs/&quot;&gt;our
			Vorbis and Dirac support&lt;/a&gt; work on both
			Moonlight and Microsoft Silverlight).
		&lt;/li&gt;&lt;/ul&gt;

		&lt;/li&gt;&lt;li&gt;Easing animation functions

		&lt;/li&gt;&lt;li&gt;Partial out-of-browser support

		&lt;/li&gt;&lt;li&gt;Writable bitmaps

		&lt;/li&gt;&lt;li&gt;Some of the new databinding features of XAML in
		Silverlight 3

	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;We are moving quickly to complete our 3 support.
	Microsoft is not only providing us with test suites for
	Moonlight but also assisting us in making sure that flagship
	Silvelright applications work with Moonlight.

	&lt;/p&gt;&lt;p&gt;When it comes to prioritization of Silverlight 3 features,
	we are going to focus on getting the major applications that
	users want to use first.  Sunday Night Football,
	the &lt;a href=&quot;http://www.vancouver2010.com/&quot;&gt;Winter
	Olympics&lt;/a&gt; and &lt;a href=&quot;http://photosynth.net/&quot;&gt;Bing's
	Photosynth&lt;/a&gt; support.

	&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.iis.net/media/experiencesmoothstreaming&quot;&gt;Smooth
	streaming&lt;/a&gt; works really well.    Visit the site and test
	the immediate seek, and play with the bandwidth limiter to see
	how Silverlight/Moonlight can adapt the video quality based
	ont he bandwidth available:

	&lt;/p&gt;&lt;center&gt;
	&lt;img src=&quot;http://tirania.org/shots/0912170215xxow9FkL.png&quot; /&gt;
	&lt;/center&gt;
	
&lt;h3&gt;Moonlight 2&lt;/h3&gt;

	&lt;p&gt;Moonlight 2 is the result of love and passion to bring
	the Silverlight runtime to Linux.

	&lt;/p&gt;&lt;p&gt;Moonlight 2 engine consists of 142,000 lines of C/C++
	code and 320,000 lines of C# code (125,000 lines of code came
	from Microsoft's open source Silverlight Controls).

	&lt;/p&gt;&lt;p&gt;Moonlight is built on top
	of &lt;a href=&quot;http://www.mono-project.com/Release_Notes_Mono_2.6&quot;&gt;Mono
	2.6
	runtime&lt;/a&gt;, &lt;a href=&quot;http://www.cairographics.org/&quot;&gt;Cairo&lt;/a&gt;
	and &lt;a href=&quot;http://www.gtk.org/&quot;&gt;Gtk+&lt;/a&gt; and today supports
	Firefox on Linux.   We are hard at work to support Google
	Chrome on Linux as well.
	
&lt;/p&gt;&lt;h3&gt;Updated Patent Covenant&lt;/h3&gt;

	&lt;p&gt;We worked with Microsoft to make sure that Moonlight was
	available to everyone on Linux and BSD.

	&lt;/p&gt;&lt;p&gt;Culturally, we started on two opposite ends of the software
	licensing spectrum.  The covenant that was issued for
	Moonlight 1 and 2 covered every user that used Moonlight, but
	only as long as the user obtained Moonlight from Novell.  This
	is a model similar to how Flash is distributed: there is a
	well-known location where you get your plugin.

	&lt;/p&gt;&lt;p&gt;The open source world does not work that way though.  In
	the open source world, the idea is to release source code and
	have distributions play the role of editors and curators and
	distribute their own versions of the software.

	&lt;/p&gt;&lt;p&gt;Microsoft's intention was to expand the reach of
	Silverlight, but the original covenant was not a good cultural
	fit.   We worked with the team at Microsoft (Brian Goldfarb and
	Bob Muglia's teams) to make sure that the covenant would cover
	the other Linux distributions.

	&lt;/p&gt;&lt;p&gt;The new patent covenant ensures that other third party
	distributions can distribute Moonlight without their users
	fearing of getting sued over patent infringement by Microsoft.

	&lt;/p&gt;&lt;p&gt;There is one important difference between the version of
	Moonlight that will be available from Novell and the version
	that you will get from your distribution: the version obtained
	from Novell will have access to licensed media codecs.

	&lt;/p&gt;&lt;p&gt;Third party distributions of Moonlight will be able to play
	unencumbered media using Vorbis, Theora and Ogg inside
	Moonlight (and Silverlight), but for playing back other
	formats, they will have a few options:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;Negotiating directly with the media codec owners a
		license (MPEG-LA, Fraunhofer).

		&lt;/li&gt;&lt;li&gt;Negotiate access to Microsoft's Media Pack with
		Microsoft. 

		&lt;/li&gt;&lt;li&gt;Plug-in GStreamer or another commercial codec
		license into their Moonlight implementations.

		&lt;/li&gt;&lt;li&gt;&lt;b&gt;Update:&lt;/b&gt; Use a hardware provided decoder like VDPau.
	&lt;/li&gt;&lt;/ul&gt;
	
&lt;h3&gt;Moonlight 3 and Moonlight 4 Collaboration Agreement&lt;/h3&gt;

	&lt;p&gt;As readers of my blog know, the Silverlight 4 feature set
	is something
	that &lt;a href=&quot;http://tirania.org/blog/archive/2009/Nov-23.html&quot;&gt;is
	very interesting to me&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;If our experience with the positive feedback that we have
	gotten from MonoDevelop is of any indication Silverlight 4
	will enable a whole new class of cross-platform .NET
	application development to take place.   Like nothing we have
	seen before.
	
	&lt;/p&gt;&lt;p&gt;We are thrilled to be working with Microsoft to make sure
	that we can improve, fix and fine tune Moonlight to meet those
	requirements and to do so in a purely open source fashion.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;a href=&quot;http://team.silverlight.net/announcement/moonlight-2-is-now-available/&quot;&gt;Team
	Silverlight blogs&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">C. J. Adams-Collier: IRC logs for #ubuntu-us-wa</title>
		<link href="http://wp.colliertech.org/cj/?p=660"/>
		<id>http://wp.colliertech.org/cj/?p=660</id>
		<updated>2009-12-17T19:55:35+00:00</updated>
		<content type="html">&lt;p&gt;Hello, google.  I would like to introduce you to our &lt;a href=&quot;http://ilbot.colliertech.org/ubuntu-us-wa/&quot;&gt;chat logs&lt;/a&gt;.  &lt;a href=&quot;http://ilbot.colliertech.org/ubuntu-us-wa/today&quot;&gt;Chat logs&lt;/a&gt;, google.  Google, &lt;a href=&quot;http://ilbot.colliertech.org/ubuntu-us-wa/2009-12-17&quot;&gt;chat logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will discuss things here such as Mono, GNOME and Debian.  We may even use it to talk about work on the DLR project stuff.&lt;/p&gt;</content>
		<author>
			<name>C.J. Adams-Collier</name>
			<uri>http://wp.colliertech.org/cj</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Nine Months Later: Mono 2.6 and MonoDevelop 2.2</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-15.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-15.html</id>
		<updated>2009-12-16T01:47:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://primates.ximian.com/~miguel/pictures/mp-mono-logo.png&quot; /&gt;About nine months ago we released MonoDevelop 2.0 and Mono
	2.4.  Today we are releasing the much anticipated upgrades to
	both.  &lt;a href=&quot;http://www.mono-project.com/Release_Notes_Mono_2.6&quot;&gt;Mono
	2.6&lt;/a&gt;
	and &lt;a href=&quot;http://monodevelop.com/Download/MonoDevelop_2.2_Released&quot;&gt;MonoDevelop
	2.2&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;For those in a hurry, binaries and source are available from:

	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;http://www.go-mono.com/mono-downloads/download.html&quot;&gt;Mono
		Download&lt;/a&gt; page.

		&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://monodevelop.com/Download&quot;&gt;MonoDevelop
		Download&lt;/a&gt; page. 
	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;And if you want a quick mnemonic to remember this release,
	just think &lt;b&gt;debugger!&lt;/b&gt; and &lt;b&gt;cross platform&lt;/b&gt;.

	&lt;/p&gt;&lt;p&gt;The Mono team and contributors worked on this release like
	we have never worked before.   Thanks to everyone that
	reported bugs, filed feature requests, contributed code and
	helped newcomers with Mono. 
	
	&lt;/p&gt;&lt;p&gt;Mono 2.6 highlights:
	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;WCF client and server, the subset exposed by Silverlight 2.0.
		&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.mono-project.com/Mono_LLVM&quot;&gt;LLVM
		support&lt;/a&gt;, to improve performance on
		server/computational loads.
		&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.mono-project.com/Continuations&quot;&gt;Continuations/Co-routine
		framework&lt;/a&gt; Mono.Tasklets (&lt;a href=&quot;http://tirania.org/blog/archive/2009/Apr-09.html&quot;&gt;background info&lt;/a&gt;)
		&lt;/li&gt;&lt;li&gt;LINQ to SQL using &lt;a href=&quot;http://groups.google.com/group/dblinq&quot;&gt;DbLinq&lt;/a&gt;.
		&lt;/li&gt;&lt;li&gt;New &lt;a href=&quot;http://www.mono-project.com/Soft_Debugger&quot;&gt;Soft
		Debugger&lt;/a&gt;, integrated with MonoDevelop on Unix and
		OSX (&lt;a href=&quot;http://tirania.org/blog/archive/2009/Nov-04.html&quot;&gt;background&lt;/a&gt;).
		&lt;/li&gt;&lt;li&gt;System.IO.Packaging.
		&lt;/li&gt;&lt;li&gt;csharp shell now supports auto-completion (press
		tab to complete)
		&lt;/li&gt;&lt;li&gt;xbuild can now build most msbuild projects.
		&lt;/li&gt;&lt;li&gt;Mono debuts
		a &lt;a href=&quot;http://www.mono-project.com/Moonlight/SecurityStatus&quot;&gt;verifier
		and security sandbox&lt;/a&gt; (used by Moonlight).
		&lt;/li&gt;&lt;li&gt;More complete 3.5 API coverage.
		&lt;/li&gt;&lt;li&gt;This release includes Microsoft's open sourced
		ASP.NET MVC, ASP.NET AJAX and Microsoft's Dynamic Language Runtime.
		&lt;/li&gt;&lt;li&gt;Faster and slimmer.
	&lt;/li&gt;&lt;/ul&gt;
	
	&lt;p&gt;MonoDevelop 2.2 highlights
	(screenshots &lt;a href=&quot;http://monodevelop.com/Download/What's_new_in_MonoDevelop_2.2&quot;&gt;here&lt;/a&gt;
	and &lt;a href=&quot;http://tirania.org/blog/archive/2009/Sep-09.html&quot;&gt;here&lt;/a&gt;):
	
	&lt;/p&gt;&lt;ul&gt;
		&lt;li&gt;MonoDevelop code is now LGPLv2 and MIT X11
		licensed.  We have removed all of the GPL code,
		allowing &lt;a href=&quot;http://monodevelop.com/Writing_an_Add-In&quot;&gt;addins&lt;/a&gt;
		to use Apache, MS-PL code as well as allowing
		proprietary add-ins to be used with MonoDevelop (like
		RemObject's Oxygene). 
		
		&lt;/li&gt;&lt;li&gt;User interface improvements: the first thing that
		MonoDevelop users will notice is that we have upgraded
		the UI to fit modern ideas.  We borrowed ideas from
		Chrome, Firefox, Visual Studio, Eclipse and XCode.

		&lt;/li&gt;&lt;li&gt;ASP.NET MVC support, you can now develop, debug and
		build ASP.NET MVC applications from MonoDevelop.

		&lt;/li&gt;&lt;li&gt;New T4 Macro processor (Text Template
		Transformation Toolkit) integrated directly into the
		IDE (Mono's T4 is also available as
		a &lt;a href=&quot;http://dan.s.wards.ws/2009/10/how-to-execute-t4-text-templates-in-monodevelop/&quot;&gt;reusable
		library&lt;/a&gt; for use and abuse in your own programs).

		&lt;/li&gt;&lt;li&gt;Moonlight Project Support: you can now build,
		debug and run Moonlight applications using
		MonoDevelop.

		&lt;/li&gt;&lt;li&gt;New &lt;a href=&quot;http://tirania.org/blog/archive/2009/Sep-09.html&quot;&gt;MacOS
		and Windows&lt;/a&gt; support.   Check
		our &lt;a href=&quot;http://monodevelop.com/Download/What's_new_in_MonoDevelop_2.2#Feature_Matrix&quot;&gt;feature
		matrix&lt;/a&gt; for details.

		&lt;/li&gt;&lt;li&gt;New &lt;a href=&quot;http://monodevelop.com/Download/What's_new_in_MonoDevelop_2.2#Debugger&quot;&gt;Debugger&lt;/a&gt;
		support allows debugging Console, Gtk#, ASP.NET,
		iPhone and Moonlight applications.

		&lt;/li&gt;&lt;li&gt;Extensive &lt;a href=&quot;http://monodevelop.com/Download/What%27s_new_in_MonoDevelop_2.2#Text_Editor&quot;&gt;text
		editor improvements&lt;/a&gt;:
		&lt;ul&gt;
			&lt;li&gt;Dynamic abbrev (Just like Emacs' Alt-/)
			&lt;/li&gt;&lt;li&gt;Code generator (Alt-Insert)
			&lt;/li&gt;&lt;li&gt;Acronym matching
			&lt;/li&gt;&lt;li&gt;Code templates
			&lt;/li&gt;&lt;li&gt;Block selection
			&lt;/li&gt;&lt;li&gt;C# Formatter
		&lt;/li&gt;&lt;/ul&gt;

		&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://tirania.org/shots/0912150216VCygvKQ8.png&quot;&gt;&lt;img align=&quot;right&quot; src=&quot;http://tirania.org/shots/0912150216VCygvKQ8.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;New &lt;a href=&quot;http://monodevelop.com/Download/What's_new_in_MonoDevelop_2.2#Refactoring&quot;&gt;refactoring
		commands&lt;/a&gt;:

		&lt;ul&gt;
			&lt;li&gt;Inline Rename (see screenshot).
			&lt;/li&gt;&lt;li&gt;Resolve Namespace
			&lt;/li&gt;&lt;li&gt;Rename Refactoring with Preview
			&lt;/li&gt;&lt;li&gt;Extract Method
			&lt;/li&gt;&lt;li&gt;Declare Local Variable
			&lt;/li&gt;&lt;li&gt;Integrate Temporary Variable
			&lt;/li&gt;&lt;li&gt;Introduce Constant
			&lt;/li&gt;&lt;li&gt;Move Type to Own File
			&lt;/li&gt;&lt;li&gt;Remove Unused Usings
			&lt;/li&gt;&lt;li&gt;Sort Usings
			&lt;/li&gt;&lt;li&gt;Create/Remove Backing Store
			&lt;/li&gt;&lt;li&gt;Keybindable Commands
		&lt;/li&gt;&lt;/ul&gt;
	
		&lt;/li&gt;&lt;li&gt;Python add-in has graduated to be a supported
		plugin, includes code completion, syntax checking,
		method and class locator and code folding.

		&lt;/li&gt;&lt;li&gt;iPhone development plugin.
	&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;The team is on #mono, #monodev and #monodevelop on
	irc.gnome.org fielding any questions you might have.

	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; the diffstat results for Mono 2.4 to 2.6 on
	a 2 million line patch:
&lt;/p&gt;&lt;pre&gt;
 7208 files changed, 1392400 insertions(+), 440016 deletions(-)
&lt;/pre&gt;

	&lt;p&gt;About a million lines of new code in Mono.

	&lt;/p&gt;&lt;p&gt;For MonoDevelop the patch is 750,000 lines and:

&lt;/p&gt;&lt;pre&gt;
 2427 files changed, 464284 insertions(+), 120124 deletions(-)
&lt;/pre&gt;

	&lt;p&gt;Roughly 300k lines of new code.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: IronRuby @ RubyConf 2009 – Part 4: Project status</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/CPQ4THmx86Q/ironruby-rubyconf-2009-part-4-project.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-3249979134638588635</id>
		<updated>2009-12-15T23:41:00+00:00</updated>
		<content type="html">&lt;em&gt;This is part of a &lt;a href=&quot;http://blog.jimmy.schementi.com/search/label/rubyconf&quot;&gt;RubyConf 2009 series&lt;/a&gt;:&lt;/em&gt;   &lt;br /&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-1-summary.html&quot;&gt;Overview&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot;&gt;What sets IronRuby apart?&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot;&gt;Sneaking Ruby to the top&lt;/a&gt; / &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot;&gt;Embedding IronRuby&lt;/a&gt; | &lt;strong&gt;Project status&lt;/strong&gt;   &lt;p&gt;It’s been a long ride – starting in 2007 when IronRuby was introduced running in Silverlight. Things started out slowly, but for the last year we’ve moved pretty quick, have gotten great feedback, and IronRuby is due for another bump:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironruby.net/download&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;157&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/Sygeh-0Z_1I/AAAAAAAAAP4/GD1MmrErHsM/image8.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;393&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’ve exceeded our goals for 1.0, and still plan on further &lt;em&gt;excess&lt;/em&gt; before 1.0 is final. Let’s dive into our top goals: performance, compatibility, and CLR integration.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf#page=21&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;315&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/SygeiL81K1I/AAAAAAAAAP8/DwP64lYEJ_Y/image37.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’ve been tracking performance against MRI 1.8.6, which though isn’t a final performance goal, it’s a good measure of performance for a 1.0. In the next major release we’ll start tracking MRI 1.9. In general we’re a significantly faster than MRI, but still a tad unacceptable compared to JRuby – that needs to be fixed before 1.0.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf#page=22&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;277&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/Sygeig7M38I/AAAAAAAAAQA/HL4H78JRRXE/image38.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We measure compatibility against RubySpec, as well as some popular Ruby libraries (only the top-used ones are shown here). We’re over 90% for every group of tests. In practice, compatibility is being tested against almost every library we can get our hands on, which is a ton, so I feel confident IronRuby 1.0 will be a very compatible Ruby implementation.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-1-summary.html&quot; target=&quot;_blank&quot;&gt;As I said in a previous post&lt;/a&gt;, this compatibility measure is against 1.8.6; IronRuby does not yet suppor 1.9 completely, though we may quickly change our opinion on this.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf#page=23&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;221&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/Sygei6fka6I/AAAAAAAAAQE/9429X2zalk4/image40.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;CLR integration is very flushed out, supporting using all CLR classes, calling all methods, properties, etc, generics, inheritance, and all the other CLR features exposed to managed languages such as C# and F#. The only missing hole is generating actual CLR types and backings for Ruby types, though we feel this is an OK feature to ship without, because the work-arounds are simple. However, it will be a priority to fix in the next major release.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf#page=24&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;288&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/SygejVsjn_I/AAAAAAAAAQI/ekE2LnuRi2o/image41.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;With RC1 being released, RC2, 3, etc. will come as the community reports issues that we all agree must be fixed by 1.0 final. As far as the core team’s priorities, we want to fix startup and throughput performance issues, as well as get through the backlog of bugs.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf#page=25&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;227&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/SygejmM9E1I/AAAAAAAAAQM/65NaDmK7Llo/image42.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After 1.0 is released, we’ll probably take a bit of a break, but then look to do some features we didn’t get to finish in 1.0, as well as Visual Studio Integration, since it’s the &lt;a href=&quot;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=479957&quot; target=&quot;_blank&quot;&gt;highest voted feature for VS2010&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/Sygej9QQQvI/AAAAAAAAAQQ/DKtfxg0iNXI/s1600-h/image36.png&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;185&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/Sygek8N1qjI/AAAAAAAAAQU/SDpoVtBcprc/image_thumb17.png?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Download the &lt;a href=&quot;http://ironruby.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35312&quot; target=&quot;_blank&quot;&gt;IronRuby 1.0 RC1&lt;/a&gt; and let us know what you think! You can &lt;a href=&quot;http://ironruby.codeplex.com/WorkItem/Create.aspx&quot; target=&quot;_blank&quot;&gt;submit any issues you find to the CodePlex site&lt;/a&gt;. &lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Thanks!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-3249979134638588635?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=CPQ4THmx86Q:pFG8Dh8ilto:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=CPQ4THmx86Q:pFG8Dh8ilto:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=CPQ4THmx86Q:pFG8Dh8ilto:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=CPQ4THmx86Q:pFG8Dh8ilto:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=CPQ4THmx86Q:pFG8Dh8ilto:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=CPQ4THmx86Q:pFG8Dh8ilto:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=CPQ4THmx86Q:pFG8Dh8ilto:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/CPQ4THmx86Q&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: IronPython gets a long overdue website!</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/KjnDCvoT-MY/ironpython-gets-long-overdue-website.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-7653058652255057222</id>
		<updated>2009-12-15T23:40:43+00:00</updated>
		<content type="html">Thanks to Jimmy Schementi (the new IronPython PM, Ruby lover and all round good guy) IronPython has a new website. And as said best &lt;a href=&quot;http://www.reddit.com/r/programming/comments/aez35/ipy26_released_and_the_new_ironpython_website/&quot;&gt;on Reddit&lt;/a&gt;, it doesn't look like Microsoft made it. The site has links to documentation, community resources and online IronPython examples using Silverlight (including &lt;a href=&quot;http://trypython.org/&quot;&gt;Try Python&lt;/a&gt;).&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironpython-gets-long-overdue-website.html&quot;&gt;IronPython gets a long overdue website!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython.net/&quot;&gt;IronPython.net&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;a href=&quot;http://ironpython.codeplex.com/&quot;&gt;CodePlex&lt;/a&gt; will continue to be the tool we use for project management and releases, but all end-user information will be on IronPython.net. Also, the .com domain still points at the super-old site, but will redirect to this site shortly.&lt;br /&gt;
&lt;br /&gt;
The most notably addition is the .NET Integration Documentation, a thorough set of examples and descriptions of using IronPython with .NET. Considering this is IronPython’s main purpose, it’s amazing we got away with having hardly no documentation for this long … I guess the .NET integration is just that intuitive :) Anyway, please give it a read and let us know if you have any suggestions.&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-7653058652255057222?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/IY_5-Dv71hNnZusGXPhUyCAw4Pw/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/IY_5-Dv71hNnZusGXPhUyCAw4Pw/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/IY_5-Dv71hNnZusGXPhUyCAw4Pw/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/IY_5-Dv71hNnZusGXPhUyCAw4Pw/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=KjnDCvoT-MY:x2nkcxpR2Bs:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=KjnDCvoT-MY:x2nkcxpR2Bs:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=KjnDCvoT-MY:x2nkcxpR2Bs:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=KjnDCvoT-MY:x2nkcxpR2Bs:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=KjnDCvoT-MY:x2nkcxpR2Bs:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/KjnDCvoT-MY&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: WCF Service in pure IronPython with config file</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/RaGpyp24LJo/wcf-service-in-pure-ironpython-with.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-4925282815379543504</id>
		<updated>2009-12-15T23:21:38+00:00</updated>
		<content type="html">In previous blog entries Lukáš Čenovský looked into &lt;a href=&quot;http://ironpython-urls.blogspot.com/2009/11/databinding-and-wcf-services-with.html&quot;&gt;Databinding and WCF Services with IronPython 2.6&lt;/a&gt;. This uses the new &lt;span&gt;__clrtype__ &lt;/span&gt;feature in IronPython 2.6 to interact with .NET features that previously couldn't be done with IronPython.&lt;br /&gt;
&lt;br /&gt;
In this follow up blog entry Lukáš shows how to saved the IronPython interface in an assembly with a config file.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://gui-at.blogspot.com/2009/11/wcf-service-in-pure-ironpython-with.html&quot;&gt;WCF Service in pure IronPython with config file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;I was wrong when I wrote in the last post that the IronPython service cannot be saved into an assembly. It can. Which opens a way to use .config file to configure the service. &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;The interface is the same as in the previous version. The only difference in the service to the previous version is in the ServiceHost initialization - we omit the service configuration parameters because they are in the .config file. I also changed the clr namespace. &lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-4925282815379543504?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/uJBoiRWwMTjx0lHNdAy5CERyWQo/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/uJBoiRWwMTjx0lHNdAy5CERyWQo/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/uJBoiRWwMTjx0lHNdAy5CERyWQo/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/uJBoiRWwMTjx0lHNdAy5CERyWQo/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=RaGpyp24LJo:8THtxGjXtck:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=RaGpyp24LJo:8THtxGjXtck:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=RaGpyp24LJo:8THtxGjXtck:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=RaGpyp24LJo:8THtxGjXtck:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=RaGpyp24LJo:8THtxGjXtck:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/RaGpyp24LJo&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: IronRuby @ RubyConf 2009 – Part 3.5: Embedding IronRuby</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/jatq0ntUhnE/ironruby-rubyconf-2009-part-35.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-4847271533064123372</id>
		<updated>2009-12-15T06:29:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;em&gt;This is part of a &lt;a href=&quot;http://blog.jimmy.schementi.com/search/label/rubyconf&quot;&gt;RubyConf 2009 series&lt;/a&gt;:&lt;/em&gt;     &lt;br /&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-1-summary.html&quot;&gt;Overview&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot;&gt;What sets IronRuby apart?&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot;&gt;Sneaking Ruby to the top&lt;/a&gt; / &lt;strong&gt;Embedding IronRuby&lt;/strong&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot;&gt;Project status&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Imagine you’re building a program to help create animations, visualizations, and other interactive applications. The requirements are simple:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;2D rendering surface with simple primitive shapes &lt;/li&gt;    &lt;li&gt;Simple animation support – callbacks for each frame and each object on the canvas &lt;/li&gt;    &lt;li&gt;User-loadable “macros” for drawing and animating &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;A .NET developer can easily code up the first two requirements in C#, but implementing the third will be tricky. What does a macro look like? How do I discover them? How can I make it interactive? Why is this so hard!? This scenario requires the user to input some data, and the program must make an animation out of it; the data of your program is the code. Here are the options most .NET developers would come up with:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Domain specific language – people usually cop out here and make it XML-based, which happens to produce the most human-unreadable code ever. This DSL &lt;em&gt;could&lt;/em&gt; also be GUI-based, but you won’t get any programmers interesting in extending your app that way. &lt;/li&gt;    &lt;li&gt;Completely punt on the interactivity and require the macros be .NET DLLs. &lt;/li&gt;    &lt;li&gt;Find a way to use C# interactively - either using &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/650ax5cx.aspx&quot; target=&quot;_blank&quot;&gt;CodeDom&lt;/a&gt; to compile and run C# code dynamically (much like ASP.NET does), or code-generate a valid C# class from the snippet, compile it to a DLL (aka shell out to csc.exe), loading that DLL, and finally reflecting over that DLL to call the user’s code. This is, of course, ignoring the question of whether C# is a good macro language or not. &lt;em&gt;It’s worth noting that Mono supports &lt;/em&gt;&lt;a href=&quot;http://www.go-mono.com/docs/index.aspx?link=N:Mono.CSharp&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;hosting&lt;/em&gt;&lt;/a&gt;&lt;em&gt; it’s C# compiler, so you could do more dynamic things with C# through Mono.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Given all that talk about Ruby before, let’s try using IronRuby to write these macros. Here’s a C# app to start from:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/SycsxGvRmmI/AAAAAAAAAOo/rh-7Yk3_YoM/s1600-h/image%5B7%5D.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://lh4.ggpht.com/_OqCZhp9yI0Q/SycsxnTO4RI/AAAAAAAAAOs/SbrR43DWA3s/image_thumb%5B6%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/tree/sketchscript-part1&quot; target=&quot;_blank&quot;&gt;SketchScript starter on GitHub&lt;/a&gt; (&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/zipball/sketchscript-part1&quot; target=&quot;_blank&quot;&gt;zip&lt;/a&gt;)&lt;/p&gt;  &lt;p align=&quot;center&quot;&gt;&lt;em&gt;For the lazy, &lt;a href=&quot;http://github.com/jschementi/rubyconf2009/tree/master/sketchscript&quot; target=&quot;_blank&quot;&gt;get the finished app’s source code&lt;/a&gt; (&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/zipball/master&quot; target=&quot;_blank&quot;&gt;zip&lt;/a&gt;), and a &lt;font color=&quot;#ff0000&quot;&gt;binary build (coming soon)&lt;/font&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The starter app does ABSOLUTELY NOTHING; just a Window with a &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas(VS.100).aspx&quot; target=&quot;_blank&quot;&gt;Canvas&lt;/a&gt; and a bunch of textboxes for coding. Keep in mind this is just a demonstration, and this app could have been written entirely in Ruby, but the point is to show .NET developers how powerful an embedded scripting language can be.&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Setting up your environment&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;.NET developers have choices for development environments: mainly &lt;a href=&quot;http://www.microsoft.com/visualstudio&quot; target=&quot;_blank&quot;&gt;Visual Studio&lt;/a&gt; or &lt;a href=&quot;http://www.icsharpcode.net/OpenSource/SD/&quot; target=&quot;_blank&quot;&gt;SharpDevelop&lt;/a&gt;, or even the command-line and text-editor (I left out &lt;a href=&quot;http://monodevelop.com/&quot; target=&quot;_blank&quot;&gt;MonoDevelop&lt;/a&gt; since Mono doesn’t support the Windows UI stuff I’m doing, but a future version will be able to run in Mono). I’ll be using &lt;a href=&quot;http://download.microsoft.com/download/1/3/1/1316A924-AF88-4CC9-9661-CD1D2BBF3E5E/vs_proweb.exe&quot; target=&quot;_blank&quot;&gt;Visual Studio 2010 Beta 2&lt;/a&gt; for this walkthrough’s screenshots and examples, specifically because it C# 4 has special dynamic language features,&lt;strike&gt; but you can also use C# 3 with Visual Studio 2008 (&lt;/strike&gt;&lt;a href=&quot;http://www.microsoft.com/express/vcsharp/#webInstall&quot; target=&quot;_blank&quot;&gt;&lt;strike&gt;free version here&lt;/strike&gt;&lt;/a&gt;&lt;strike&gt;),&lt;/strike&gt; or just stick to a text-editor and &lt;a href=&quot;http://en.wikipedia.org/wiki/MSBuild&quot; target=&quot;_blank&quot;&gt;MSBuild&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you’re using .NET 4.0, &lt;code&gt;sketchscript\sketchscript.sln&lt;/code&gt; is the solution file you want to use. &lt;strike&gt;The .NET 3.5 version is &lt;code&gt;sketchscript\sketchscript3.5.sln&lt;/code&gt;, but seriously, try out .NET 4.0&lt;/strike&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color=&quot;#ff0000&quot;&gt;I haven’t tested it out in VS2008 yet, so please bare with me. If you’re feeling adventurous, you can fork my git repo, get it working in VS2008, and I’ll pull your changes in.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Adding references to IronRuby&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;If you downloaded SketchScript from the above link, you’ll find four DLLs required for embedding IronRuby in the &lt;code&gt;sketchscript\ironruby&lt;/code&gt; directory. Add those as references to the sketchscript.csproj:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/Sycsx3szVGI/AAAAAAAAAOw/11s_xD274X8/s1600-h/image%5B8%5D.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;225&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/SycsySkF0tI/AAAAAAAAAO0/G6YqFDt8y84/image_thumb%5B7%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;image&quot; width=&quot;285&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In case you’re curious about what each DLL is: &lt;code&gt;IronRuby.dll&lt;/code&gt; is the IronRuby compiler, while &lt;code&gt;IronRuby.Libraries.dll&lt;/code&gt; is the core libraries of Ruby. &lt;code&gt;Microsoft.Dynamic.dll&lt;/code&gt; are the APIs that IronRuby depend on for DLR compiler features, and &lt;code&gt;Microsoft.Scripting.dll&lt;/code&gt; is the DLR Hosting API.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;If anyone who has used IronRuby before is thinking there are missing DLLs, then you’re right. IronRuby’s &lt;code&gt;Microsoft.Scripting.Core.dll&lt;/code&gt; has been integrated into .NET 4.0 as the new &lt;code&gt;System.Core.dll&lt;/code&gt;. This also removes the need for &lt;code&gt;Microsoft.Scripting.ExtensionAttribute.dll&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Embedding IronRuby&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Now let’s get that code window working; first add some &lt;code&gt;using&lt;/code&gt; statements at the top of &lt;a href=&quot;http://github.com/jschementi/rubyconf2009/blob/3db197e19f75832822e28811de90a76bd426cf40/sketchscript/sketchscript/MainWindow.xaml.cs#L19&quot; target=&quot;_blank&quot;&gt;MainWindow.xaml.cs&lt;/a&gt;:&lt;/p&gt;   &lt;p&gt;And some fields to hold onto the scripting engine anywhere in the &lt;code&gt;MainWindow&lt;/code&gt; class:&lt;/p&gt;   &lt;p&gt;Now initialize the scripting engine; add this code to the &lt;code&gt;Loaded&lt;/code&gt; event action, after setting the &lt;code&gt;OutputBuffer&lt;/code&gt; but before the &lt;code&gt;KeyBindings()&lt;/code&gt; call (around line 71):&lt;/p&gt;   &lt;p&gt;And lastly let’s run the code when Ctrl-Enter is pressed. Since that’s already set up for us, all we need to do is add this code in the &lt;code&gt;RunCode&lt;/code&gt; method, right at the &quot;TODO&quot; comment around line 92:&lt;/p&gt;   &lt;p&gt;And that’s it! Now you’ll be able to run some actual Ruby code:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/SycsyiiHxJI/AAAAAAAAAO8/6xVCyHphKOc/s1600-h/image%5B9%5D.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;331&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/Sycsy8GOyTI/AAAAAAAAAPI/gEuDPxBZi9c/image_thumb%5B8%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Interacting with the host application&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Though Ruby code can run, there is no obvious interaction with the host application. That black void of a canvas on the left would be completely useless if it wasn’t accessible from Ruby code, so add this single line to the &lt;code&gt;Loaded&lt;/code&gt; event action, before the &lt;code&gt;KeyBinding()&lt;/code&gt; call:&lt;/p&gt;   &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Note: if the host application didn’t do this, it would still be possible to get to the canvas from Ruby code, but the script writer would have to do it themselves:&lt;/em&gt;&lt;/p&gt;       &lt;p&gt;&lt;em&gt;So, as a general rule-of-thumb, have your host program decide what parts to extend to script code, and have the script code only use that object-model, though their may be ways around it.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Trying it out&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Now that there’s a way to draw on the canvas, play around with drawing random things on the screen. Here’s a little script I’ve been playing with:&lt;/p&gt;   &lt;p&gt;Which draws this:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/SycszJJagnI/AAAAAAAAAPQ/1GpBiNQWFcc/s1600-h/squares%5B3%5D.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;squares&quot; border=&quot;0&quot; height=&quot;445&quot; src=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/SycszvE7NSI/AAAAAAAAAPY/teqQBnaIJkI/squares_thumb%5B2%5D.jpg?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;squares&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ooo, pretty! So without much effort we have a very extendable application. Before you get carried away playing around with making pretty things, there’s one more thing to do to make this app really awesome …&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Animation support&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;While animations could still be built with IronRuby’s native thread support or &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms752312.aspx&quot; target=&quot;_blank&quot;&gt;WPF animations&lt;/a&gt; directly from Ruby code, it’d be nice for the host to provide some simple animation support, like a callback that fires for every frame, and even a way to attach animations to any object.&lt;/p&gt;  &lt;p&gt;The &lt;a href=&quot;http://github.com/jschementi/rubyconf2009/blob/sketchscript-basicembed/sketchscript/sketchscript/MainWindow.xaml.cs#L158&quot; target=&quot;_blank&quot;&gt;host currently supports these two callbacks&lt;/a&gt;, but they need to be wired up. Add the following code at the bottom of the &lt;code&gt;Loaded&lt;/code&gt; event action, before the call to &lt;code&gt;KeyBindings()&lt;/code&gt;: &lt;/p&gt;   &lt;p&gt;And also add this call at the end of the &lt;code&gt;RunCode&lt;/code&gt; method:&lt;/p&gt;   &lt;p&gt;Lastly we need to implement &lt;code&gt;CatureAnimationCallbacks&lt;/code&gt;, by looking for special method names to get a hold of. Look for &lt;code&gt;each_frame&lt;/code&gt; as the &lt;code&gt;EachFrame&lt;/code&gt; action, and &lt;code&gt;each_object&lt;/code&gt; as the &lt;code&gt;EachObject&lt;/code&gt; func.&lt;/p&gt;   &lt;p&gt;Now 30-times-a-second the host will try to call &lt;code&gt;each_frame&lt;/code&gt;, and it will call &lt;code&gt;each_object&lt;/code&gt; once for each element on the canvas, store the return value on the actual element, and then try to call an &lt;code&gt;update&lt;/code&gt; method on that stored object 30-times-a-second. This lets you either run random animations, or specific behavior for objects.&lt;/p&gt;  &lt;p&gt;A good animation example is bouncing, so let's run the script that produced all the squares first, and then run the following code to make them all bounce.&lt;/p&gt;   &lt;p&gt;And now it should look something like this:&lt;/p&gt;   &lt;p&gt;There are more goodies to run in the &lt;a href=&quot;http://github.com/jschementi/rubyconf2009/tree/master/sketchscript/features&quot; target=&quot;_blank&quot;&gt;features directory&lt;/a&gt;, but try writing your own fun little animations. &lt;a href=&quot;http://blog.jredville.com&quot; target=&quot;_blank&quot;&gt;Jim Deville&lt;/a&gt; ported &lt;a href=&quot;http://github.com/jcasimir/code_of_art/raw/master/documents/Code%20of%20Art%20-%20Tutorial.pdf&quot; target=&quot;_blank&quot;&gt;the tutorial&lt;/a&gt; from &lt;a href=&quot;http://github.com/jcasimir&quot; target=&quot;_blank&quot;&gt;Jeff Casimir’s&lt;/a&gt; &lt;a href=&quot;http://github.com/jcasimir/code_of_art&quot; target=&quot;_blank&quot;&gt;Code of Art&lt;/a&gt; talk, which is pretty fun to play with, so if you make your own please post a comment with a screenshot and code!&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/blob/master/sketchscript/features/circles.rb&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;circle.rb&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/Sycszz0ew-I/AAAAAAAAAPg/HPMRUr-U4OI/s1600-h/artclear2%5B2%5D.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;artclear2&quot; border=&quot;0&quot; height=&quot;444&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/Sycs0eNOBVI/AAAAAAAAAPw/16GTRLcFXE4/artclear2_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;artclear2&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And there you have it, IronRuby embedded to do interesting things. In case you missed any steps along the way, &lt;a href=&quot;http://gist.github.com/256632&quot; target=&quot;_blank&quot;&gt;here's the full diff&lt;/a&gt; against the initial download.&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Next stop, &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot;&gt;IronRuby’s status and roadmap&lt;/a&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-4847271533064123372?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=jatq0ntUhnE:jQvtsHvBDDs:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=jatq0ntUhnE:jQvtsHvBDDs:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=jatq0ntUhnE:jQvtsHvBDDs:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=jatq0ntUhnE:jQvtsHvBDDs:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=jatq0ntUhnE:jQvtsHvBDDs:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=jatq0ntUhnE:jQvtsHvBDDs:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=jatq0ntUhnE:jQvtsHvBDDs:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/jatq0ntUhnE&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: IronRuby @ RubyConf - Part 3: Sneaking Ruby to the top</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/vzL4OfwNs30/ironruby-rubyconf-part-3-sneaking-ruby.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-6474314197621642837</id>
		<updated>2009-12-14T09:28:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;em&gt;This is part of a &lt;a href=&quot;http://blog.jimmy.schementi.com/search/label/rubyconf&quot;&gt;RubyConf 2009 series&lt;/a&gt;:&lt;/em&gt;     &lt;br /&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-1-summary.html&quot;&gt;Overview&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot;&gt;What sets IronRuby apart?&lt;/a&gt; | &lt;strong&gt;Sneaking Ruby to the top&lt;/strong&gt; / &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot;&gt;Embedding IronRuby&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot;&gt;Project status&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s be honest: not everyone uses Ruby. I know, it hurts to hear, but it’s the truth. To get a general idea of how &lt;em&gt;bad&lt;/em&gt; it really is, let’s look at indeed.com’s job trends for Ruby, Python, Java, and .NET, and &lt;em&gt;assume &lt;/em&gt;that’s a good measure of usage:&lt;/p&gt;  &lt;div style=&quot;width: 540px;&quot;&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=Ruby%2C+Python%2C+.NET%2C+Java&quot; title=&quot;Ruby, Python, .NET, Java Job Trends&quot;&gt;&lt;img alt=&quot;Ruby, Python, .NET, Java Job Trends graph&quot; border=&quot;0&quot; height=&quot;222&quot; src=&quot;http://www.indeed.com/trendgraph/jobgraph.png?q=Ruby%2C+Python%2C+.NET%2C+Java&quot; width=&quot;400&quot; /&gt; &lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Holy crap!&lt;/strong&gt; Regardless of the actual numbers, we all know what this graph is saying to be true. But why are dynamic language’s so &lt;em&gt;under-used&lt;/em&gt;? Aside from the obvious, like fear of something different, the dynamic language community hasn’t sufficiently answered the “why” questions to the other camp, like “Why should I use Ruby if I already know .NET?”, and “why even bother.” Our answer has always been “Productivity, expressiveness, blah, blah, blah”; that turns out to be a horrible way to sell dynamic languages to people who love C# or Java for it’s productivity and expressiveness. =) However, their fears are justified; Ruby’s main usage today is for stand-alone apps (mainly websites, but there are some client apps), so they assume Ruby can’t be use it in their existing environment.&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Let’s solve this!&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Let’s make it easy for those programmers at the top of the graph to use the languages at the bottom of the graph. Ruby gets to expand its ecosystem, and &lt;em&gt;enterprise&lt;/em&gt; developers get a great dynamic language to use. Ruby is nicely position for this specific scenario since implementations of Ruby exist for both Java and .NET, so Ruby’s usage could become more on-par with Java and .NET. And here’s the way we make this happen: &lt;font color=&quot;#ff8000&quot;&gt;.NET and Java developers can easily &lt;strong&gt;embed&lt;/strong&gt; Ruby into their existing applications for &lt;strong&gt;scripting&lt;/strong&gt;&lt;/font&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;All this also applies for Python, and IronPython is forging this path along with IronRuby. This talk was for a Ruby crowd … I hope you understand &lt;a href=&quot;http://www.voidspace.org.uk/&quot; target=&quot;_blank&quot;&gt;Michael&lt;/a&gt; :). But don’t worry, &lt;a href=&quot;http://blogs.msdn.com/dinoviehland/archive/2009/11/17/world-s-worst-paint-program.aspx&quot; target=&quot;_blank&quot;&gt;Dino Viehland&lt;/a&gt; has already &lt;a href=&quot;http://microsoftpdc.com/Sessions/FT30&quot; target=&quot;_blank&quot;&gt;begun brainwashing .NET developers for Python&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Also, since I work on IronRuby, I’ll be talking about this in relation to IronRuby and .NET from now on, though the same arguments work for JRuby and Java (and Jython). Check out the &lt;a href=&quot;http://kenai.com/projects/jruby/pages/RedBridge&quot; target=&quot;_blank&quot;&gt;embedding JRuby page&lt;/a&gt;, and &lt;a href=&quot;http://www.jython.org/archive/21/docs/embedding.html&quot; target=&quot;_blank&quot;&gt;also how all this work in Jython&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The .NET people reading this might be smiling, but the Ruby people want to vomit … &lt;em&gt;(maybe partly because of .NET, but in all seriousness)&lt;/em&gt; … because of the word “&lt;em&gt;scripting”&lt;/em&gt;. I know, I too hate the negative associations “&lt;em&gt;scripting”&lt;/em&gt; has; when I first started working at Microsoft I was openly against naming a component “Microsoft.Scripting”, but who listens to the new guy? For those who don’t get it, “&lt;em&gt;scripting”&lt;/em&gt; makes these amazing languages sound like they are only useful for little toy things, and not for real work. Anyway, this plan takes advantage of that misconception, so don’t look at it as such a bad thing. :)&lt;/p&gt;  &lt;h4&gt;&lt;font color=&quot;#ff8000&quot;&gt;Why and How?&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;&lt;em&gt;Ok, .NET developers, stop reading … you’ll ruin the surprise! Just kidding. I love you. Read on …&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Since .NET developers see Ruby as a &lt;em&gt;scripting&lt;/em&gt; language, it’s not a stretch to convince them that Ruby is good for embedding into their applications as a extensibility feature; allowing customize their application with bits of Ruby code. Here’s where all the &lt;a href=&quot;http://en.wikipedia.org/wiki/Trojan_Horse&quot; target=&quot;_blank&quot;&gt;Trojans jump out of the wooden horse&lt;/a&gt;. Getting Ruby into existing .NET applications is a much easier way for those developers to learn and use Ruby, rather than asking them to build a new app from scratch, or just look at tutorials, docs, etc, without having a good reason to. If .NET developers want to look at Ruby for use in their existing projects, then we’ve succeeded; it’ll then be pretty obvious that they can do &lt;em&gt;real &lt;/em&gt;things with these &lt;em&gt;so-called&lt;/em&gt; scripting languages. They’ll probably start using Ruby to prototype new features in their existing system, and then either keep that code as Ruby, or port some of it to their main language. Keep in mind, the goal isn’t to steal people from .NET – they would have left long ago like many of the Ruby community did – it’s to make Ruby co-exist with these more “enterprise” systems, and overall &lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;make software development fun again for everyone&lt;/strong&gt;&lt;/font&gt;. &lt;/p&gt;  &lt;p&gt;But how do .NET developers really benefit from having a scripting language they can use from their current environments? Three words: &lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;No More XML&lt;/strong&gt;&lt;/font&gt;. XML seemed to be the solution to all .NET developer’s problems since it was a way to make their environments more dynamic. It is easy to parse and walk XML, making it also easy to attach some meaning to seemingly meaningless angle-brackets. One could implement anything using this technique, even logic. Which is why XML became a dynamic language and meta-programming tool for .NET. But really &lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;XML is a work-around to these static languages lacking the ability to be treated as both code and data&lt;/strong&gt;&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;Being able to use your code just like your data is liberating. For example, running Ruby code from just at string:&lt;/p&gt;   &lt;p&gt;&lt;em&gt;IronRuby supports the &lt;a href=&quot;http://dlr.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=91404&quot; target=&quot;_blank&quot;&gt;DLR Hosting API&lt;/a&gt;, a language-neutral script hosting API for .NET. For instance, supporting another is just as easy as changing the 2nd line to &quot;IronPython&quot;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Imagine doing this with XML; you’d have to somehow encode what element and field you want to modify, along the value to update it to, and then use something like reflection to interpret the XML and do the work. And that’s just for this simple example of setting the text of a TextBlock. So using a real programming language allows for endless extensibility-possibilities. Ruby is especially interesting since it can be &lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;simple enough for non-programmers, but powerful enough for adding full features&lt;/strong&gt;&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;Software which allows simple extensibility, like Firefox and Rails, tend to always create an ecosystem of extensions around them, which end up being one of the most compelling features of the program. Maybe that next app could be yours?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Next up, &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot;&gt;an example of embedding IronRuby for graphics&lt;/a&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-6474314197621642837?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=vzL4OfwNs30:a2Y-Rn54OYE:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=vzL4OfwNs30:a2Y-Rn54OYE:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=vzL4OfwNs30:a2Y-Rn54OYE:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=vzL4OfwNs30:a2Y-Rn54OYE:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=vzL4OfwNs30:a2Y-Rn54OYE:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=vzL4OfwNs30:a2Y-Rn54OYE:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=vzL4OfwNs30:a2Y-Rn54OYE:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/vzL4OfwNs30&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: NWSGI 2 RC 2 and IronPython Extensions for Visual Studio 2010</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/_k8YvK2gAUM/nwsgi-2-rc-2-and-ironpython-extensions.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-5929264958976751356</id>
		<updated>2009-12-13T21:41:43+00:00</updated>
		<content type="html">Jeff Hardy is a big cheese in the IronPython world. One of his older projects is NWSGI, an implementation of the Python WSGI (Web Server Gateway Interface) specification for .NET. This allows Python WSGI applications to run on IronPython and be served by IIS.&lt;br /&gt;
&lt;br /&gt;
One of his newer projects is an extension of Visual Studio 2010 (still in beta) to provide Python syntax highlighting and IronPython support.&lt;br /&gt;
&lt;br /&gt;
Jeff has recently announced progress in both projects.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/11/nwsgi-20-release-candidate-2.html&quot;&gt;NWSGI 2.0 Release Candidate 2&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;The &lt;a href=&quot;http://nwsgi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36268&quot;&gt;final release candidate&lt;/a&gt; of NWSGI 2.0 is now available. Except for version numbers, this is what will become NWSGI 2.0 as soon as IronPython 2.6 is released.&lt;br /&gt;
&lt;br /&gt;
NWSGI 2.0 Release Candidate 2 includes all of the features of NWSGI 2.0 Release Candidate 1, and adds support configuring tracing, lightweight scopes, and the profiler. It is built against IronPython 2.6 RC3.&lt;br /&gt;
&lt;br /&gt;
The following issues are fixed in this release:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://nwsgi.codeplex.com/WorkItem/View.aspx?WorkItemId=5765&quot;&gt;Add configuration option for Profiler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nwsgi.codeplex.com/WorkItem/View.aspx?WorkItemId=5766&quot;&gt;Add configuration option for Lightweight Scopes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nwsgi.codeplex.com/WorkItem/View.aspx?WorkItemId=5767&quot;&gt;Add configuration option for tracing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://jdhardy.blogspot.com/2009/11/ironpython-extensions-for-visual-studio.html&quot;&gt;IronPython Extensions for Visual Studio 2010&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bitbucket.org/jdhardy/ironpython.visualstudio/downloads/?highlight=2612&quot;&gt;IronPython.VisualStudio on BitBucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://visualstudiogallery.msdn.microsoft.com/de-de/a0ffaffc-d1c2-4b6c-a9d1-3addc37a5673&quot;&gt;IronPython.VisualStudio on the Visual Studio Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt; Lately, I’ve been experimenting with the new editor APIs in Visual Studio 2010 to build some simple extensions to make Python editing a little better. Helpfully, IronPython exposes most of the complicated infrastructure (the tokenizer) to make the job easy. The documentation for the new editor APIs is still a bit weak; hopefully that will improve by the final release. In the meantime, the examples are the best source of information. There also a series of blog posts by an Mike Feingold about the &lt;a href=&quot;http://www.hill30.com/MikeFeingoldBlog/index.php/2009/07/29/django-editor-in-vs-2010-part-0-background/&quot;&gt;NDjango editor for VS2010&lt;/a&gt; that form a great end-to-end example.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download &amp;amp; Installation&lt;/b&gt;&lt;br /&gt;
Download IronPython Extensions for Visual Studio 2010 (and the source code; Ms-PL as always) from my BitBucket repository or from the Visual Studio Gallery (direct link). For direct downloads, just run (double-click) the .vsix file to install it into Visual Studio. Otherwise, you can use the extension manager (search for &quot;IronPython&quot;) and install it directly from Visual Studio.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Features&lt;/b&gt;&lt;br /&gt;
The extensions provide three features so far: syntax highlighting, brace matching, and outlining.&lt;br /&gt;
&lt;br /&gt;
In the future I'm planning on adding project support, templates, and (most difficult of all) IntelliSense.&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-5929264958976751356?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/fKeBQvccwEfWUlFBR7EyLjaGzuU/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/fKeBQvccwEfWUlFBR7EyLjaGzuU/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/fKeBQvccwEfWUlFBR7EyLjaGzuU/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/fKeBQvccwEfWUlFBR7EyLjaGzuU/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=_k8YvK2gAUM:c1eecGRAw5w:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=_k8YvK2gAUM:c1eecGRAw5w:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=_k8YvK2gAUM:c1eecGRAw5w:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=_k8YvK2gAUM:c1eecGRAw5w:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=_k8YvK2gAUM:c1eecGRAw5w:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/_k8YvK2gAUM&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">IronPython URLs: IronPython 2.6 Final Released</title>
		<link href="http://feedproxy.google.com/~r/IronpythonUrls/~3/BrmC3eXDBQg/ironpython-26-final-released.html"/>
		<id>tag:blogger.com,1999:blog-3604515438787408842.post-4485023901027216356</id>
		<updated>2009-12-13T18:50:22+00:00</updated>
		<content type="html">IronPython 2.6 is finally out! IronPython 2.6 is a new version of IronPython targeting compatibility with Python 2.6. As well as the new language and library features that come with Python 2.6, IronPython 2.6 has new features for improved performance, general Python compatibility and better .NET integration. It's a great release; congratulations and thanks to the IronPython team.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&quot;&gt;Download IronPython 2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython.codeplex.com/wikipage?title=Samples&amp;amp;version=33&quot;&gt;IronPython Samples for IronPython 2.6&lt;/a&gt;  &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ironpython.codeplex.com/wikipage?title=IP26FinalVsCPy26Perf&amp;amp;version=1&quot;&gt;Performance Comparison: IronPython 2.6 Final and CPython 2.6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; IronPython 2.6 final is identical to release candidate 3. Features new to IronPython in version 2.6 include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;span&gt;__clrtype__&lt;/span&gt; metaclass for data binding and .NET attribute support&lt;/li&gt;
&lt;li&gt;Implementation of the &lt;span&gt;ctypes&lt;/span&gt; module&lt;/li&gt;
&lt;li&gt;Support for Python stack frames and &lt;span&gt;sys.settrace&lt;/span&gt;, which means the &lt;span&gt;pdb&lt;/span&gt; debugger works (and better debugging from the .NET side)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Better performance through adaptive compilation&lt;/li&gt;
&lt;li&gt;Faster startup&lt;/li&gt;
&lt;/ul&gt;There are several changes to the samples in IronPython 2.6. These include two new samples:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;CommentChecker&lt;/b&gt;&lt;br /&gt;
Not only will this sample show you how to utilize Word's spell checking functionality from IronPython; it'll also make your own Python code better! You see, this sample processes Python files looking for code comments that contain misspellings. Once these mistakes have been identified Word is utilized again to present you with the correct spellings. All of this is tied together with an elegant, user-friendly interface constructed from .NET's Windows Presentation Framework. &lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;ClrType&lt;/b&gt;&lt;br /&gt;
The ClrType sample shows how to define a class in IronPython with required CLR members. Normally, a class definition in Python does not map directly to a unique CLR type. This is because the semantics of classes are different between Python and the CLR. For example, in Python it is possible to change the base types just by assigning to the bases attribute on the type object. However, the same is not possible with CLR classes. Hence, IronPython implements Python classes without mapping them directly to CLR types. Using the ClrType sample you’ll be able to define CLR fields, properties, class-level attributes, and declare strongly-typed methods.&lt;br /&gt;
&lt;/blockquote&gt;Pyc, the IronPython compiler, is no longer available as a sample as &quot;&lt;i&gt;it was incorporated directly into IronPython releases as a tool&lt;/i&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
The full IronPython 2.6 release notes:&lt;br /&gt;
&lt;blockquote&gt;We’re proud to announce the release of IronPython 2.6 final. This is a major release with improvements across all areas of IronPython. Significant changes include: &lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Updating the language and standard library to match CPython 2.6&lt;/li&gt;
&lt;li&gt;Improved .NET integration&lt;/li&gt;
&lt;li&gt;Updating to the latest version of the DLR&lt;/li&gt;
&lt;li&gt;Adding previously missing CPython features and fixing bugs&lt;/li&gt;
&lt;li&gt;Performance improvements in particular startup time improvements&lt;/li&gt;
&lt;/ul&gt;Python 2.6 support includes a large number of new features which include support for the new bytes and byte array types (PEP 3112), decorators for classes (PEP 3129), advanced string formatting (PEP 3101) which will feel familiar to .NET users and integrates nicely with &lt;span&gt;IFormattable&lt;/span&gt;, print as a function (PEP 3105), Abstract Base Classes (PEP 3119), support for binary literals, along with lots of other minor features and changes.&lt;br /&gt;
&lt;br /&gt;
IronPython also continues to improve .NET integration in this release. We’ve added the &lt;span&gt;__clrtype__&lt;/span&gt; method to types which enables deep integration via meta-classes with the .NET type system. There are also a number of smaller changes such as supporting &lt;span&gt;IDisposable&lt;/span&gt; in for loops matching the behavior of other .NET languages. This release also includes the latest version of the DLR and fixes a number of issues related to cross-language dynamic interop. Not to be left out there’s improvements in Silverlight integration by supporting Python code in HTML script tags.&lt;br /&gt;
&lt;br /&gt;
We’ve also continued to improve Python compatibility by adding missing features and fixing bugs. In this release we’ve added support for the ctypes module which provides interop with native code in a compatible way across Python implementations. We’ve also implemented &lt;span&gt;sys.settrace&lt;/span&gt; to provide support for the &lt;span&gt;pdb&lt;/span&gt; module and other Python debuggers. This release also changes how we support &lt;span&gt;sys.getframe&lt;/span&gt;: a fully working version is now available by a command line option; when not enabled &lt;span&gt;sys.getframe&lt;/span&gt; doesn’t exist at all. This release also fixes over 400 bugs removing a large number of smaller incompatibilities.&lt;br /&gt;
&lt;br /&gt;
As always we’ve also continued to improve performance, and this release primarily focuses on improving startup time. The IronPython installer now pre-compiles (ngens) IronPython during installation on both 32-bit and 64-bit platforms. Modules are now interpreted initially and hot functions are compiled for faster import times. A number of other code paths that used to involve runtime code generation have been optimized to be contained within the pre-compiled IronPython binaries. We’ve also made a number of smaller changes which improve performance in other areas such as adding constant folding. &lt;br /&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3604515438787408842-4485023901027216356?l=ironpython-urls.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Uzi-4HixVmKcV1zPbwg3zzGNtlI/0/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Uzi-4HixVmKcV1zPbwg3zzGNtlI/0/di&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/Uzi-4HixVmKcV1zPbwg3zzGNtlI/1/da&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;true&quot; src=&quot;http://feedads.g.doubleclick.net/~a/Uzi-4HixVmKcV1zPbwg3zzGNtlI/1/di&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=BrmC3eXDBQg:WsZM_RV1Bxw:4cEx4HpKnUU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=BrmC3eXDBQg:WsZM_RV1Bxw:4cEx4HpKnUU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=BrmC3eXDBQg:WsZM_RV1Bxw:YwkR-u9nhCs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?d=YwkR-u9nhCs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?a=BrmC3eXDBQg:WsZM_RV1Bxw:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/IronpythonUrls?i=BrmC3eXDBQg:WsZM_RV1Bxw:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/IronpythonUrls/~4/BrmC3eXDBQg&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael Foord (noreply@blogger.com)</name>
			<uri>http://ironpython-urls.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">tech-michael: Silverlight talking to Arduino</title>
		<link href="http://feedproxy.google.com/~r/MichaelsRandomTechnologyPosts/~3/GcIKd9aWxwc/silverlight-talking-to-arduino.html"/>
		<id>tag:blogger.com,1999:blog-6355218471395609447.post-2986251276038064013</id>
		<updated>2009-12-13T00:00:00+00:00</updated>
		<content type="html">&lt;p&gt;This is an initial rough post, but I have managed to get Silverlight 4 beta talking to an ActiveXperts COM+ interface that talks to an Arduino over a serial connection.&lt;/p&gt; &lt;p&gt;Here is my first attempt to do a video of it. Looks like I’m going to need to learn how to make a screencast.&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:d403c786-35db-4ceb-9cb1-c5e139343d78&quot; style=&quot;padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px;&quot;&gt;&lt;div id=&quot;e220a5dc-be04-432f-9ac9-e043c645a4cf&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=iftRQuikrjk&amp;amp;feature=youtube_gdata&quot; target=&quot;_new&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://lh5.ggpht.com/_9gNP2BoIX5o/SyQuigtGISI/AAAAAAAAAVQ/UC_UB4vzXl0/video61e5b122c4a0%5B2%5D.jpg?imgmax=800&quot; style=&quot;border-style: none;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_9gNP2BoIX5o/SyQujf1Vb1I/AAAAAAAAAVU/Huab109GmNI/s1600-h/image%5B3%5D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;587&quot; src=&quot;http://lh6.ggpht.com/_9gNP2BoIX5o/SyQukczA4rI/AAAAAAAAAVY/TBp_3iN_jnc/image_thumb%5B1%5D.png?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px;&quot; title=&quot;image&quot; width=&quot;752&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;The C# code.&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Net;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Documents;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Media;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Media.Animation;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Shapes;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Windows.Interop;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;using &lt;/span&gt;System.Threading;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;namespace &lt;/span&gt;TestSerial&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue;&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af;&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;button1_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af;&quot;&gt;App&lt;/span&gt;.Current.InstallState == &lt;span style=&quot;color: #2b91af;&quot;&gt;InstallState&lt;/span&gt;.NotInstalled)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af;&quot;&gt;App&lt;/span&gt;.Current.Install();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;com;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;button2_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;           com=&lt;span style=&quot;color: #2b91af;&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;ActiveXperts.ComPort&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;dynamic &lt;/span&gt;count = com.GetDeviceCount();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;            &lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;dynamic&lt;/span&gt;&amp;gt; devices = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;dynamic&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;i=&lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;;i&amp;lt;=&lt;span style=&quot;color: brown;&quot;&gt;9&lt;/span&gt;;i++)&lt;br /&gt;            {&lt;br /&gt;                devices.Add(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;COM&quot; &lt;/span&gt;+ i);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;int &lt;/span&gt;i = &lt;span style=&quot;color: brown;&quot;&gt;0&lt;/span&gt;; i &amp;lt; count; i++)&lt;br /&gt;            {&lt;br /&gt;                    devices.Add(com.GetDevice(i));&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;            devicelst.ItemsSource = devices;&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue;&quot;&gt;private void &lt;/span&gt;button3_Click(&lt;span style=&quot;color: blue;&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af;&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: green;&quot;&gt;//string device = devicelst.SelectedItem.ToString();&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(devicelst.SelectedItem == &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) { &lt;span style=&quot;color: #2b91af;&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Please pick a port&quot;&lt;/span&gt;); &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;            com.Device = devicelst.SelectedItem.ToString();&lt;br /&gt;            com.Open();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af;&quot;&gt;MessageBox&lt;/span&gt;.Show(com.GetErrorDescription(com.LastError));&lt;br /&gt;            &lt;span style=&quot;color: blue;&quot;&gt;string &lt;/span&gt;buffer = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;            System.Threading.&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread &lt;/span&gt;t = &lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ThreadStart&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue;&quot;&gt;while &lt;/span&gt;(&lt;span style=&quot;color: brown;&quot;&gt;1 &lt;/span&gt;== &lt;span style=&quot;color: brown;&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    com.Sleep(&lt;span style=&quot;color: brown;&quot;&gt;200&lt;/span&gt;);&lt;br /&gt;                    buffer = com.ReadString();&lt;br /&gt;                    &lt;span style=&quot;color: blue;&quot;&gt;if &lt;/span&gt;(buffer == &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;) { com.Close(); &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;                    tb.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue;&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                    {&lt;br /&gt;                        tb.Text += &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;\r\n&quot; &lt;/span&gt;+ com.ReadString();&lt;br /&gt;                    });&lt;br /&gt;                }&lt;br /&gt;            }));&lt;br /&gt;            t.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt; &lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;The Xaml.&lt;br /&gt;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;UserControl &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;TestSerial.MainPage&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Ignorable&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;d&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;DesignHeight&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;300&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;DesignWidth&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;400&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;LayoutRoot&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;White&quot;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Install&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Left&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button1&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;75&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button1_Click&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;0&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Get Devices&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Left&quot;  &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button2&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;75&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button2_Click&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ComboBox &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;devicelst&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1,0,0,0&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;ComboBox&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Connect&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;3&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Left&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button3&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;button3_Click&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;tb&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.ColumnSpan&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;3&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;2&quot; &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;VerticalScrollBarVisibility&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;Visible&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515;&quot;&gt;UserControl&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;/*&lt;br /&gt;  ASCII table&lt;br /&gt; Prints out byte values in all possible formats:  &lt;br /&gt; * as raw binary values&lt;br /&gt; * as ASCII-encoded decimal, hex, octal, and binary values&lt;br /&gt; For more on ASCII, see &lt;a href=&quot;http://www.asciitable.com&quot;&gt;http://www.asciitable.com&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/ASCII&quot;&gt;http://en.wikipedia.org/wiki/ASCII&lt;/a&gt;&lt;br /&gt; The circuit:  No external hardware needed.&lt;br /&gt; created 2006&lt;br /&gt; by Nicholas Zambetti &lt;br /&gt; modified 18 Jan 2009&lt;br /&gt; by Tom Igoe&lt;br /&gt; &amp;lt;&lt;a href=&quot;http://www.zambetti.com&quot;&gt;http://www.zambetti.com&lt;/a&gt;&amp;gt; &lt;br /&gt; */&lt;br /&gt;void setup() &lt;br /&gt;{ &lt;br /&gt;  Serial.begin(9600); &lt;br /&gt;&lt;/p&gt;&lt;p&gt;  // prints title with ending line break &lt;br /&gt;  Serial.println(&quot;ASCII Table ~ Character Map&quot;); &lt;br /&gt;} &lt;br /&gt;&lt;/p&gt;&lt;p&gt;// first visible ASCIIcharacter '!' is number 33:&lt;br /&gt;int thisByte = 33; &lt;br /&gt;// you can also write ASCII characters in single quotes.&lt;br /&gt;// for example. '!' is the same as 33, so you could also use this:&lt;br /&gt;//int thisByte = '!';  &lt;/p&gt;&lt;p&gt;void loop() &lt;br /&gt;{ &lt;br /&gt;  // prints value unaltered, i.e. the raw binary version of the &lt;br /&gt;  // byte. The serial monitor interprets all bytes as &lt;br /&gt;  // ASCII, so 33, the first number,  will show up as '!' &lt;br /&gt;  Serial.print(thisByte, BYTE);    &lt;/p&gt;&lt;p&gt;  Serial.print(&quot;, dec: &quot;); &lt;br /&gt;  // prints value as string as an ASCII-encoded decimal (base 10).&lt;br /&gt;  // Decimal is the  default format for Serial.print() and Serial.println(),&lt;br /&gt;  // so no modifier is needed:&lt;br /&gt;  Serial.print(thisByte);      &lt;br /&gt;  // But you can declare the modifier for decimal if you want to.&lt;br /&gt;  //this also works if you uncomment it: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;  // Serial.print(thisByte, DEC);  &lt;/p&gt;&lt;p&gt;  Serial.print(&quot;, hex: &quot;); &lt;br /&gt;  // prints value as string in hexadecimal (base 16):&lt;br /&gt;  Serial.print(thisByte, HEX);     &lt;/p&gt;&lt;p&gt;  Serial.print(&quot;, oct: &quot;); &lt;br /&gt;  // prints value as string in octal (base 8);&lt;br /&gt;  Serial.print(thisByte, OCT);     &lt;/p&gt;&lt;p&gt;  Serial.print(&quot;, bin: &quot;); &lt;br /&gt;  // prints value as string in binary (base 2) &lt;br /&gt;  // also prints ending line break:&lt;br /&gt;  Serial.println(thisByte, BIN);   &lt;/p&gt;&lt;p&gt;  // if printed last visible character '~' or 126, stop: &lt;br /&gt;  if(thisByte == 126) {     // you could also use if (thisByte == '~') {&lt;br /&gt;    // This loop loops forever and does nothing&lt;br /&gt;    while(true) { &lt;br /&gt;      continue; &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;  // go on to the next character&lt;br /&gt;  thisByte++;  &lt;br /&gt;} &lt;br /&gt;  &lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6355218471395609447-2986251276038064013?l=tech-michael.blogspot.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/MichaelsRandomTechnologyPosts/~4/GcIKd9aWxwc&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Michael (noreply@blogger.com)</name>
			<uri>http://tech-michael.blogspot.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Apple's Reply to Nokia</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-12.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-12.html</id>
		<updated>2009-12-12T11:37:00+00:00</updated>
		<content type="html">&lt;p&gt;I felt like an archaeologist trying to formulate a theory of
	what had happened there.  I loved the feeling of trying to put
	together the story from a partial puzzle.
	
	&lt;/p&gt;&lt;p&gt;The patent infringement lawsuit against Apple was a list of
	accusations and patent lists that Nokia claims that Apple
	infringes with their iPhone.  But behind the background
	information provided in the legal document and the list of
	ways in which Nokia felt Apple had wronged them, it was
	difficult to put together a narrative.  Scanning the
	discussion forums for clues did not lead to anything
	significant beyond the superficial analysis.
	
	&lt;/p&gt;&lt;p&gt;As a software developer, and in particular a Linux software
	developer, I have mixed feelings about this lawsuit.  Apple
	has not been exactly a model citizen when it comes to
	interoperability between Apple and Linux products while Nokia
	has embraced Linux, embraced open source development and
	contributed to the universal pool of software.  But I also
	found myself enjoying using my iPhone and building software
	for the iPhone.
	
	&lt;/p&gt;&lt;p&gt;I wanted to give both companies the benefit of the doubt.
	What had happened between these two companies that had forced
	Nokia to sue Apple?
	
	&lt;/p&gt;&lt;p&gt;There were various possibilities.
	
	&lt;/p&gt;&lt;p&gt;The lack of immediate response from Apple suggested that
	they were caught unprepared, but that was just a small chance.
	Probably the companies had been on negotiations and these
	negotiations broke off when they could not reach an agreement.
	The iPhone had taken the world by surprise, nobody had seen it
	coming and nobody had envisioned that Apple would not merely
	do an incrementally better phone, but it would be many times
	better than anything available at the time.
	
	&lt;/p&gt;&lt;p&gt;When Apple launched the iPhone, Steve Jobs wanted everyone
	to know that iPhone's innovations were patented and that Apple
	planned to prevent others from copying those ideas.
	
	&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://stadium.weblogsinc.com/engadget/files/apple-nokia-answer.pdf&quot;&gt;Apple's
	response to Nokia&lt;/a&gt; is a very educational document.  It
	reads as a crash course on patent litigation when it lays out
	Apple's strategy for their defense.  It is also a crash course
	on the patent system and how corporation work with
	international bodies to develop technology.  But most
	importantly for me, it fills some the gaps of what happened
	behind the scenes.
	
	&lt;/p&gt;&lt;p&gt;We do not know yet which company approached the other first
	about patent infringement.  It could have been someone on
	Nokia's board that decided to extract some revenue from their
	patents to compensate for their business losses or it could
	have been initiated by Apple's team notifying Nokia that their
	new phones used some idea from their phones.
	
	&lt;/p&gt;&lt;p&gt;What does emerge from Apple's reply is that Nokia tried to
	use the patents that they had pledged to license under
	reasonable terms to get themselves rights to Apple's juicier
	iPhone innovations.  Nokia's pledged patents might be
	formidable patents and key to the implementation of certain
	cellular and WiFi communications, but by being pledged under
	F/RAND terms to various industry consortia they lost a
	significant amount of value.  But what they lost in value,
	they made up in volume.  This is in stark contrast with
	Apple's un-pledged, pristine, fully proprietary patents that
	Nokia and everyone but China are trying to get rights to.&lt;/p&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Dino Viehland: IronPython 2.6 Released!</title>
		<link href="http://blogs.msdn.com/dinoviehland/archive/2009/12/11/ironpython-2-6-released.aspx"/>
		<id>91d46819-8472-40ad-a661-2c78acb4018c:9935958</id>
		<updated>2009-12-11T23:44:00+00:00</updated>
		<content type="html">&lt;p&gt;I've very happy to announced that we've officially released IronPython 2.6!  This is a great release which brings us up to date with the stable CPython 2.x branch, greatly improves startup time performance, continues to improve our support for deep .NET integration, adds major new features like pdb and sys.settrace support, and as usual we've fixed a ton of bugs along the way.  It's also identical to RC3 in every way so if you've already installed RC3 you're ready to go!  If not you can download it now from CodePlex: &lt;span&gt;&lt;a href=&quot;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&quot;&gt;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Here's the full release notes if you'd like more details about what's changed:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Hello Python Community,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;We’re proud to announce the release of IronPython 2.6 final.  This is a major release with improvements across all areas of IronPython and can be downloaded from &lt;a href=&quot;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&quot;&gt;http://ironpython.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12482&lt;/a&gt;.  Significant changes include:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Symbol; COLOR: black;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: 'Times New Roman','serif'; COLOR: black;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Updating the language and standard library to match CPython 2.6&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Symbol; COLOR: black;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: 'Times New Roman','serif'; COLOR: black;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Improved .NET integration&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Symbol; COLOR: black;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: 'Times New Roman','serif'; COLOR: black;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Updating to the latest version of the DLR&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Symbol; COLOR: black;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: 'Times New Roman','serif'; COLOR: black;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Adding previously missing CPython features and fixing bugs&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoListParagraph&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Symbol; COLOR: black;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;FONT-FAMILY: 'Times New Roman','serif'; COLOR: black;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Performance improvements in particular startup time improvements&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Python 2.6 support includes a large number of new features which include support for the new bytes and byte array types (&lt;a href=&quot;http://www.python.org/dev/peps/pep-3112/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;PEP 3112&lt;/font&gt;&lt;/a&gt;), decorators for classes (&lt;a href=&quot;http://www.python.org/dev/peps/pep-3129/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;PEP 3129&lt;/font&gt;&lt;/a&gt;), advanced string formatting (&lt;a href=&quot;http://www.python.org/dev/peps/pep-3101/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;PEP 3101&lt;/font&gt;&lt;/a&gt;) which will feel familiar to .NET users and integrates nicely with IFormattable, print as a function (&lt;a href=&quot;http://www.python.org/dev/peps/pep-3105/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;PEP 3105&lt;/font&gt;&lt;/a&gt;), Abstract Base Classes (&lt;a href=&quot;http://www.python.org/dev/peps/pep-3119/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;PEP 3119&lt;/font&gt;&lt;/a&gt;), support for binary literals, along with lots of other minor features and changes.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;IronPython also continues to improve .NET integration in this release.  We’ve added the &lt;a href=&quot;http://ironpython.net/ironpython/documentation/dotnet/dotnet.html#clrtype&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;__clrtype__ method&lt;/font&gt;&lt;/a&gt; to types which enables deep integration via meta-classes with the .NET type system.  There are also a number of smaller changes such as supporting &lt;a href=&quot;http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=24503&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;IDisposable in for loops&lt;/font&gt;&lt;/a&gt; matching the behavior of other .NET languages.  This release also includes the latest version of the DLR and fixes a number of issues related to cross-language dynamic interop.  Not to be left out there’s improvements in Silverlight integration by supporting &lt;a href=&quot;http://ironpython.net/browser/sl-back-to-just-text.pdf&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;Python code in HTML script tags&lt;/font&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;We’ve also continued to improve Python compatibility by adding missing features and fixing bugs.  In this release we’ve added support for the &lt;a href=&quot;http://docs.python.org/library/ctypes.html&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;ctypes&lt;/font&gt;&lt;/a&gt; module which provides interop with native code in a compatible way across Python implementations.  We’ve also implemented sys.settrace to provide support for the &lt;a href=&quot;http://docs.python.org/library/pdb.html&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;pdb&lt;/font&gt;&lt;/a&gt; module and other Python debuggers.  This release also changes how we support sys._getframe: a fully working version is now available by a command line option;  when not enabled sys._getframe doesn’t exist at all. This release also fixes over 400 bugs removing a large number of smaller incompatibilities.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;As always we’ve also continued to improve performance, and this release primarily focuses on improving startup time.  The IronPython installer now pre-compiles (ngens) IronPython during installation on both 32-bit and 64-bit platforms.  Modules are now interpreted initially and hot functions are compiled for faster import times.  A number of other code paths that used to involve runtime code generation have been optimized to be contained within the pre-compiled IronPython binaries.  We’ve also made a number of smaller changes which improve performance in other areas such as adding constant folding. &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Finally we’d like to thank everyone who reported issues and helped make this a better release:  Anders M. Mikkelsen, Dan Eloff, Zachc, yamakox, vernondcole, VAks, tscottw, tonyandrewmeyer, tomwright, TomasMatousek, tkamiya, timers, srivatsn, sopeajw, saveenr, sanxiyn, rridge, ronniemaor, quirogaco, pythonfoo, pysunil, pm100, pl6306, paulfelix, orestis, olegt, oldman, NDHUMuscle, mycall, mmaly, mmacdonaldssfcu, maplpro, luntain, llaske, lbaker, Lawouach, laurionb, laughingboy, kurhan, kuno, kowenswp, klrohe, kevgu, jmesserly, jlunder, jdhardy, jbevain, jackeyoo, hhonisch, gz, gjones, fwereade, deadalusai, daveremy, Seo Sanghyeon, CurtHagenlocher, chaghi, cgravill, cartman, bobarnso, atifaziz, ashcor, alvanet, Helmut, fuzzyman, fabiofz, Eloff, RuiDC, Kevin Chu, Kyle Howland-Rose egonw, davec, dungen, dsblank, cjacobs, dmajnemer, leppie, Mark Rees, soulfry, tatwright, ufechner and wilberforce.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;Thank you for your continued support of IronPython.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span style=&quot;COLOR: black;&quot;&gt;The IronPython Team&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0in 0in 10pt;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;&lt;img height=&quot;1&quot; src=&quot;http://blogs.msdn.com/aggbug.aspx?PostID=9935958&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>DinoViehland</name>
			<uri>http://blogs.msdn.com/dinoviehland/default.aspx</uri>
		</author>
	</entry>

	<entry>
		<title type="html">John Lam on IronRuby: Motorola DROID Review</title>
		<link href="http://feedproxy.google.com/~r/LessIsBetter/~3/wm2uVRpfxwU/motorola-droid-review.html"/>
		<id>tag:typepad.com,2003:post-6a00d834fc885d53ef0120a741bcc5970b</id>
		<updated>2009-12-11T06:19:40+00:00</updated>
		<content type="html">&lt;div&gt;&lt;p&gt;&lt;img src=&quot;http://www.telefonino.net/new_files/images/global/Motorola-Droid_44210_1.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Yesterday, I left my iPhone and the AT&amp;amp;T network behind and switched to Verizon. In no particular order, here are the set of things that I was unhappy with:&lt;/p&gt;

&lt;ul&gt;   &lt;li&gt;Spotty AT&amp;amp;T network. In most of the places where I used my phone, things tended to work. Except of course for the times when they don’t.&lt;/li&gt;    &lt;li&gt;Draconian App Store approval process that kept Google Voice out of the App Store and kept other app updates running at a snail’s pace.&lt;/li&gt;    &lt;li&gt;Lack of multitasking (notifications don’t count).&lt;/li&gt;    &lt;li&gt;Paying $10 / month for SMS on our two lines&lt;/li&gt;    &lt;li&gt;Paying for a home phone line so that I could get cheap calling to Canada where our extended families live.&lt;/li&gt; &lt;/ul&gt;

&lt;p&gt;Yesterday, I went out to the local Verizon Wireless store and moved both of our family’s phones over to Verizon. It was a completely painless process – I just had to give the Verizon rep, Pete, my AT&amp;amp;T account number and they moved both of our phone numbers to Verizon in under 5 minutes. I wound up purchasing the Motorola DROID, and the HTC Eris phones.&lt;/p&gt;

&lt;p&gt;I've heard good things about Verizon’s network, and I put it to the test today. I used the New York Times homepage as the test and raced a few folks at the office who have iPhone 3G and 3GS’s. The DROID beat them hands down at page load times. I don’t have timing numbers, but it was a very noticeable difference.&lt;/p&gt;

&lt;h3&gt;Hardware&lt;/h3&gt;

&lt;p&gt;The DROID is a sturdy and surprisingly small phone. It’s just a bit thicker than my iPhone 3G, and quite a bit heavier. I really wanted to have a phone that does not have a physical keyboard since the DROID’s keyboard is more-or-less unusable. It doesn’t have staggered keys, and you have to move your fingers too far and too deliberately to type. I can type much faster and more accurately using the on-screen keyboard.&lt;/p&gt;

&lt;p&gt;One gripe about the on-screen keyboard: I can type faster than it can react. If you hit two keys too closely together in time, it will ignore both keystrokes. If I slow down my typing just a bit, my accuracy improves tremendously. With the iPhone, however, I never had to slow down – it totally nails the experience. &lt;strike&gt;Hopefully a future software update for the DROID will fix this. &lt;/strike&gt;The Android 2.0.1 update that just arrived while I was typing out this review definitely improves things quite a bit. The jury’s still a bit out on how close to the iPhone typing experience it is.&lt;/p&gt;

&lt;p&gt;The screen is gorgeous. How could a 267 PPI display &lt;em&gt;not &lt;/em&gt;be gorgeous? At 854 x 480, text is incredibly legible, even at small point sizes. It looks like this resolution is going to be fairly standard on high-end smart phones next year if the &lt;a href=&quot;http://www.engadget.com/2009/12/06/htcs-2010-roadmap-goes-on-display/&quot;&gt;leaked HTC roadmap&lt;/a&gt; is to be believed. The AMOLED displays on those HTC phones should be fantastic too.&lt;/p&gt;

&lt;h3&gt;OS&lt;/h3&gt;

&lt;p&gt;Multi-tasking is something that I didn’t realized I missed on my iPhone until I experienced what it could be like on Android. The modal notifications system on the iPhone is pretty useless, especially when the notification text runs long, or if there are a bunch of notifications batched together. On Android, there’s this ‘window shade’ UI concept which shows you a list of notifications, as well as a series of icons on the task bar that tell you there’s more information in the Window Shade. One thing I really like is having the current outside temperature displayed on the task bar, something that just isn’t possible using the iPhone.&lt;/p&gt;

&lt;p&gt;However, multi-tasking is a mixed blessing. If I notice the DROID running hot, I’ll have to run my Advanced Task Killer app to kill any offending apps running in the background. This is annoying, and I look forward to better job quota support for background tasks to help maximize battery life in the future.&lt;/p&gt;

&lt;p&gt;The turn-by-turn navigation feature is great. My car dock arrives tomorrow so I’ll be able to better put it through its paces then. But in my tests today, I was able to speak the name of my destination to the phone, click on “Get Directions” followed by the Navigation button and I was on my way to my destination. I don’t own a GPS, but it’s at least as good as Scott Hanselman’s Garmin Nuvi that got us lost on the way to Foo camp a couple of years ago :)&lt;/p&gt;

&lt;h3&gt;Contacts&lt;/h3&gt;

&lt;p&gt;This is one area where Android totally nails the user experience. Your contacts are now a union of your Exchange, Gmail and Facebook contacts. For each contact on your list, they will display all possible forms of communication with them, and integrate things like their current Facebook status directly into the contact page!&lt;/p&gt;

&lt;p&gt;If you interact with a contact anywhere else in the OS (in a email message, a SMS etc.) you can just double tap on the contact and you’ll get a popup menu with a list of all possible ways that you can interact with that user (call, email GTalk SMS etc.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Voice Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the feature that I really wanted. I got a taste of how good it could be on my iPhone, but Android really makes this feature sing. For my family in Canada, if I call them (via my contact list) the DROID will automatically route that &lt;em&gt;international&lt;/em&gt; call through Google Voice. For Canada it’s free, and for other countries it’s substantially lower than Verizon’s existing rates. You get to call people without having to dial an access number first, which was how you had to do things on the iPhone. But for me this lets me cancel my home phone # that will save me around $30 / month.&lt;/p&gt;

&lt;p&gt;I just got a Google number (you can get one through your Google Voice settings page if you were like me and picked the “I want to keep my existing wireless number option”). Now I can send and receive SMS messages for free ($10 / month). Note that this only applies to SMS messages sent to my new Google number and not my existing wireless number. Sometime in the future Google Voice will offer # portability, so I’m hopeful that I can bounce my number then.&lt;/p&gt;

&lt;p&gt;The voicemail feature of Google Voice is awesome. It does speech-to-text conversion for you. In the Google Voice app, you can playback the message and watch as it highlights the words that it transcribed in real-time. Fantastic feature. &lt;/p&gt;

&lt;h3&gt;Applications&lt;/h3&gt;

&lt;p&gt;The iPhone App Store is not as big of a moat for Apple as I once thought. Here are the apps that I really loved on my iPhone:&lt;/p&gt;

&lt;ul&gt;   &lt;li&gt;Now Playing&lt;/li&gt;    &lt;li&gt;Shazam&lt;/li&gt;    &lt;li&gt;Page Once Personal Assistant&lt;/li&gt;    &lt;li&gt;TweetDeck&lt;/li&gt;    &lt;li&gt;Facebook&lt;/li&gt;    &lt;li&gt;Weather Bug Elite&lt;/li&gt;    &lt;li&gt;Red Laser&lt;/li&gt;    &lt;li&gt;Amazon&lt;/li&gt;    &lt;li&gt;Kindle&lt;/li&gt;    &lt;li&gt;The Best Camera&lt;/li&gt; &lt;/ul&gt;

&lt;p&gt;Of these, only The Best Camera, TweetDeck, Red Laser and the Kindle app are not available for Android. But reasonable substitutes were available:&lt;/p&gt;

&lt;p&gt;I substituted Twidroid for TweetDeck (not quite as good, but certainly a more than capable Twitter client). &lt;/p&gt;

&lt;p&gt;Google Goggles is definitely superior to Red Laser on my non-autofocus iPhone 3G. &lt;/p&gt;

&lt;p&gt;Not sure yet what a good camera app is for the Android; The Best Camera was a fantastic app for the iPhone. &lt;/p&gt;

&lt;p&gt;The only app that I don’t have an equivalent for today is the Kindle app. But I’d be shocked if Amazon didn’t fill that hole in early next year.&lt;/p&gt;

&lt;p&gt;I’m happy that the iPhone has real competition with the DROID + Android combination (although as a MSFT shareholder I’m less happy that we’re not the real competition here). I suspect the Android app store is going to be quite disruptive to Apple since apps update much faster and appear much faster than on the iPhone app store. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What’s the bottom line here?&lt;/p&gt;

&lt;p&gt;I can sell my used iPhone 3G 8GB for about $250 on Craigslist. My new DROID cost $50 after rebates using my MSFT employee discount. My phone bill rises to $118 / month from $100, but I’m getting a second data line and an additional 250 anytime minutes. Keep in mind that I’m also canceling my home phone # which should save about $45 / month. So net savings of around $27 / month and my iPhone will pay for my early termination fees from AT&amp;amp;T. &lt;/p&gt;

&lt;p&gt;I’m also eligible to upgrade my primary line’s hardware &lt;strong&gt;every year&lt;/strong&gt; as opposed to the 20 month policy in AT&amp;amp;T. That’s freaking incredible.&lt;/p&gt;
&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?a=wm2uVRpfxwU:EZFwTQjJH1w:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?a=wm2uVRpfxwU:EZFwTQjJH1w:7Q72WNTAKBA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?a=wm2uVRpfxwU:EZFwTQjJH1w:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/LessIsBetter/~4/wm2uVRpfxwU&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>John Lam</name>
			<uri>http://www.iunknown.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Miguel de Icaza: Marek Announces Mono's C# 4.0 has been completed</title>
		<link href="http://tirania.org/blog/archive/2009/Dec-09.html"/>
		<id>http://tirania.org/blog/archive/2009/Dec-09.html</id>
		<updated>2009-12-10T05:40:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://tirania.org/shots/0912090736pRSnWJZC.png&quot; /&gt;Marek has just announced
	that &lt;a href=&quot;http://mareksafar.blogspot.com/2009/12/mono-and-c-40.html&quot;&gt;Mono's
	C# compiler 4.0 is complete&lt;/a&gt;.

	&lt;/p&gt;&lt;p&gt;To try it out, get the modules mono and mcs
	from our &lt;a href=&quot;http://mono-project.com/AnonSVN&quot;&gt;Anonymous
	Subversion Repository&lt;/a&gt; and build Mono like this:

	&lt;/p&gt;&lt;pre class=&quot;shell&quot;&gt;
	$ mkdir $HOME/mono4
	$ ./autogen.sh --prefix=$HOME/mono4 --with-profile4=yes
	$ make &amp;amp;&amp;amp; make install
	&lt;/pre&gt;</content>
		<author>
			<name>Miguel de Icaza (miguel@gnome.org)</name>
			<uri>http://tirania.org/blog/index.html</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: IronRuby @ RubyConf 2009 – Part 2: What sets IronRuby apart?</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/_HE1ql-8SPg/ironruby-rubyconf-2009-part-2-what-sets.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-6792360172068169543</id>
		<updated>2009-12-09T07:20:00+00:00</updated>
		<content type="html">&lt;p&gt;&lt;em&gt;This is part of a &lt;a href=&quot;http://blog.jimmy.schementi.com/search/label/rubyconf&quot;&gt;RubyConf 2009 series&lt;/a&gt;:&lt;/em&gt;     &lt;br /&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-1-summary.html&quot;&gt;Summary&lt;/a&gt; | &lt;strong&gt;What sets IronRuby apart?&lt;/strong&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot;&gt;Sneaking Ruby to the top&lt;/a&gt; / &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot;&gt;Embedding IronRuby&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot;&gt;Project status&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First a little background for those new to IronRuby …&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://ironruby.net&quot; target=&quot;_blank&quot;&gt;IronRuby&lt;/a&gt; is a Ruby 1.8.6-compatible implementation, with support for some 1.9 features like string encodings. IronRuby is built on-top of the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx&quot; target=&quot;_blank&quot;&gt;Common Language Runtime&lt;/a&gt;, so certain runtime-specific Ruby features are not supported on IronRuby, like callcc, ObjectSpace, and native extensions. However, local-continuations are coming, and we are considering &lt;a href=&quot;http://github.com/ffi/ffi&quot; target=&quot;_blank&quot;&gt;FFI&lt;/a&gt; post-1.0 to support native code.&lt;/p&gt;  &lt;p&gt;IronRuby runs on the CLR (2.0 SP1+) and &lt;a href=&quot;http://www.mono-project.com&quot; target=&quot;_blank&quot;&gt;Mono&lt;/a&gt; (2.0+), so IronRuby runs on a ton of platforms, including Mac OS and Linux. IronRuby also runs in the browser with Silverlight and Moonlight, a 4MB runtime which allows you to use Ruby to build “rich internet applications” … basically anything doing vector-graphics, webcam, audio, etc in the browser.&lt;/p&gt;  &lt;p&gt;To at least prove IronRuby runs on the Mac, here’s IronRuby installing the activerecord gem:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_OqCZhp9yI0Q/Sx9Py6Z2VkI/AAAAAAAAANw/UxvxdKdBEk0/s1600-h/image8.png&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;image&quot; height=&quot;110&quot; src=&quot;http://lh6.ggpht.com/_OqCZhp9yI0Q/Sx9P0XnNYUI/AAAAAAAAAN8/c3oXFsgZNwQ/image_thumb6.png?imgmax=800&quot; style=&quot;display: inline; margin-left: 0px; margin-right: 0px;&quot; title=&quot;image&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yay =P I spoke in-depth about this at &lt;a href=&quot;http://en.oreilly.com/oscon2009&quot; target=&quot;_blank&quot;&gt;OSCON&lt;/a&gt; this year, so if you’re interested in how IronRuby runs cross-platform, please read my &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/07/ironruby-at-oscon-2009-mono-moonlight.html&quot; target=&quot;_blank&quot;&gt;OSCON 2009 post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;While &lt;font color=&quot;#ff8000&quot;&gt;“IronRuby running everywhere”&lt;/font&gt; is a great bullet-point, when would you use it instead of another implementation? I’ll briefly mention a few Windows-focused reasons, but the focus will be on things that work regardless of your platform.&lt;/p&gt;  &lt;p&gt;One of IronRuby’s goals is to be the premiere Ruby implementation for Windows. Any type of development possible on Windows should be great on IronRuby; GUI, console, DirectX, etc. And some of these benefits also go cross-platform; for example using .NET’s WinForms for GUI apps will let you run the same app on Window and Linux.&lt;/p&gt;  &lt;p&gt;Even systems management tasks can benefit from IronRuby – a scripting language that Windows developers can use for anything – like all the languages that come standard on Mac OS and Linux distributions.&lt;/p&gt;  &lt;p&gt;Web developers can also use IronRuby to deploy their Ruby-based apps on: IIS is a great web-server, and IronRuby will make it easy for Windows shops to justify using Ruby on Rails or any other Ruby-based web framework. An interesting factoid: &lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;51% of traffic on wiki.rubyonrails.org is from Windows users&lt;/font&gt;&lt;/strong&gt; (data source: &lt;a href=&quot;http://merbist.com/&quot; target=&quot;_blank&quot;&gt;Matt Aimonetti&lt;/a&gt; and the Rails Core Team) – I’m not quite sure what that means, but at a minimum it means people who have an interest in Rails are using Windows.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Ruby in the browser&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;One of the great features of IronRuby is it’s ability to run in the browser. Unfortunately there isn’t a ton of information about how to do this, but a nice set of documentation is being prepared for when the new IronRuby site goes live. Here’s a sneak peak into how easy it is to run Ruby in the browser:&lt;/p&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;The code in the “text/ruby” script-tag is actually running in the browser&lt;/font&gt;&lt;/strong&gt; -- it's &lt;b&gt;not&lt;/b&gt; sending the code to the server or anything like that. Ruby can be used to build HTML-only apps (&lt;a href=&quot;http://blog.jimmy.schementi.com/2008/08/walk-through-silverlight-flickr-client.html&quot; target=&quot;_blank&quot;&gt;an Flickr photoviewer example walkthrough&lt;/a&gt;), full vector-graphics-based apps (&lt;a href=&quot;http://ironruby.com/tutorial&quot; target=&quot;_blank&quot;&gt;the IronRuby tutorial&lt;/a&gt;), or a combination of both. These apps can also be run out of the browser; &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/06/ironruby-tutorial.html&quot; target=&quot;_blank&quot;&gt;this post shows the above tutorial running as a native Windows desktop app&lt;/a&gt;. In the browser, this requires &lt;a href=&quot;http://microsoft.com/silverlight&quot; target=&quot;_blank&quot;&gt;Silverlight&lt;/a&gt; for Mac OS and Windows, or &lt;a href=&quot;http://go-mono.com/moonlight-beta/&quot; target=&quot;_blank&quot;&gt;Moonlight&lt;/a&gt; for Linux.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Great, it’s easy, but what can I do with it?&lt;/font&gt; &lt;/strong&gt;Right now, the best source of documentation for this is my &lt;a href=&quot;http://ironruby.com/browser/sl-back-to-just-text.pdf&quot; target=&quot;_blank&quot;&gt;Back to Just-Text with Silverlight&lt;/a&gt; paper. A place-holder page for where all this info will be is &lt;a href=&quot;http://ironruby.com/browser&quot; target=&quot;_blank&quot;&gt;http://ironruby.com/browser&lt;/a&gt;, but like I said, there is much more to come. The &lt;a href=&quot;http://www.visitmix.com/Labs/gestalt/&quot; target=&quot;_blank&quot;&gt;Gestalt project&lt;/a&gt; has a ton of cool samples and information as well, but most of this will eventually live on the actual IronRuby website.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;For demos I showed during the talk, see &lt;a href=&quot;http://github.com/jschementi/rubyconf2009/tree/master/gestalt&quot; target=&quot;_blank&quot;&gt;http://github.com/jschementi/rubyconf2009/tree/master/gestalt&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color=&quot;#ff8000&quot;&gt;Other than this being some cool technology, how could it actually be useful?&lt;/font&gt;&lt;/b&gt; I &lt;em&gt;would not&lt;/em&gt; recommend porting all your JavaScript to this, but this is useful anywhere you need to show graphs, charts, anything visually oriented, or really anything where the browser feature-set isn’t enough. Rather than writing in ActionScript for Flash, you could use Ruby and Silverlight. Once you have a good reason to require Silverlight for a page, then it opens up the possibilities for using Ruby in the browser for things you used to use JavaScript for. For example, imagine writing both your server and client code in Ruby, and even reusing code between the two.&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;It may not be the only way to run Ruby in the browser, but it’s the most web-friendly.&lt;/strong&gt;&lt;/font&gt; It’s worth noting that JRuby lets you write &lt;a href=&quot;http://github.com/hakunin/jruby-applet&quot; target=&quot;_blank&quot;&gt;Ruby inside a Java applet&lt;/a&gt;, but that requires Java to be installed. While Java still has more market-penetration than Silverlight, Silverlight’s tiny size makes this an irrelevant point for me. Also, &lt;a href=&quot;http://arstechnica.com/microsoft/news/2009/11/silverlight-4-beta-arrives-for-developers.ars&quot; target=&quot;_blank&quot;&gt;Silverlight is installed on 45% of the connected internet machines&lt;/a&gt;, so Silverlight’s market share is briskly increasing.&lt;/p&gt;  &lt;p&gt;Also, &lt;a href=&quot;http://hotruby.yukoba.jp/&quot; target=&quot;_blank&quot;&gt;HotRuby&lt;/a&gt; lets you write Ruby which compiles down to JavaScript or Flash, and while the demos are very impressive, the implementation is &lt;strong&gt;very not &lt;/strong&gt;completed, and hasn’t been updated for almost two years. HotRuby requires the Ruby source code to be compiled on the server with YARV, and then the serialized bytecode is run on the client with a JavaScript VM for Ruby (which is the incomplete part). It’s a promising project if someone picks it back up.&lt;/p&gt;  &lt;p&gt;Considering those alternatives, IronRuby’s script-tag development and just-html deployment make it the best experience for writing Ruby browser apps currently.&lt;/p&gt;  &lt;p&gt;Anyway, I’ll write more about this when I can point you at a real website that shows what all this can really do.&lt;/p&gt;  &lt;p&gt;&lt;font color=&quot;#ff8000&quot;&gt;&lt;strong&gt;Next stop,&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;&lt;em&gt;sneaking&lt;/em&gt; Ruby to the top&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5419182-6792360172068169543?l=blog.jimmy.schementi.com&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=_HE1ql-8SPg:0UG2aRwGXbY:yIl2AUoC8zA&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=yIl2AUoC8zA&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=_HE1ql-8SPg:0UG2aRwGXbY:dnMXMwOfBR0&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=dnMXMwOfBR0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=_HE1ql-8SPg:0UG2aRwGXbY:F7zBnMyn0Lo&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=_HE1ql-8SPg:0UG2aRwGXbY:F7zBnMyn0Lo&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=_HE1ql-8SPg:0UG2aRwGXbY:V_sGLiPBpWU&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?i=_HE1ql-8SPg:0UG2aRwGXbY:V_sGLiPBpWU&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?a=_HE1ql-8SPg:0UG2aRwGXbY:qj6IDK7rITs&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://feeds.feedburner.com/~ff/jimmy-thinking?d=qj6IDK7rITs&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/jimmy-thinking/~4/_HE1ql-8SPg&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>Jimmy Schementi (jschementi@gmail.com)</name>
			<uri>http://blog.jimmy.schementi.com/</uri>
		</author>
	</entry>

	<entry>
		<title type="html">Jimmy Schementi: IronRuby @ RubyConf 2009 – Part 1: Summary</title>
		<link href="http://feedproxy.google.com/~r/jimmy-thinking/~3/NbK_AOlidB4/ironruby-rubyconf-2009-part-1-summary.html"/>
		<id>tag:blogger.com,1999:blog-5419182.post-74313311577101095</id>
		<updated>2009-12-09T06:39:00+00:00</updated>
		<content type="html">&lt;em&gt;This is part of a RubyConf 2009 series:&lt;/em&gt;   &lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot; target=&quot;_blank&quot;&gt;What sets IronRuby apart?&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot; target=&quot;_blank&quot;&gt;Sneaking Ruby to the top&lt;/a&gt; / &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot; target=&quot;_blank&quot;&gt;Embedding IronRuby&lt;/a&gt; | &lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot; target=&quot;_blank&quot;&gt;Project status&lt;/a&gt;   &lt;p&gt;Now that the turkey has settled and I’m back in Seattle, I’m finally getting around to writing about my time at &lt;a href=&quot;http://rubyconf.org&quot; target=&quot;_blank&quot;&gt;RubyConf 2009&lt;/a&gt; in &lt;a href=&quot;http://www.bing.com/maps/#JmNwPTM3LjY3OTY2Njg3Njc5MjkxNX4tMTIyLjM4NTA2NDczNjAwODY0Jmx2bD0xMSZzdHk9ciZydHA9cG9zLjM3LjU4MDE3MzY4NjE0NjczNl8tMTIyLjM1MDQ2MDIxNjQwMzAxX0J1cmxpbmdhbWUlMkMlMjBDQV9fX2VffnBvcy4zNy43NzkxNjAwNjc0MzkwOF8tMTIyLjQyMDA0OTQ1ODc0MjE0X1NhbiUyMEZyYW5jaXNjbyUyQyUyMENBX19fZV8mcnRvcD0wfjB+MH4=&quot; target=&quot;_blank&quot;&gt;Burlingame, CA&lt;/a&gt; (&lt;strong&gt;&lt;a href=&quot;http://www.bing.com/maps/#JmNwPTM3LjY3OTY2Njg3Njc5MjkxNX4tMTIyLjM4NTA2NDczNjAwODY0Jmx2bD0xMSZzdHk9ciZydHA9cG9zLjM3LjU4MDE3MzY4NjE0NjczNl8tMTIyLjM1MDQ2MDIxNjQwMzAxX0J1cmxpbmdhbWUlMkMlMjBDQV9fX2VffnBvcy4zNy43NzkxNjAwNjc0MzkwOF8tMTIyLjQyMDA0OTQ1ODc0MjE0X1NhbiUyMEZyYW5jaXNjbyUyQyUyMENBX19fZV8mcnRvcD0wfjB+MH4=&quot; target=&quot;_blank&quot;&gt;not San Francisco&lt;/a&gt;&lt;/strong&gt;, &lt;a href=&quot;http://rubyconf.org/&quot; target=&quot;_blank&quot;&gt;liars&lt;/a&gt;! ;)). I spoke about IronRuby, got to meet a bunch of the other implementers, and overall had a great time. &lt;a href=&quot;http://github.com/jredville&quot; target=&quot;_blank&quot;&gt;Jim Deville&lt;/a&gt; also got to come along for free, since Microsoft was a Silver sponsoring of RubyConf – next year we should sponsor the internet-connections since everyone using Chad’s room’s wireless was, well, fun … but no promises ;)&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jdeville/4167967539/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;4167967539_e7d1e43df3_b&quot; height=&quot;393&quot; src=&quot;http://lh3.ggpht.com/_OqCZhp9yI0Q/Sx9GJQci_sI/AAAAAAAAANk/xqb-WepnDQs/4167967539_e7d1e43df3_b%5B10%5D.jpg?imgmax=800&quot; style=&quot;display: inline;&quot; title=&quot;4167967539_e7d1e43df3_b&quot; width=&quot;278&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;My talk was all about how IronRuby is extending the reach of Ruby. The two areas I focused on was “&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot; target=&quot;_blank&quot;&gt;running in the browser&lt;/a&gt;” and “scripting existing applications.” And all that was sandwiched with a overview of the project and a status update. All content from the talk can be found in my &lt;a href=&quot;http://github.com/jschementi/rubyconf2009&quot; target=&quot;_blank&quot;&gt;RubyConf 2009 GitHub repo&lt;/a&gt;, but I’ll walk you through the talk with a couple of posts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-2-what-sets.html&quot; target=&quot;_blank&quot;&gt;What sets IronRuby apart? (brief highlight of Silverlight support)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-part-3-sneaking-ruby.html&quot; target=&quot;_blank&quot;&gt;Sneaking Ruby to the top&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html&quot; target=&quot;_blank&quot;&gt;Embedding IronRuby&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-4-project.html&quot; target=&quot;_blank&quot;&gt;Project status&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;&lt;a href=&quot;http://github.com/jschementi/rubyconf2009/raw/master/jimmysch-ironruby.pdf&quot; target=&quot;_blank&quot;&gt;Here’s a direct-link to slides if you want them&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Everyone else’s talks&lt;/font&gt;&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Here’s my strategy for attending talks: open laptop and code until the speaker catches my attention. When bored, go back to coding, and repeat. I got nothing done at RubyConf; irritating and refreshing at the same time. Maybe it was the shotty wireless, but I’ll stick with saying the talks were awesome. Here’s what I liked:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff8000&quot;&gt;Keynote - &lt;strong&gt;Yukihiro Matsumoto&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Matz outlined a new language called ZEPT: A general-purpose dynamic language which is great for distributed programming and metaprogramming. After explaining this very familiar language in some detail, he then turned it around and essentially said, “Wait, it’s Ruby! Kinda.” &lt;/p&gt;  &lt;p&gt;While Ruby’s syntax is great for metaprogramming and DSLs, it needs work for distributed programming to be really great, but this is being worked on. Ruby currently has most of the building blocks for distributed programming, like lambdas, enumerators, and continuations, and things like a lazy-array are planned for future versions of Ruby. He closed with, “You 