<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Applied Games Group Blog</title><link>http://blogs.technet.com/b/apg/</link><description>New stuff directly from Microsoft Research.</description><dc:language>en</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Work Experience Student - Max Steele</title><link>http://blogs.technet.com/b/apg/archive/2008/08/28/work-experience-student-max-steele.aspx</link><pubDate>Thu, 28 Aug 2008 12:38:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3113276</guid><dc:creator>apg</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3113276</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/08/28/work-experience-student-max-steele.aspx#comments</comments><description>&lt;P&gt;Last week we&amp;nbsp;enjoyed having&amp;nbsp;Max Steele here for a week of work experience.&amp;nbsp; Max is a 6th form student, currently studying for his A-levels and hoping to pursue a career in Computer science.&amp;nbsp; Before&amp;nbsp;his time here Max had&amp;nbsp;never&amp;nbsp;done any coding so we thought we would throw him in at the deep end and set him the task of programming a&amp;nbsp;Blackjack game in F#.&amp;nbsp; It was very interesting to teach someone about functional programming from the ground up without them having&amp;nbsp;written an imperative program before.&amp;nbsp; In fact this lack of knowledge might actually have helped, as he was not tempted to fill the code with for loops etc!&amp;nbsp; Here is what Max has to say about&amp;nbsp;his experience in Cambridge.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;This week I have been here in The Applied Games Group on work experience over my summer vacation from school. I have currently just completed an AS-level year in Further Mathematics, Philosophy and Economics and intend to apply to university in the coming months for something along the lines of a Maths and Computer Science course. &lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;When I came into the Group I was put under David Stern’s wing, with no prior experience to any sort of programming whatsoever. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;I was very keen to learn about programming and gain a better understanding of how computers work on the whole. Unfortunately there was no other option other than to be thrown straight into the deep end with a book called ‘Expert F#’, a book that definitely is not for someone in my position. As I tried to read through sections like the introduction of this book and other articles on functional programming I slowly started to grasp loose concepts, despite sometimes understanding only a few words a sentence. Talking with Phillip about how the platforms of computers are compiled helped greatly and although I went home with an aching head each night I am sure a lot of this information clung on to something to recall on in the future.&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;IMG title="The Blackjack player" style="WIDTH: 414px; HEIGHT: 301px" height=417 alt="The Blackjack player" src="http://blogs.technet.com/photos/apg/images/3113277/original.aspx" width=605 mce_src="http://blogs.technet.com/photos/apg/images/3113277/original.aspx"&gt;&amp;nbsp;&amp;nbsp;&lt;IMG title="The code" style="WIDTH: 400px; HEIGHT: 301px" height=313 alt="The code" src="http://blogs.technet.com/photos/apg/images/3113286/original.aspx" width=413 mce_src="http://blogs.technet.com/photos/apg/images/3113286/original.aspx"&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;Luckily, towards the end of my first day I was found an exercise by David to teach take me through some of the basic functions including arrays and lists as well. Progressing from this we decided to try to create a Blackjack game. The aim was to first create the most basic program where the player can play head on against a dealer with set rules to his gameplay. After more than two days full of work and new functions I finally was able to create the most simple of games allowing you to keep score against the dealer as you play. David is due a lot of credit for this work and I am very grateful for the hours of time he put in over the week to help me understand this completely new way of thinking. What was most exciting was to realise that I had learnt enough of this to think on my own and write new functions by myself. After creating the main structure as well as the user interface controlling the player with David, I was able to go on and create almost all of the dealer actions by myself. All of what seemed like unbearable slow progress in learning this code earlier in the week really came together and gave me a great feeling of accomplishment at this point.&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;EM&gt;As for the future, I am really glad I have been able to enjoy the experience of this week and will definitely continue on with this work in the future at home to create a complete Blackjack game where all actions like “split” and “double down” will be possible. I would lastly like to thank everyone for their help and friendliness both in and outside of work this week and hope that I may meet some of you again one day if I end up in a similar line of work. Enjoy the game!&amp;nbsp; - Max&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;I have attached&amp;nbsp;Max's code to this post - have fun!&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;FONT face=Calibri size=3&gt;- David Stern&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;&lt;EM&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/EM&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3113276" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-11-32-76/Program.fs" length="8813" type="application/fsharp-source" /></item><item><title>TrueSkill in F#</title><link>http://blogs.technet.com/b/apg/archive/2008/06/16/trueskill-in-f.aspx</link><pubDate>Mon, 16 Jun 2008 07:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3071681</guid><dc:creator>apg</dc:creator><slash:comments>42</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3071681</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/06/16/trueskill-in-f.aspx#comments</comments><description>&lt;P&gt;Following the &lt;A href="http://blogs.technet.com/apg/archive/2008/04/05/trueskill-through-time.aspx" mce_href="http://blogs.technet.com/apg/archive/2008/04/05/trueskill-through-time.aspx"&gt;publication&lt;/A&gt; of the &lt;A href="http://research.microsoft.com/fsharp/fsharp.aspx" mce_href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt; source code for the &lt;A href="http://research.microsoft.com/osa/apg/trueskill.aspx" mce_href="http://research.microsoft.com/osa/apg/trueskill.aspx"&gt;TrueSkill&lt;/A&gt; Through Time paper, we have used the same inference library code to demonstrate how the original TrueSkill algorithm can be coded. In the attached source code, only the &lt;U&gt;program.fs&lt;/U&gt; file is different to the TrueSkill through Time blog post and it builds up the factor graph for an arbitrary N-player game with an arbitrary draw probability. Both these numbers can be entered on the command line when running the resulting sample. We tried to make sure to stay as close as possible to the description on page 3 of the &lt;A href="ftp://ftp.research.microsoft.com/pub/tr/TR-2006-80.pdf" mce_href="ftp://ftp.research.microsoft.com/pub/tr/TR-2006-80.pdf"&gt;TrueSkill technical report&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The attached ZIP file contains the entire source code which should compile without problems with &lt;A href="http://research.microsoft.com/research/downloads/Details/7ac148a7-149b-4056-aa06-1e6754efd36f/Details.aspx"&gt;F# 1.9.3.14&lt;/A&gt;. You can either load the solution in Visual Studio 2008 or simply run build.bat form the command line - in either case you will end up with a &lt;U&gt;trueskill.exe&lt;/U&gt; program. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update&lt;/STRONG&gt;: Following the release of the &lt;A href="http://msdn.microsoft.com/en-us/fsharp/default.aspx" mce_href="http://msdn.microsoft.com/en-us/fsharp/default.aspx"&gt;F# September 2008 CTP&lt;/A&gt; we have updated the source code to work with &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en"&gt;F# 1.9.6.2&lt;/A&gt;. Also, we added one of the new features of F#, namely units-of-measure, which makes the TrueSkill update invocation calls now read as follows:&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; priorMu = 25.0&amp;lt;SkillPoints&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; priorSigma = priorMu / 3.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; priorSkills = Array.init noPlayers (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;fun&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; i &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; Gaussian.Create (priorMu, priorSigma))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt; (posteriorSkills, logZ) = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: windowtext; mso-no-proof: yes; mso-bidi-font-size: 10.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;NPlayerTrueSkillUpdate (0.5*priorSigma, 0.01*priorSigma, drawProb / 100.0) priorSkills&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note that one can no longer accidentally pass the variance instead of the standard deviation because the former being of type &lt;FONT face="Courier New"&gt;float&amp;lt;SkillPoints^2&amp;gt;&lt;FONT face=Arial&gt;. Try yourself!&lt;/FONT&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Update 2&lt;/STRONG&gt;: We had some feedback from Andrew Kennedy that we exploited a current "bug" in the units-of-measure code where literals (such as 1.0) can have generic units. We removed the incorrect usages and re-posted the ZIP file.&amp;nbsp;&lt;/P&gt;&lt;STRONG&gt;Update 3&lt;/STRONG&gt;: We extended the example to work with draws. Thanks to Chih-Jen Lin for the suggestion!&amp;nbsp; 
&lt;P mce_keep="true"&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;P mce_keep="true"&gt;&lt;SMALL&gt;Ralf Herbrich &amp;amp; Thore Graepel&lt;/SMALL&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3071681" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-07-16-81/TrueSkill-_2D00_-CTP.zip" length="9696" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/b/apg/archive/tags/F_2300_/">F#</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Bayesian/">Bayesian</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Machine+Learning/">Machine Learning</category><category domain="http://blogs.technet.com/b/apg/archive/tags/TrueSkill/">TrueSkill</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Development/">Development</category></item><item><title>Create a Game with Popfly</title><link>http://blogs.technet.com/b/apg/archive/2008/06/04/create-a-game-with-popfly.aspx</link><pubDate>Wed, 04 Jun 2008 15:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3065927</guid><dc:creator>apg</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3065927</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/06/04/create-a-game-with-popfly.aspx#comments</comments><description>&lt;P&gt;&lt;A class="" href="http://www.popfly.com/" mce_href="http://www.popfly.com/"&gt;Popfly&lt;/A&gt; has a great Alpha that lets you &lt;A class="" href="http://www.popfly.com/gamecreator/" mce_href="http://www.popfly.com/gamecreator/"&gt;create a game&lt;/A&gt;&amp;nbsp;in your browser, no programming required, and then easily embed it on your own site.&lt;/P&gt;
&lt;P&gt;The following&amp;nbsp;is one of the sample games - Space Boy:&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="WIDTH: 100%; HEIGHT: 480px" src="http://www.popfly.com/users/Team/Space%20Boy.small" frameBorder=no allowTransparency mce_src="http://www.popfly.com/users/Team/Space%20Boy.small"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;P&gt;You can read more on &lt;A class="" href="http://blogs.msdn.com/somasegar/archive/2008/05/02/popfly-game-creator.aspx" mce_href="http://blogs.msdn.com/somasegar/archive/2008/05/02/popfly-game-creator.aspx"&gt;Somasegar's WebLog: PopFly Game Creator&lt;/A&gt;. It looks like &lt;A class="" href="http://www.microsoft.com/Silverlight/" mce_href="http://www.microsoft.com/Silverlight/"&gt;Silverlight&lt;/A&gt;&amp;nbsp;is going to&amp;nbsp;be a very&amp;nbsp;interesting platform for games.&lt;/P&gt;
&lt;P&gt;Phil&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3065927" width="1" height="1"&gt;</description></item><item><title>Statically link with ILMerge</title><link>http://blogs.technet.com/b/apg/archive/2008/05/29/statically-link-with-ilmerge.aspx</link><pubDate>Thu, 29 May 2008 21:49:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3062869</guid><dc:creator>apg</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3062869</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/05/29/statically-link-with-ilmerge.aspx#comments</comments><description>&lt;P&gt;Today Ralf &amp;amp; I were looking at ways to bundle up a&amp;nbsp;bunch of .Net assemblies into a single assembly for use within&amp;nbsp;our group; the goal to&amp;nbsp;expose only the functionality we want and only need to reference&amp;nbsp;one assembly in our projects. Enter command line app &lt;A class="" href="http://research.microsoft.com/~mbarnett/ILMerge.aspx" mce_href="http://research.microsoft.com/~mbarnett/ILMerge.aspx"&gt;ILMerge&lt;/A&gt; by Michael Barnett of Microsoft Research which lets you merge a set of dlls into a single assembly and selectively hide functionality by changing &lt;A class="" href="http://msdn.microsoft.com/en-us/library/yzh058ae(VS.71).aspx" mce_href="http://msdn.microsoft.com/en-us/library/yzh058ae(VS.71).aspx"&gt;public access modifiers&lt;/A&gt; to &lt;A class="" href="http://msdn.microsoft.com/en-us/library/7c5ka91b(VS.71).aspx" mce_href="http://msdn.microsoft.com/en-us/library/7c5ka91b(VS.71).aspx"&gt;internal&lt;/A&gt;.&amp;nbsp;The first&amp;nbsp;assembly&amp;nbsp;you specify on the command line&amp;nbsp;is the primary one and it's types maintain their access modifiers, the subsequent assembles are the ones that can be hidden by using ILMerge's ExcludeFile parameter where you can specify a file which in turn&amp;nbsp;contains a list of &lt;A class="" href="http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.aspx"&gt;regular expressions&lt;/A&gt;&amp;nbsp;for the&amp;nbsp;types&amp;nbsp;you would like to&amp;nbsp;keep public. When you merge the assemblies if you have&amp;nbsp;also written XML code documentation files these get merged too, so you even get to keep the &lt;A class="" href="http://en.wikipedia.org/wiki/IntelliSense" mce_href="http://en.wikipedia.org/wiki/IntelliSense"&gt;intellisense&lt;/A&gt; tooltips on the classes and functions you have documented with /// comments.&amp;nbsp;For C#&amp;nbsp;projects you can specify XML documentation output&amp;nbsp;in the project's Visual Studio build properties, and for &lt;A class="" href="http://en.wikipedia.org/wiki/F%E2%99%AF_%28programming_language%29" mce_href="http://en.wikipedia.org/wiki/F%E2%99%AF_%28programming_language%29"&gt;F#&lt;/A&gt;&amp;nbsp;projects you can use the command line &lt;EM&gt;-doc filename&lt;/EM&gt; option. To quickly check if we were getting the desired results in our target assembly we used the&amp;nbsp;&lt;A class="" href="http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx"&gt;ILdasm&lt;/A&gt;&amp;nbsp;tool to walk through our types. While&amp;nbsp;checking the output&amp;nbsp;we noticed that by default in the current F#, triple slash XML comments&amp;nbsp;get embedded in the assembly for use in Visual Studio for tooltips; but if you are already generating seperate XML documentation it is possible to turn off this feature with the &lt;A class="" href="http://blogs.technet.com/controlpanel/blogs/--no-interface-data" mce_href="http://blogs.technet.com/controlpanel/blogs/--no-interface-data "&gt;&lt;EM&gt;--no-interface-data&lt;/EM&gt;&lt;/A&gt; command line option. So in summary ILMerge&amp;nbsp;appears to be&amp;nbsp;a great, highly customisable tool that lets you&amp;nbsp;distribute a single assembly exposing just the functionality you want to expose (just like linking good old&amp;nbsp;.Lib files in C++ :)).&lt;/P&gt;
&lt;P&gt;Phil&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3062869" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/apg/archive/tags/F_2300_/">F#</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Development/">Development</category></item><item><title>BabyJack Inline Video Card Game</title><link>http://blogs.technet.com/b/apg/archive/2008/05/26/babyjack-inline-video-blackjack.aspx</link><pubDate>Mon, 26 May 2008 13:27:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3061129</guid><dc:creator>apg</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3061129</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/05/26/babyjack-inline-video-blackjack.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Its been yet another wet&amp;nbsp;and windy bank&amp;nbsp;holiday weekend here in the UK,&amp;nbsp;so&amp;nbsp;I decided&amp;nbsp;to involve the family and create&amp;nbsp;a video &lt;A class="" href="http://en.wikipedia.org/wiki/Blackjack" mce_href="http://en.wikipedia.org/wiki/Blackjack"&gt;Blackjack&lt;/A&gt; called BabyJack,&amp;nbsp;despite the baby's name being Sean&amp;nbsp;not Jack :). Just press the Play button below to pit your wits against the baby...&lt;/P&gt;
&lt;TABLE class="" border=8&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;DIV id=wmp&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=middle&gt;
&lt;DIV id=Prompt style="FONT-SIZE: 20px; FONT-FAMILY: fantasy"&gt;&lt;INPUT style="FONT-SIZE: 20px; FONT-FAMILY: fantasy" onclick=Javascript:Shuffle(); type=button value="Play BabyJack!"&gt;&lt;/INPUT&gt; &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;SCRIPT type=text/javascript&gt;
if(-1 != navigator.userAgent.indexOf("MSIE"))
{
	var element = document.getElementById("wmp");
	element.innerHTML = "&lt;OBJECT id=player height=280 width=340 type =application/x-oleobject classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 &gt;&lt;PARAM NAME=\"URL\" VALUE=\"http://www.trelford.com/BabyJack.gif\"&gt;&lt;PARAM NAME=\"uiMode\" VALUE=\"none\"&gt;&lt;/OBJECT&gt;";
}
else
{
	var element = document.getElementById("wmp");
	element.innerHTML = "&lt;OBJECT id=player height=280 width=340 type=application/x-ms-wmp &gt;&lt;PARAM NAME=\"URL\" VALUE=\"http://www.trelford.com/BabyJack.gif\"&gt;&lt;PARAM NAME=\"uiMode\" VALUE=\"none\"&gt;&lt;/OBJECT&gt;";
}


var player = theForm.player;

function Pair(first,second)
{
	this.fst = first;
	this.snd = second;
	this.toString = function () { return "("+this.fst+","+this.snd+")"; }
}

function Card(rank, suit) {

	function HighValue(rank)
	{
		switch (rank)
		{
			case '2': return 2;
			case '3': return 3;
			case '4': return 4;
			case '5': return 5;
			case '6': return 6;
			case '7': return 7;
			case '8': return 8;
			case '9': return 9;
			case 'J': return 10;
			case 'Q': return 10;
			case 'K': return 10;
			case 'A': return 11;		
		}
		return 0;
	}

	function LowValue (rank)
	{
		if (rank == 'A') return 1;
		return HighValue (rank);
	}

	this.rank = rank;
	this.suit = suit;
	this.highValue = HighValue(rank);
	this.lowValue = LowValue (rank);

	this.toString   = function () {
		var code, color;
		switch (this.suit) 
		{ 
			case "C": code = "clubs"; color="black";
 break;

			case "D": code = "diams"; color="red"; break;
			case "H": code = "hearts"; color="red"; break;
			case "S": code = "spades"; color="black"; break;
		} 		
		return "&lt;font color=" + color +"&gt;" + this.rank + "&amp;" + code +";&lt;/font&gt;"; 
	}
}

function ComputeHandRank(hand)
{
	var high = 0, low = 0;
	for (var i=0;i&lt;hand.length;i++)
	{
		high += hand[i].highValue;
		low += hand[i].lowValue;
	}
	return high &lt;= 21 ? high : low; 	
}

function Deck () {
	
	function generateCards() {	
		var cards = new Array();
		var suits = "CDHS";
		for (var suit=0; suit&lt;suits.length; suit++)
		{
			var ranks = "A23456789JQK";
			for (var rank=0; rank&lt;ranks.length; rank++)
			{
				var card = new Card(ranks.charAt(rank), suits.charAt(suit));
				cards.push( card  );
			}	

		}
		return cards;	
	}

	function shuffle (cards) {
		var pairs = new Array();
		for (var i=0;i&lt;cards.length;i++)
		{
			pairs.push ( new Pair(Math.random(), cards[i]) );
		}
		pairs.sort( function (a,b) { return a.fst - b.fst; }	);	


		var shuffled = new Array();
		for (var i=0;i
&lt;pairs.length;i++)
		{		
			shuffled.push( pairs[i].snd );
		}
		return shuffled;
	}

	this.cards = shuffle( generateCards() );	 
	this.takeOne = function () { return this.cards.shift(); }
}

var deck, babyHand, userHand;

function Play()
{
	setTimeout( function () { player.URL= "http://www.trelford.com/BabyJack.gif"; clearTimeout();}, 100);
	player.controls.play ();
	var s = "&lt;input style=\"font-family:fantasy;font-size:20\" type=button onclick=\"Javascript:Shuffle();\" value=\"Play BabyJack!\"/&gt;";
	document.getElementById("Prompt").innerHTML = s;
}


function Shuffle()
{
	player.URL= "http://www.trelford.com/Shuffle.wmv";
	document.getElementById("Prompt").innerHTML = "Shuffling deck";
	deck = new Deck();
	babyHand = new Array();
	userHand = new Array();
	babyHand.push(deck.takeOne());
	userHand.push(deck.takeOne());
	babyHand.push(deck.takeOne());	
	userHand.push(deck.takeOne());

}

function StickOrTwist()
{
	var html = "Your cards " + userHand.join();
	if (userHand.length &gt; 2 &amp;&amp; ComputeHandRank (userHand) &gt; 21 )
	{
		html += " make you Bust";
		setTimeout( function () { player.URL = "http://www.trelford.com/Win.wmv"; clearTimeout(); }, 500);
	}
	else
 	{
		setTimeout( function () { player.URL= "http://www.trelford.com/StickOrTwist.gif"; clearTimeout(); }, 100);			
		html += " do you "; 
		html += "&lt;input style=\"font-family:fantasy;font-size:20\" type=button value=\"Stick\"/ onClick=\"Javascript:Stick();\"&gt;";
		html += "&amp;nbsp;or&amp;nbsp;"
		html += "&lt;input style=\"font-family:fantasy;font-size:20\" type=button value=\"Twist\"/ onClick=\"Javascript:Twist();\"&gt;";
	}
	document.getElementById("Prompt").innerHTML = html;	
}

function Stick()
{	
	if (ComputeHandRank (babyHand) &gt;= ComputeHandRank (userHand) )
	{
		document.getElementById("Prompt").innerHTML = "BabyJack wins with " + babyHand.join();
		player.URL = "http://www.trelford.com/Win.wmv";				
	}
	else
	{
		document.getElementById("Prompt").innerHTML = "BabyJack loses with " + babyHand.join();
		player.URL = "http://www.trelford.com/Lose.wmv";				
	}
}

function Twist()
{
	player.URL= "http://www.trelford.com/Card.wmv";
	document.getElementById("Prompt").innerHTML = "Dealing card";	
	userHand.push(deck.takeOne());
}

&lt;/SCRIPT&gt;

&lt;SCRIPT language=JScript event=playStateChange(newState) for=player&gt;
if (newState == 1) {
	if (player.URL.match ("Shuffle") != null) StickOrTwist ();
	if (player.URL.match ("Card") != null) StickOrTwist ();
	if (player.URL.match ("Win") != null) Play ();
	if (player.URL.match ("Lose") != null) Play ();
}
&lt;/SCRIPT&gt;

&lt;P&gt;For those of you interested in how it was done; the video was shot on a simple digital camera, and then sepia and film age&amp;nbsp;&lt;A class="" href="http://www.microsoft.com/windowsxp/using/moviemaker/create/addspecialfx.mspx#specialfx" mce_href="http://www.microsoft.com/windowsxp/using/moviemaker/create/addspecialfx.mspx#specialfx"&gt;effects&lt;/A&gt; were applied in&amp;nbsp;&lt;A class="" href="http://www.microsoft.com/windows/products/windowsvista/features/details/moviemaker.mspx" mce_href="http://www.microsoft.com/windows/products/windowsvista/features/details/moviemaker.mspx"&gt;Vista's Movie Maker&lt;/A&gt;, with sound generated by my eldest son &lt;A class="" href="http://www.youtube.com/watch?v=uapHhhQNdfk" mce_href="http://www.youtube.com/watch?v=uapHhhQNdfk"&gt;Thomas&lt;/A&gt; playing piano in the background. The stills were created&amp;nbsp;using Microsoft &lt;A class="" href="http://windowshelp.microsoft.com/Windows/en-US/help/f5feb1df-8dd7-4ab0-9f65-3c1c89a329ab1033.mspx" mce_href="http://windowshelp.microsoft.com/Windows/en-US/help/f5feb1df-8dd7-4ab0-9f65-3c1c89a329ab1033.mspx"&gt;Paint&lt;/A&gt; and the&amp;nbsp;Chiller font.&amp;nbsp;The video itself was embedded in the page using the &lt;A class="" href="http://msdn.microsoft.com/en-us/library/bb249579(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb249579(VS.85).aspx"&gt;Windows Media Player Control&lt;/A&gt;; and the interaction was coded&amp;nbsp;in &lt;A class="" href="http://www.w3schools.com/JS/" mce_href="http://www.w3schools.com/JS/"&gt;Javascript&lt;/A&gt; using trusty &lt;A class="" href="http://windowshelp.microsoft.com/Windows/en-NZ/Help/d85ed1d6-e6b7-468a-be39-9505c04ceb781033.mspx" mce_href="http://windowshelp.microsoft.com/Windows/en-NZ/Help/d85ed1d6-e6b7-468a-be39-9505c04ceb781033.mspx"&gt;Notepad&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Phil Trelford&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3061129" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-06-11-29/BabyJack.html" length="5794" type="text/html" /><category domain="http://blogs.technet.com/b/apg/archive/tags/Development/">Development</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Games/">Games</category></item><item><title>Lunar Lander Retro Vector XNA 2.0 Game sample written in F#</title><link>http://blogs.technet.com/b/apg/archive/2008/05/11/lunar-lander-retro-vector-xna-2-0-game-sample-written-in-f.aspx</link><pubDate>Mon, 12 May 2008 00:36:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3053806</guid><dc:creator>apg</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3053806</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/05/11/lunar-lander-retro-vector-xna-2-0-game-sample-written-in-f.aspx#comments</comments><description>&lt;P&gt;While travelling to&amp;nbsp;Microsoft HQ in Redmond&amp;nbsp;earlier in the year for the annual TechFest&amp;nbsp;event - for some fun I decided to&amp;nbsp;have a go at writing a&amp;nbsp;small retro game in &lt;A class="" title=FSharp href="http://research.microsoft.com/fsharp/fsharp.aspx" mce_href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt; using &lt;A class="" href="http://creators.xna.com/" mce_href="http://creators.xna.com/"&gt;XNA 2.0&lt;/A&gt;, and attached are the results. When&amp;nbsp;moving over&amp;nbsp;to Pacific time I usually find myself waking up at 4am for the first few days, leaving me with plenty of wide awake hours I wouldn't normally have to while away, and this is when the sample was born. I&amp;nbsp;decided on an implementation of&amp;nbsp;&lt;A class="" title="Lunar Lander Computer Game" href="http://en.wikipedia.org/wiki/Lunar_Lander_%28computer_game%29" mce_href="http://en.wikipedia.org/wiki/Lunar_Lander_%28computer_game%29"&gt;Lunar Lander&lt;/A&gt; basically because it is pretty simple both logically and graphically,&amp;nbsp;and at the same time fun and achievable in a&amp;nbsp;relatively short time. The&amp;nbsp;sample lets you play with a game pad or keyboard ('Z' and 'X' to rotate, Space to thrust), and to complete the game you must land on the long flat section before you run out of fuel&amp;nbsp;and hit the jagged terrain.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Lunar Lander XNA Game Screenshot" style="WIDTH: 500px; HEIGHT: 375px" height=375 alt="Lunar Lander XNA Game Screenshot" src="http://blogs.technet.com/photos/apg/images/3053799/500x375.aspx" width=500 mce_src="http://blogs.technet.com/photos/apg/images/3053799/500x375.aspx"&gt;&lt;/P&gt;
&lt;P&gt;For those interested, the source is attached to this post, which comprises a Visual Studio 2005 solution, a C# XNA 2.0 shell project to take advantage of the content pipeline for audio, an F# game implementation project and a small utility project to create terrain vectors from points in an image file. Please feel free to download and&amp;nbsp;play with it, in theory if you have XNA 2.0 and F#&amp;nbsp;installed then you should be able to just load the solution and press F5 to build and run.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;EM&gt;Phillip Trelford&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3053806" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-05-38-06/LunarLander.zip" length="99988" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/b/apg/archive/tags/F_2300_/">F#</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Development/">Development</category><category domain="http://blogs.technet.com/b/apg/archive/tags/XNA/">XNA</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Games/">Games</category></item><item><title>LEGO Halo 3 Foundry Forge Kit </title><link>http://blogs.technet.com/b/apg/archive/2008/04/18/lego-halo-3-foundry-forge-kit.aspx</link><pubDate>Fri, 18 Apr 2008 11:47:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3039245</guid><dc:creator>apg</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3039245</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/04/18/lego-halo-3-foundry-forge-kit.aspx#comments</comments><description>&lt;P&gt;We have recently come accross Jeff Keegan's solution to being&amp;nbsp;obsessed with Halo 3's Forge mode, but&amp;nbsp;stuck at work without an Xbox:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The LEGO Halo 3 Foundry Forge Kit! (&lt;/STRONG&gt;&lt;A class="" title="LEGO Halo 3 Foundry Forge Kit (LH3FFK)" href="http://www.keegan.org/jeff/lego/foundry/" target=_blank mce_href="http://www.keegan.org/jeff/lego/foundry/"&gt;&lt;STRONG&gt;LH3FFK&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" title="Big Arena Bot" href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaBot_sbs_big.jpg" target=_blank mce_href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaBot_sbs_big.jpg"&gt;&lt;IMG title="Big Arena Bot" style="WIDTH: 580px; HEIGHT: 163px" height=163 alt="Big Arena Bot" src="http://blogs.technet.com/photos/apg/images/3046904/original.aspx" width=580 align=left mce_src="http://blogs.technet.com/photos/apg/images/3046904/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;We loved the idea, and asked Jeff to tell us the story. Here it is in Jeff's very own words:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-GB; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin"&gt;&lt;EM&gt;"Halo 3 has a feature that lets you modify existing maps, but it's limited in that it only lets you place/move/remove objects - you can't change the terrain. That limitation changed slightly when Bungie gave us the Halo 3 map "Foundry", a large warehouse where virtually every object in the room is removable, and the terrain is basically a big empty box. With Foundry, they essentially threw down the gauntlet and said "Here's a blank slate - go have fun and create something cool". Many of us have risen to the occasion, pouring hours upon hours into the art of placing virtual shipping containers, bridges, staircases, crates, and wire fences in that big empty box, all to create that one perfect sandbox to play in.&lt;BR&gt;&lt;BR&gt;One day, while talking about some map ideas with my friend Aron at work, we found ourselves drawing whiteboard illustrations just to convey the ideas that were coming to mind. Someone had already created a PDF file showing a top-down view of the empty warehouse (and a bunch of paper cutouts of containers that were to scale), but that crude tool only allowed you to create these very two-dimensional maps, hugging the ground. Looking at the Lego constructions on my desk, Aron said what I'd already been thinking for a while - someone should do this with Lego bricks. A few days later I had the entire design modeled in Lego Digital Designer - my Lego Halo 3 Foundry Forge Kit (LH3FFK). Before clicking the check-price button to see how much the actual pieces would cost, I wondered to myself how much I could stomach.. I imagined the best case scenario: that 20 years from now I'd fondly remember that cool Halo Lego map thing I did back in '08, that I'd create a bunch of incredible maps we play every Thursday, that I'd have fun building and using it, and that at least a few people said they thought it was cool. How much would I pay for that? I thought, maaaaybe, at the most, umm.. ehh.. $300?&amp;nbsp; I cringed at the amount, amazed that I'd let myself go that high.&amp;nbsp; I clicked the button and saw $380.&amp;nbsp; Doh!&lt;BR&gt;&lt;BR&gt;After one initial scaled-down purchase ($80), a cost saving trip to the local Lego store, some more self convincing, a final big purchase from Lego's Pick-a-Brick website, and more than 30 days of waiting for overseas shipping, I now have my kit. It took two days to sort out all of the Lego pieces and build the LH3FFK pieces. It's incredibly satisfying designing levels by hand; Forge is great (and also satisfying), but actually holding the blocks and manipulating them just feels different.&amp;nbsp; My favorite part about this whole exercise? When I was a kid, every time I built a Lego building or maze, I'd think "Man, I wish we could shrink ourselves down to that size and run around in there, climb this, jump off of that, and crawl through this".&amp;nbsp; Now, I can! Well worth the price of ten pounds of acrylonitrile butadiene styrene.&lt;BR&gt;&lt;BR&gt;Now if only I could keep my daughters from turning my Big Arena map into a Lego tea party."&lt;/EM&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-GB; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin"&gt;We love Jeff's passion! Here are two more (clickable) screenshots:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-GB; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin"&gt;&lt;A class="" title="Big Arena Top" href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaTop_sbs_big.jpg" target=_blank mce_href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaTop_sbs_big.jpg"&gt;&lt;IMG title="Big Arena Top" style="WIDTH: 580px; HEIGHT: 163px" height=163 alt="Big Arena Top" src="http://blogs.technet.com/photos/apg/images/3046906/original.aspx" width=580 mce_src="http://blogs.technet.com/photos/apg/images/3046906/original.aspx"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: Calibri; mso-fareast-language: EN-GB; mso-ansi-language: EN-GB; mso-bidi-language: AR-SA; mso-fareast-theme-font: minor-latin"&gt;&lt;A class="" title="Big Arena W Corner" href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaWCorner_sbs_big.jpg" target=_blank mce_href="http://www.keegan.org/jeff/lego/foundry/lh3ffk_sbs_20080423/bigsbs/BigArenaWCorner_sbs_big.jpg"&gt;&lt;IMG title="Big Arena W Corner" style="WIDTH: 580px; HEIGHT: 163px" height=163 alt="Big Arena W Corner" src="http://blogs.technet.com/photos/apg/images/3046908/original.aspx" width=580 mce_src="http://blogs.technet.com/photos/apg/images/3046908/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;EM&gt;Joaquin Quiñonero Candela&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3039245" width="1" height="1"&gt;</description></item><item><title>TrueSkill Through Time</title><link>http://blogs.technet.com/b/apg/archive/2008/04/05/trueskill-through-time.aspx</link><pubDate>Sat, 05 Apr 2008 15:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3029664</guid><dc:creator>apg</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=3029664</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/04/05/trueskill-through-time.aspx#comments</comments><description>&lt;P&gt;In December 2007, we published a &lt;A href="http://books.nips.cc/papers/files/nips20/NIPS2007_0931.ps.gz"&gt;paper&lt;/A&gt; about the application of &lt;A title="TrueSkill Homepage" href="http://www.research.microsoft.com/mlp/apg/trueskill.aspx" mce_href="http://www.research.microsoft.com/mlp/apg/trueskill.aspx"&gt;TrueSkill&lt;/A&gt; to all recorded data of professional and semi-professional Chess play from 1850 to 2006. The dataset can be obtained from &lt;A href="http://www.chessbase.com/shop/product.asp?pid=211&amp;amp;user=&amp;amp;coin="&gt;ChessBase&lt;/A&gt;. We are very happy to be able to release the &lt;A href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt; source code that performed all these massive computations. A few things to bear in mind when running this code:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The full factor graph has ~30,000,000 factors and ~25,000,000 variables. At this size, the analysis is among the largest applications of (approximate) Bayesian inference to date. Nevertheless, the full message passing schedule allocates no more than 11 GB of memory and is run in under 20 minutes on an Intel Pentium 4 processor. These numbers hold for the adaptive draw margin model run on 3.5 million games.&lt;/LI&gt;
&lt;LI&gt;Due to the huge amount of results (&amp;gt;1,200,000 skills of all players in all their active years) we use SQL server to store the result set. Please let us know if you think a purely text based result output is needed and we will add it.&lt;/LI&gt;
&lt;LI&gt;There is a very interesting, related &lt;A href="http://math.bu.edu/people/mg/research/glicko.pdf"&gt;paper&lt;/A&gt; by Prof. &lt;A href="http://math.bu.edu/people/mg/research/glicko.pdf"&gt;Mark Glickman&lt;/A&gt; which analyses subset of this data (88 top players of all time).&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;The attached ZIP file contains the entire source code which should compile without problems with &lt;A href="http://research.microsoft.com/research/downloads/Details/7ac148a7-149b-4056-aa06-1e6754efd36f/Details.aspx"&gt;F# 1.9.3.14&lt;/A&gt;. You can either load the solution in Visual Studio 2008 or simply run build.bat form the command line - in either case you will end up with a &lt;U&gt;chessanalysis.exe&lt;/U&gt; program or an &lt;U&gt;analysis.exe&lt;/U&gt; program. If you want to try out the application, we included the first 1,000 lines of match outcomes (this is part of the first 5 years of data we have).&lt;/P&gt;
&lt;P mce_keep="true"&gt;As for running the code, here are the parameter switches of the command line application:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-no-safe&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Does not save results predictions (default: off)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-q&amp;nbsp;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Verbosity level off; only works on single runs (default: on)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-N &amp;lt;int&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; First N games only (default: ALL)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-delta &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Maximum deviation in any marginal for convergence (default: 0.01)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-muS &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mean of prior skill belief (default: 1200)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-sigmaS &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Standard deviation of prior skill belief (default: 400)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-muD &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Mean of prior draw margin belief (default: 300)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-sigmaD &amp;lt;float&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/B&gt;Standard deviation of prior draw margin belief (default: 100)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-beta &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Standard deviation of performance distr. (default: 600)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-tauS &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Standard deviation of skill dynamics distr. (default: 40)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-tauD &amp;lt;float&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Standard deviation of draw margin dynamics distr. (default: 10)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;-server &amp;lt;string&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQL server name for output (default: 'camresapga01')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-prefix &amp;lt;string&amp;gt;&lt;/B&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table name prefix for output (default: 'Result')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-db &amp;lt;string&amp;gt;&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name of the database for output (default: 'ChessBase')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-mf&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Fixed draw margin (default)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-mf2&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fixed draw margin with two factors for draw&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-maf&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fixed draw margin with ADF (iterate per year)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-maf2&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Fixed draw margin with pure ADF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-mv&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Variable draw margin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-as&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Single run (default)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;-am&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Model selection&lt;/P&gt;
&lt;P mce_keep="true"&gt;So, a good first test is analysis.exe -no-safe SmallChessBase.csv.&lt;/P&gt;
&lt;P mce_keep="true"&gt;We are very interested to hear your feedback - both on the model, our paper and the F# code.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update&lt;/STRONG&gt;: Following the release of the &lt;A href="http://msdn.microsoft.com/en-us/fsharp/default.aspx" mce_href="http://msdn.microsoft.com/en-us/fsharp/default.aspx"&gt;F# September 2008 CTP&lt;/A&gt; we have updated the source code to work with &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en"&gt;F# 1.9.6.2&lt;/A&gt;. Also, we added one of the new features of F#, namely units-of-measure. Note that one can no longer accidentally pass the variance instead of the standard deviation beceause the former being of type &lt;FONT face="Courier New"&gt;float&amp;lt;ELOPoints^2&amp;gt;&lt;FONT face=Arial&gt;. We have also added full debug support so simply press F5 to experiment with the -no-safe SmallChessBase.csv option mentioned above.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update&lt;/STRONG&gt;: We removed a reduant schedule creation in the function &lt;EM&gt;FixedDrawMarginADFAnalyse&lt;/EM&gt;. Thanks &lt;A class="" href="http://users.rsise.anu.edu.au/~xzhang/" mce_href="http://users.rsise.anu.edu.au/~xzhang/"&gt;to Henry (Xinhua) Zhang&lt;/A&gt;&amp;nbsp;for pointing out this mistake!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SMALL&gt;Ralf Herbrich &amp;amp; Thore Graepel&lt;/SMALL&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3029664" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-02-96-64/ChessAnalysis-_2D00_-CTP.zip" length="30784" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/b/apg/archive/tags/F_2300_/">F#</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Bayesian/">Bayesian</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Machine+Learning/">Machine Learning</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Visual+Studio/">Visual Studio</category><category domain="http://blogs.technet.com/b/apg/archive/tags/TrueSkill/">TrueSkill</category><category domain="http://blogs.technet.com/b/apg/archive/tags/Development/">Development</category></item><item><title>Arkwright Scholar Erroll Wood Visits MSRC</title><link>http://blogs.technet.com/b/apg/archive/2008/03/01/arkwright-scholar-erroll-wood-visits-msrc.aspx</link><pubDate>Sat, 01 Mar 2008 23:53:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2950100</guid><dc:creator>apg</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=2950100</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/03/01/arkwright-scholar-erroll-wood-visits-msrc.aspx#comments</comments><description>&lt;FONT size=3&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Erroll Wood visited Microsoft Research Cambridge as an Arkwright scholar, and chatted to the Applied Games Group on Monday 11 of February 2008. Before handing in the mike to Erroll, let us link to some of the games he&amp;nbsp;has written:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Tank Patrol: &lt;A href="http://www.newgrounds.com/portal/view/298719"&gt;&lt;SPAN style="COLOR: blue"&gt;http://www.newgrounds.com/portal/view/298719&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Turret Defence: &lt;A href="http://www.newgrounds.com/portal/view/329519"&gt;&lt;SPAN style="COLOR: blue"&gt;http://www.newgrounds.com/portal/view/329519&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Comet Blaster: &lt;A href="http://www.newgrounds.com/portal/view/358561"&gt;&lt;SPAN style="COLOR: blue"&gt;http://www.newgrounds.com/portal/view/358561&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify; mso-list: l0 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; tab-stops: list 36.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Turret Defence 2: &lt;A href="http://www.newgrounds.com/portal/view/393174"&gt;&lt;SPAN style="COLOR: blue"&gt;http://www.newgrounds.com/portal/view/393174&lt;/SPAN&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Now, here's the story of the Arkwright scholarship in Erroll's own words&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;In my GCSE year I took a paper and an interview for an Arkwright scholarship – a Design &amp;amp; Technology sponsorship scheme aimed to stimulate young people to raise the profile of the Design &amp;amp; Technology subject. Those who are accepted into the scheme are given £500 over 2 years to spend in the academic field and many more opportunities. Their school also receives £500 over two years to buy equipment. A few months after the interview I was pleasantly surprised to find out I’d secured a place with Microsoft Research Cambridge with its MD Andrew Herbert as my sponsor but I was most pleased to be given the chance to spend a few days in MSRC – a valuable experience.&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;I found the whole branch very impressive and the people working there really seemed to enjoy what they were doing. I was given a tour round plenty of different projects and it was interesting and exciting to get a peek at what might end up in big profile products in the near future. I also got a few days to work with the Computational Biology team helping them finish off a website though I did spend a lot of time just chatting and getting to know the team which was great.&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;This is a games blog I understand and I guess one of the reasons MSRC chose to sponsor me was my expressed interest in programming and games. As a hobby and to make some pocket money on the side I design and program games in flash to be played through web browsers. I’ve always enjoyed playing games and it’s a real pleasure to be able to make them as well so others can experience what you’ve created for them. It is a time consuming process however and I wish I was able to make more of them more often, but as it is I can only get them out during holidays when I’ve got more free time it seems.&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;To recap, thanks to all the guys who made my stay at MSRC so enjoyable and I wish everyone all the best!&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Erroll&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;/SPAN&gt;&lt;/I&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;I very much enjoyed talking to Erroll, and got addicted to &lt;A class="" title="Turret Defence 2" href="http://www.newgrounds.com/portal/view/393174" target=_blank mce_href=" http://www.newgrounds.com/portal/view/393174"&gt;Turret Defence 2&lt;/A&gt;. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;STRONG&gt;&lt;EM&gt;Joaquin Quiñonero Candela&lt;/P&gt;&lt;/EM&gt;&lt;/STRONG&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT face=Arial size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2950100" width="1" height="1"&gt;</description></item><item><title>ArmoredBlitz: Rise and Demise</title><link>http://blogs.technet.com/b/apg/archive/2008/02/21/armoredblitz-rise-and-demise.aspx</link><pubDate>Thu, 21 Feb 2008 07:43:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2917593</guid><dc:creator>apg</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/apg/rsscomments.aspx?WeblogPostID=2917593</wfw:commentRss><comments>http://blogs.technet.com/b/apg/archive/2008/02/21/armoredblitz-rise-and-demise.aspx#comments</comments><description>&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-no-proof: yes; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-GB; mso-fareast-language: EN-GB; mso-bidi-language: AR-SA"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe"&gt;&lt;/v:shapetype&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;IMG style="WIDTH: 524px; HEIGHT: 278px" height=580 src="http://blogs.technet.com/photos/apg/images/2917596/original.aspx" width=974 mce_src="http://blogs.technet.com/photos/apg/images/2917596/original.aspx"&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;ArmoredBlitz, a first person tank shooter and a real-time strategy game all in one, was selected as one of the five winners of the &lt;A href="http://www.dreambuildplay.com/" mce_href="http://www.dreambuildplay.com/"&gt;&lt;FONT color=#0000ff&gt;Silicon Minds&lt;/FONT&gt;&lt;/A&gt; contest. Its creator, Jacob Liechty is a freshman at Purdue University studying Computer Science.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Jacob also devotes much of his time apart from his studies to video game and graphical programming, spending the month leading up to contest deadline creating ArmoredBlitz and its assets from the ground up using XNA and C#.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;I called Jacob to deliver the good news on Sunday, February 3rd. He was very happy, and so was I. Rise. Then I spoke the obligatory words of caution: we needed to check eligibility. Eligibility? Yes, things like making sure that the contestant resides in an eligible country - the US is eligible, so no problem here - and that no close family member works for Microsoft. Panic. You mean, like my brother? What do you mean your brother? My brother, Adam Liechty is a developer at Microsoft! Demise.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas"&gt;Well... you could... fire my brother? Just kidding, I'll try not to stress out :)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: Consolas"&gt;-Jacob&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;Dura lex sed lex. The Law is hard, but (hey) it's the law. There is no way on earth the fact that Adam works for Microsoft could have given Jacob an advantage. Yet, just to make sure there is not the shadow of a doubt, the rules need to be this hard.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;So we're putting this blog post together to honour Jacob's efforts, and the fact that it was the Law that killed his game. We are researchers: we loved it and had selected it as a winner.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;Joaquin Quiñonero Candela, Microsoft Research Cambridge&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;Here is a photo of Jacob:&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;IMG style="WIDTH: 134px; HEIGHT: 195px" height=429 src="http://blogs.technet.com/photos/apg/images/2917627/original.aspx" width=326 mce_src="http://blogs.technet.com/photos/apg/images/2917627/original.aspx"&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;And here are some&amp;nbsp;l&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;inks:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;Silicon Minds contest: &lt;A href="http://www.dreambuildplay.com/" mce_href="http://www.dreambuildplay.com/"&gt;&lt;FONT color=#0000ff&gt;www.dreambuildplay.com&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;YouTube video: &lt;A href="http://www.youtube.com/watch?v=Io6gBC8lnw4" mce_href="http://www.youtube.com/watch?v=Io6gBC8lnw4"&gt;&lt;FONT color=#0000ff&gt;http://www.youtube.com/watch?v=Io6gBC8lnw4&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2917593" width="1" height="1"&gt;</description></item></channel></rss>