<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with Robotics</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/robotics/RSS"/>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with Robotics</title>
      <link>http://channel9.msdn.com/Tags/robotics</link>
    </image>
    <itunes:image href=""/>
    <itunes:category text="Technology"/>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/robotics</link>
    <language>en</language>
    <pubDate>Sun, 12 Feb 2012 15:49:43 GMT</pubDate>
    <lastBuildDate>Sun, 12 Feb 2012 15:49:43 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>65</c9:totalResults>
    <c9:pageCount>3</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>Introducing Kinect services for Microsoft Robotics RDS 2008 R3</title>
      <description><![CDATA[ <p>Trevor Taylor, Program Manager in the <a href="http://www.microsoft.com/robotics/">Microsoft Robotics</a> team walks us through the features of the latest <a href="http://go.microsoft.com/fwlink/?LinkID=223644">Kinect Services for RDS toolkit</a>. Demonstrating support for the Kinect camera via <a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/">Kinect for Windows SDK</a>.</p><p>Also be sure to check out <a href="http://blogs.msdn.com/b/msroboticsstudio/archive/2011/07/13/announcing-kinect-services-for-rds-2008-r3.aspx">this blog post</a> for an update on all things Microsoft Robotics by Stathis Papaefstathiou, General Manager, Microsoft Robotics.</p><p>Enjoy the Show!</p><p>John O'Donnell,&nbsp;ISV Architect Evangelist<br>Microsoft Corporation<br><a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell</a><br><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br><a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a></p><p>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:35a620ca4eff43ff8a779f260165f0ca">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</comments>
      <itunes:summary> Trevor Taylor, Program Manager in the Microsoft Robotics team walks us through the features of the latest Kinect Services for RDS toolkit. Demonstrating support for the Kinect camera via Kinect for Windows SDK.Also be sure to check out this blog post for an update on all things Microsoft Robotics by Stathis Papaefstathiou, General Manager, Microsoft Robotics.Enjoy the Show!John O&#39;Donnell,&amp;nbsp;ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel&amp;nbsp;</itunes:summary>
      <itunes:duration>188</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</link>
      <pubDate>Thu, 21 Jul 2011 04:48:25 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_100_ch9.jpg" height="75" width="100"/>
      <media:thumbnail url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_220_ch9.jpg" height="165" width="220"/>
      <media:thumbnail url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_512_ch9.jpg" height="384" width="512"/>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_2MB_ch9.wmv" expression="full" duration="188" fileSize="24304077" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.mp3" expression="full" duration="188" fileSize="1506916" type="audio/mp3" medium="audio"/>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wma" expression="full" duration="188" fileSize="1528007" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wmv" expression="full" duration="188" fileSize="35286555" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_high_ch9.mp4" expression="full" duration="188" fileSize="71631577" type="video/mp4" medium="video"/>
        <media:content url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_low_ch9.mp4" expression="full" duration="188" fileSize="18957634" type="video/mp4" medium="video"/>
        <media:content url="http://smooth.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS.ism/manifest" expression="full" duration="188" fileSize="5236" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wmv" length="35286555" type="video/x-ms-wmv"/>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3/RSS</wfw:commentRss>
      <category>Kinect</category>
      <category>Microsoft Robotics</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Microsoft Robotics Developer Studio, Cars and Home Automation with Stacy Harris and John Mullinax</title>
      <description><![CDATA[ <p>Robotic technologies can be applied to many aspects of our lives including some that may not seem as obvious. We have all seen scifi movies where there are many robots running around assisting in our daily lives of the future. However what about now? In this video Stacy Harris and John Mullinax talk about adding robotic systems to both a car and even for home automation. You can read more about Stacy's adventures in using <a href="http://www.microsoft.com/robotics/">Microsoft Robotics Developer Studio</a>&nbsp;to add new <a href="http://www.dotnetrocks.com/default.aspx?showNum=364">control options to his home</a></p><p>Enjoy the Show!</p><p>John O'Donnell Microsoft Dynamics ISV Architect Evangelist<br>Microsoft Corporation<br><a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell</a><br><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br><a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a> </p><p>&nbsp;</p><p>.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6d8505f156a34b3092a59e0800373e6c">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</comments>
      <itunes:summary> Robotic technologies can be applied to many aspects of our lives including some that may not seem as obvious. We have all seen scifi movies where there are many robots running around assisting in our daily lives of the future. However what about now? In this video Stacy Harris and John Mullinax talk about adding robotic systems to both a car and even for home automation. You can read more about Stacy&#39;s adventures in using Microsoft Robotics Developer Studio&amp;nbsp;to add new control options to his homeEnjoy the Show!John O&#39;Donnell Microsoft Dynamics ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel &amp;nbsp;.</itunes:summary>
      <itunes:duration>675</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</link>
      <pubDate>Fri, 08 Oct 2010 15:26:08 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_100_ch9.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_220_ch9.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_512_ch9.jpg" height="384" width="512"/>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_2MB_ch9.wmv" expression="full" duration="675" fileSize="450071411" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.mp3" expression="full" duration="675" fileSize="5407799" type="audio/mp3" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.mp4" expression="full" duration="675" fileSize="60971915" type="video/mp4" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wma" expression="full" duration="675" fileSize="5475261" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wmv" expression="full" duration="675" fileSize="132281484" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wmv" length="132281484" type="video/x-ms-wmv"/>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax/RSS</wfw:commentRss>
      <category>FY11</category>
      <category>jodonnel</category>
      <category>Microsoft Robotics Developer Studio</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>TWC9: WP7 RTMs, Future of Silverlight, Excel Importer, Robot Gun Turrets</title>
      <description><![CDATA[This week on Channel 9, Dan and Brian discuss the week's top developer news, including:
<br /><ul>
<li>Windows Phone Blog - Terry Myerson - <a shape="rect" href="http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/09/01/windows-phone-7-released-to-manufacturing.aspx" shape="rect">
Windows Phone 7 RTM'd</a> </li><li>Dave Anson - <a shape="rect" href="http://blogs.msdn.com/b/delay/archive/2010/08/26/your-phone-can-turn-into-a-robot-layouttransformer-works-great-on-the-windows-phone-platform.aspx" shape="rect">
LayoutTransformer</a> assembly enables WPF-style layout transformations in WP7 </li><li>Indy from Oz - <a shape="rect" href="http://indyfromoz.wordpress.com/2010/08/30/windows-phone-7-listbox-pagination-with-mvvmlight-applicationbar/" shape="rect">
Windows Phone 7 Listbox pagination</a> with MVVM Light and Application Bar </li><li>LessThanDot - Lazy DBA Series shows how to easily <a shape="rect" href="http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/lazy-dba-sql-server-wizards" shape="rect">
import Excel data via SQL Server</a> wizards, via <a shape="rect" href="http://www.alvinashcraft.com/2010/08/28/dew-drop-august-28-2010/" shape="rect">
Alvin Ashcraft</a> </li><li>SDL Team blog - Microsoft <a shape="rect" href="http://blogs.msdn.com/b/sdl/archive/2010/08/26/microsoft-sdl-and-the-creative-commons.aspx" shape="rect">
Security Development Lifecycle</a> to be licensed under Creative Commons </li><li>IE Team Blog - <a shape="rect" href="http://blogs.msdn.com/b/ie/archive/2010/08/30/performance-profiling-how-different-web-sites-use-browser-subsystems.aspx" shape="rect">
Performance profiling different browser subsystems </a>for popular Web sites </li><li>Coding4Fun - Peter Brownstein &amp; Peter Juchniewicz - <a shape="rect" href="http://blogs.msdn.com/b/coding4fun/archive/2010/08/30/10056062.aspx" shape="rect">
Building WEIShare</a>, the Windows and Web app to share Windows Experience Index scores
</li><li>Brad Becker - The <a shape="rect" href="http://team.silverlight.net/announcement/the-future-of-silverlight/" shape="rect">
Future of Silverlight</a> </li><li>Web Camps TV - <a shape="rect" href="http://channel9.msdn.com/shows/Web&#43;Camps&#43;TV/Web-Camps-TV-2-OData-Overview-with-Jonathan-Carter/" shape="rect">
OData Overview with Jonathan Carter</a><a shape="rect" shape="rect">&nbsp;</a> </li><li>Rudi Grobler - Timeslot Panel - an <a shape="rect" href="http://www.rudigrobler.net/Blog/timeslotpanel" shape="rect">
Outlook-like Calendar</a>, now ported to Silverlight </li></ul>
<br />Picks of the week!<br /><ul>
<li>Dan's pick: The <a shape="rect" href="http://www.dotnetfunda.com/articles/article1004-net-40-mef-faq-socket-plug-and-extension-.aspx?sms_ss=dotnetkicks" shape="rect">
.NET 4.0 MEF FAQ</a> with hilarious drawings </li><li>Brian's pick: Trossen Robotics - <a shape="rect" href="http://blog.trossenrobotics.com/2010/08/24/interbotix-robot-turrets/" shape="rect">
Interbotix Robot Turrets</a> </li></ul>
<a shape="rect" shape="rect"><br /><br /></a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0606e2f8d1a94b68ace69de901861e5a">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian discuss the week&#39;s top developer news, including:

Windows Phone Blog - Terry Myerson - 
Windows Phone 7 RTM&#39;d Dave Anson - 
LayoutTransformer assembly enables WPF-style layout transformations in WP7 Indy from Oz - 
Windows Phone 7 Listbox pagination with MVVM Light and Application Bar LessThanDot - Lazy DBA Series shows how to easily 
import Excel data via SQL Server wizards, via 
Alvin Ashcraft SDL Team blog - Microsoft 
Security Development Lifecycle to be licensed under Creative Commons IE Team Blog - 
Performance profiling different browser subsystems for popular Web sites Coding4Fun - Peter Brownstein &amp;amp; Peter Juchniewicz - 
Building WEIShare, the Windows and Web app to share Windows Experience Index scores
Brad Becker - The 
Future of Silverlight Web Camps TV - 
OData Overview with Jonathan Carter&amp;nbsp; Rudi Grobler - Timeslot Panel - an 
Outlook-like Calendar, now ported to Silverlight 
Picks of the week!
Dan&#39;s pick: The 
.NET 4.0 MEF FAQ with hilarious drawings Brian&#39;s pick: Trossen Robotics - 
Interbotix Robot Turrets 
</itunes:summary>
      <itunes:duration>1149</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</link>
      <pubDate>Fri, 03 Sep 2010 23:28:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/570980_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/570980_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_320_ch9.jpg" height="240" width="320"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_512_ch9.jpg" height="384" width="512"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_85_ch9.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_2MB_ch9.wmv" expression="full" duration="1149" fileSize="269772785" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.mp3" expression="full" duration="1149" fileSize="9194677" type="audio/mp3" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.mp4" expression="full" duration="1149" fileSize="119264933" type="video/mp4" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wma" expression="full" duration="1149" fileSize="9299353" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wmv" expression="full" duration="1149" fileSize="221900325" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_Zune_ch9.wmv" expression="full" duration="1149" fileSize="159980374" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wmv" length="221900325" type="video/x-ms-wmv"/>
      <dc:creator>Brian Keller</dc:creator>
      <itunes:author>Brian Keller</itunes:author>
      <slash:comments>7</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets/RSS</wfw:commentRss>
      <category>Excel</category>
      <category>Office</category>
      <category>Robotics</category>
      <category>Silveright</category>
      <category>Silverlight</category>
      <category>WP7</category>
    </item>
  <item>
      <title>Surface Driven Robot</title>
      <description><![CDATA[The Microsoft Surface Blog is linking to a Doctoral Thesis Defense that will be streaming live at 1PM eastern today (in 9 minutes) that will preview a system to directly control robots via a Microsoft Surface Computer. <br><br>For more details see the <a shape="rect" href="http://blogs.msdn.com/b/surface/archive/2010/08/23/live-presentation-robot-command-and-control-on-surface.aspx" shape="rect">Surface Blog</a>, or watch the live stream <a shape="rect" href="http://tinychat.com/mmiciredefense" shape="rect">here</a>.  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c54a6566d5e34f1fa6f59e100102b2a8">]]></description>
      <comments>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</comments>
      <itunes:summary>The Microsoft Surface Blog is linking to a Doctoral Thesis Defense that will be streaming live at 1PM eastern today (in 9 minutes) that will preview a system to directly control robots via a Microsoft Surface Computer. For more details see the Surface Blog, or watch the live stream here. </itunes:summary>
      <link>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</link>
      <pubDate>Mon, 23 Aug 2010 13:54:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</guid>      
      <dc:creator>Larry Larsen</dc:creator>
      <itunes:author>Larry Larsen</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robotics Studio</category>
      <category>surface computing</category>
    </item>
  <item>
      <title>Microsoft Robotics Developer Studio update with Trevor Taylor</title>
      <description><![CDATA[With the launch of the new&nbsp;<a shape="rect" href="http://blogs.msdn.com/b/msroboticsstudio/archive/2010/05/20/microsoft-announces-robotics-developer-studio-2008-r3.aspx" shape="rect">R3 version of Microsoft Robotics Developer Studio</a> I sat down to talk
 about the product with Trevor Taylor, Program Manager with the <a shape="rect" href="http://www.microsoft.com/robotics/" shape="rect">
Microsoft Robotics product group</a>.<br />&nbsp;<br />Microsoft Robotics combines a number of components to make up a robotics system including Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS),&nbsp;Visual Programming Language (VPL) and a Visual Simulation Environment (VSE).
<br /><br />If your robotic interests go beyond creating hobbyist robots and onto .NET based robotics then spend a few moments to get an update from Trevor and also learn how a group of students from the&nbsp;<a shape="rect" href="http://www.umich.edu/" shape="rect">University
 Of Michigan</a> worked with <a shape="rect" href="http://blogs.msdn.com/b/innov8showcase/archive/2010/05/21/ford-and-microsoft-showcase-fiestaware-custom-application-platform.aspx" shape="rect">
Ford and Microsoft Robotics&nbsp;</a>to add a custom application platform to the car and build the next generation of in car applications.<br /><br />You can find additional code samples at <a shape="rect" href="http://mrdssamples.codeplex.com/" shape="rect">
http://mrdssamples.codeplex.com/</a><br /><br />Finally did I mention that Microsoft Robotics Developer Studio is now free? - you can download it
<a shape="rect" href="http://go.microsoft.com/fwlink/?LinkID=190572" shape="rect">
here</a><a shape="rect" href="http://mrdssamples.codeplex.com/" shape="rect"><br /><br /></a>
<p>Enjoy the show!</p>
<p>John O'Donnell Microsoft Dynamics ISV Architect Evangelist<br />Microsoft Corporation<br /><a shape="rect" href="http://blogs.msdn.com/jodonnell" shape="rect">http://blogs.msdn.com/jodonnell</a><br /><a shape="rect" href="http://blogs.msdn.com/usisvde" shape="rect">http://blogs.msdn.com/usisvde</a><br /><a shape="rect" href="http://www.twitter.com/jodonnel" shape="rect">http://www.twitter.com/jodonnel</a>
</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6491f4646a974a7499009dea00a15f36">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</comments>
      <itunes:summary>With the launch of the new&amp;nbsp;R3 version of Microsoft Robotics Developer Studio I sat down to talk
 about the product with Trevor Taylor, Program Manager with the 
Microsoft Robotics product group.&amp;nbsp;Microsoft Robotics combines a number of components to make up a robotics system including Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS),&amp;nbsp;Visual Programming Language (VPL) and a Visual Simulation Environment (VSE).
If your robotic interests go beyond creating hobbyist robots and onto .NET based robotics then spend a few moments to get an update from Trevor and also learn how a group of students from the&amp;nbsp;University
 Of Michigan worked with 
Ford and Microsoft Robotics&amp;nbsp;to add a custom application platform to the car and build the next generation of in car applications.You can find additional code samples at 
http://mrdssamples.codeplex.com/Finally did I mention that Microsoft Robotics Developer Studio is now free? - you can download it

here
Enjoy the show!
John O&#39;Donnell Microsoft Dynamics ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel

</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</link>
      <pubDate>Wed, 14 Jul 2010 20:34:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/561185_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/561185_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_320_ch9.png" height="240" width="320"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_512_ch9.png" height="384" width="512"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_85_ch9.png" height="64" width="85"/>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_2MB_ch9.wmv" expression="full" fileSize="600209778" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.mp3" expression="full" fileSize="7160282" type="audio/mp3" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.mp4" expression="full" fileSize="85069997" type="video/mp4" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wma" expression="full" fileSize="7241613" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wmv" expression="full" fileSize="137714049" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_Zune_ch9.wmv" expression="full" fileSize="92194101" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wmv" length="137714049" type="video/x-ms-wmv"/>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor/RSS</wfw:commentRss>
      <category>CCR</category>
      <category>DSS</category>
      <category>FY11</category>
      <category>jodonnel</category>
      <category>Microsoft Robotics</category>
      <category>Microsoft Robotics Developer Studio</category>
      <category>Robotics</category>
      <category>VPL</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Coding for Windows Phone 7</title>
      <description><![CDATA[<p><strong>In this multipart article series, we’ll cover:</strong></p>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2D00_microsoft_2D00_teched_2D00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<p>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="645" height="365">
<param name="source" value="http://www.msteched.com/ClientBin/players/VideoPlayer2009_03_27.xap" />
<param name="initParams" value="m=http://ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/wmv/WPH314.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://www.msteched.com/Skins/TechEdOnline/Styles/images/DefaultPlayerBackground.png, postid=0" />
<param name="background" value="#00FFFFFF" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
</p>
<p><a href="http://www.msteched.com/2010/NorthAmerica/WPH314">Session WPH 314 – Coding4Fun: Learning Windows Phone 7 Development by creating a robotic t-shirt cannon!</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:bf7849e687e34940ba0d9e7600c92a8c">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</comments>
      <itunes:summary>In this multipart article series, we’ll cover:

Project overview Developing the phone application
Building the robot
Creating the phone user experience











Session WPH 314 – Coding4Fun: Learning Windows Phone 7 Development by creating a robotic t-shirt cannon!
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</link>
      <pubDate>Sun, 13 Jun 2010 17:44:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Ping 59: Private Cloud strategy, Gadget predictions, Microsoft is the most social company, Free Robotics</title>
      <description><![CDATA[Take a break from your hectic day to join Laura &amp; Paul as they bring you all the top stories that were being sent around Microsoft this week. Stories like :<br /><br /><a shape="rect" href="http://arstechnica.com/microsoft/news/2010/05/redmond-releases-appfabric-biztalk-betas-for-on-premises-clouds.ars?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss" shape="rect">A Private Cloud</a><br /><a shape="rect" href="http://gizmodo.com/5541969/bill-gates-told-steve-jobs-about-the-ipad-in-2007" shape="rect">Bill Gates: Device vision- back in 2007</a><br /><a shape="rect" href="http://mashable.com/2010/05/18/social-media-company-employees/" shape="rect">Microsoft is so&nbsp;VERY Social</a><br /><a shape="rect" href="http://spectrum.ieee.org/automaton/robotics/robotics-software/052010-microsoft-shifts-robotics-strategy-makes-robotics-studio-available-free" shape="rect">Robotics for FREE</a>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:169dc040ecc247fda47e9deb000c12bd">]]></description>
      <comments>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</comments>
      <itunes:summary>Take a break from your hectic day to join Laura &amp;amp; Paul as they bring you all the top stories that were being sent around Microsoft this week. Stories like :A Private CloudBill Gates: Device vision- back in 2007Microsoft is so&amp;nbsp;VERY SocialRobotics for FREE
</itunes:summary>
      <itunes:duration>908</itunes:duration>
      <link>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</link>
      <pubDate>Mon, 24 May 2010 22:55:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/551601_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/551601_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_320_ch9.png" height="240" width="320"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_512_ch9.png" height="384" width="512"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_85_ch9.png" height="64" width="85"/>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_2MB_ch9.wmv" expression="full" duration="908" fileSize="271658917" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.mp3" expression="full" duration="908" fileSize="7273185" type="audio/mp3" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.mp4" expression="full" duration="908" fileSize="156693894" type="video/mp4" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wma" expression="full" duration="908" fileSize="7358769" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wmv" expression="full" duration="908" fileSize="199554245" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_Zune_ch9.wmv" expression="full" duration="908" fileSize="127618297" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wmv" length="199554245" type="video/x-ms-wmv"/>
      <dc:creator>Laura Foy</dc:creator>
      <itunes:author>Laura Foy</itunes:author>
      <slash:comments>18</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company/RSS</wfw:commentRss>
      <category>Cloud</category>
      <category>Cloud Computing</category>
      <category>iPad</category>
      <category>Ping</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Building the Robot</title>
      <description><![CDATA[
<p>We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robo
<p>We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robot with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.
</p>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="175" valign="top">
<p>Clint Rutkas - Microsoft <br>
Coding4Fun Ninja</p>
</td>
<td width="463" valign="top">
<p><b>Source Code:</b> <a href="http://cannon.codeplex.com/">Download</a></p>
<p><b>Difficulty:</b> Software Medium - Hardware Advanced <br>
<b>Time Required:</b> 2 weeks <br>
<b>Software Needed:</b> <a href="http://www.microsoft.com/express/download/">Visual C# 2010 Express</a>,
<a href="http://www.microsoft.com/express/">Visual Studio Phone Developer Express</a>
<br>
<b>Hardware:</b> <a href="http://www.servocity.com/html/pan___tilt_packages.html">
Servo City Pan-Tilt</a>, <a href="http://www.robotcombat.com/products/MAG-BKT120.html">
Robot Marketplace battlebot kit</a>, <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">
Phidget 0/0/4 Relay board</a>, <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advance Servo controller</a>, <a href="http://aircannonsinc.com/">t-shirt cannons</a>, nuts and bolts, polycarbonate, and a lot of coffee / soda.</p>
</td>
</tr>
</tbody>
</table>
<h3><span>WARNING: </span></h3>
<blockquote>
<p><span>This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires.</span></p>
</blockquote>
<h4>In this multipart article series, we’ll cover:</h4>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2d00_microsoft_2d00_teched_2d00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<h3>Part 9c into Part 143B? What?</h3>
<p>For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get all the parts to play
 nicely. Only then did I go down to my local plastics place (I recommend TAPs Plastic in Seattle) to give them a technical drawing of what I wanted. The parts will vary depending on the look / feel you want. I wish I could give you part drawings that you could
 replicate, but I don’t think they would do you much good. What I will do, however, is give you a ton of pictures, which should point you in the right direction.</p>
<h3>Research and development</h3>
<p>Typically, I research parts and features to death. However, due to the two-week time constraint of being ready for the Mix conference, I went with what I knew worked for my previous projects while focusing on how to make Betty self-contained since requiring
 Betty to be plugged in would defeat the purpose of having her be a robot. The design of Betty was broken down into a few key parts: driving, aiming, shooting, brains, and power.</p>
<p><strong>Primary part list:</strong></p>
<ul>
<li>1x – <a href="http://www.robotcombat.com/products/MAG-BKT120.html">Battlekit medium kit with stock batteries</a>
</li><li>1x – Cisco Linksys gigabit wireless router </li><li>1x – 13” HP Envy laptop </li><li>1x – <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">Phidget 0/0/4 Relay board</a>
</li><li>1x – <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advanced Servo Controller</a> </li><li>1x – <a href="http://www.servocity.com/html/pan___tilt_packages.html">Servo City Pan-Tilt 985 series</a>
</li><li>2x – <a href="http://aircannonsinc.com/">Burst 175 T-Shirt cannons (with electronic solenoid values)</a>
</li><li>2x – Odyssey PC680MJ 12V 17AH Batteries </li><li>2x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle BECs</a> (set to 6V) (Battery Elimination Circuit)
</li><li>1x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle Pro BECs</a> (set to 12V, has two outputs)
</li><li>1x – 10lb CO2 tank </li><li>1x – Pressure valve (Able to adjust to 300 PSI) </li><li>1x – Serial port to USB Adapter </li></ul>
<h4>Driving a robot</h4>
<p>Without knowing the weight of certain parts, I had to choose a base that could handle the load and be big enough to support everything I loaded onto Betty. From building random, previous robots, I knew of a company, Robot Marketplace, with a ton of internet
 parts, including full bodies. I decided a medium version complete with stock batteries and motors would fit my needs. The batteries are configured here in series to boost the voltage from 12volt to 24volt. The kit comes with an AmpFlow motor controller, which
 is actually a rebranded Roboteq controller. This connects to the computer via a serial to USB adapter. You’ll also have to get the Roboteq software to configure the motor controller to work off RS232 (Serial Port).</p>
<h4>Shooting and aiming a t-shirt cannon </h4>
<p>The cannons are Burst 175 T-Shirt cannons with electronic solenoid valves, allowing them to be fired with the Phidget 0/0/4 Relay board. The cannons are mounted onto a Servo City Pan-Tilt which is controlled by a Phidget Advanced Servo Controller. The pressure
 on the robot is fixed.</p>
<h4>Having a brain and communicating</h4>
<p>Since Dan and myself had features in the initial planning that could require heavy processing, we decided it was best to have a laptop control everything, though initially, ideas of using the .Net Micro-framework were put out there as well. We decided on
 a 13” HP Envy to be the brains of the operation. One thing we loved about this laptop is the extended battery, which snaps onto the bottom to give it a 14-hour life!</p>
<p>We used a Linksys wireless router for getting the phone and the laptop to be able to talk to one another. For the keynote, we had to leverage a wired connection, but we’ll typically use a wireless connection between Betty and Frank.</p>
<h4>Powering everything</h4>
<p>The battlebot kit comes with batteries to power the motors, but we still needed to power everything else. I went with 2 massive 12volt 17-amp hour batteries, which just barely fit the case, and I wired them in series to boost the voltage. This would give
 me the massive amount of energy needed to power all of the random electronics. Since nothing on this robot, other than the motors, runs at 24v, we adjusted the voltage. This is where the BEC (Battery Elimination Circuit) came into play. Here is the breakdown:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image002_5B12_5D.jpg"><img height="380" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image002_5B12_5D_thumb.jpg" alt="clip_image002[12]" border="0" title="clip_image002[12]"></a></p>
<p>If you use different parts, you’ll have to pay attention to the voltages. This is one reason why I like the Castle BEC units, I could just alter the voltage instead of buying a new BEC.</p>
<p>I also highly recommend installing on/off switches. If you plug stuff in with this type of voltage, you’ll get sparks, which carbonize the plugs.</p>
<h4>Building knowledge brain dump</h4>
<p>To mount the top of the robot to the chassis, I had to get a drill press and drill the sidewall of the front and back plate. I decided to save some money and buy a low-end drill press for this, but having a higher end drill press would have made my life
 a bit less stressful. Drilling it had 1/16<sup>th</sup> of an inch on either side to punch through. After drilling, I used a 10-24 tap to put in screw threads so I could use thumbscrews to mount the two together. The two plates were T-6 aluminum, so I used
 WD-40 to help lubricate both drilling and tapping. If you’ve never tapped a hole before, make sure you go a half turn in and then a quarter turn out. This helps break up the little bits of metal in the hole and so helps prevent the tap from breaking.</p>
<p>One thing to be aware of is the movement of the Pan-Tilt and how this relates to mounting the cannons. We had programmatic stops so the cannons didn’t go too far up or down or rip out any cords by rotating too much.</p>
<p>Another helpful tip is to use extra wire so you can move stuff around. Then, once you figure out final layout, either trim the extra wire or install entirely new wiring.</p>
<p>My final tip, and the tip to follow if you only follow one, is the following: use a Voltmeter before you connect anything together. I failed to follow this advice and had two wires switched, which reversed the polarity of the power. When I turned it on,
 I had a nice electrical fire break out, which destroyed 3 BECs. This was a hundred dollar mistake, which took a half-day to repair, and it could have been far worse. Verifying and re-verifying the voltage will not only keep you safe, it will keep you from
 having to buy new parts after explaining why the hallway smells like burnt plastic.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image004_5B12_5D.jpg"><img height="240" width="195" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image004_5B12_5D_thumb.jpg" alt="clip_image004[12]" border="0" title="clip_image004[12]"></a></p>
<h4>Hey, wait a second, you have a custom part!</h4>
<p>Yes, yes I do. It is a part I made to help simplify the wiring on my automated bartender, drinktendr . It is designed to have a single power cord in, the positive wires go to the relay and back again, and have proper power cords go back out to the target
 device. You can wire this up without the board; it just will be a bit messier. If you want to get the boards created, the file for the PCB is in Codeplex in the source code area in the Files directory.</p>
<h3>Pictures should help</h3>
<p>I think the two primary areas that will help show the who/what/when/where/why/how are overviews of the top and of the cannon mountings.</p>
<h4>Chassis</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image006_5B12_5D.jpg"><img height="427" width="475" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image006_5B12_5D_thumb.jpg" alt="clip_image006[12]" border="0" title="clip_image006[12]"></a></p>
<h4>Cannon</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image008_5B12_5D.jpg"><img height="254" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image008_5B12_5D_thumb.jpg" alt="clip_image008[12]" border="0" title="clip_image008[12]"></a></p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image010_5B12_5D.jpg"><img height="233" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image010_5B12_5D_thumb.jpg" alt="clip_image010[12]" border="0" title="clip_image010[12]"></a></p>
<h4>Body Top</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image012_5B12_5D.jpg"><img height="468" width="425" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image012_5B12_5D_thumb.jpg" alt="clip_image012[12]" border="0" title="clip_image012[12]"></a></p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image013_5B12_5D.jpg"><img height="375" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image013_5B12_5D_thumb.jpg" alt="clip_image013[12]" border="0" title="clip_image013[12]"></a></p>
<h4>Why doesn’t mine look good yet?!?!</h4>
<p>It takes time to get all the mountings and wiring installed correctly. We had to demo to
<a href="http://weblogs.asp.net/scottgu/">the Gu</a> using a robot that had wires all over the place! It wasn’t pretty, but the key thing is that it got the job done. Only after I got the functionality working did I shorten wires and do some cord clean-up.
 I stated this above, but I’ll reiterate the fact, that having longer wires helped me move stuff around while being able to adapt to new layouts.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image015_5B12_5D.jpg"><img height="357" width="496" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image015_5B12_5D_thumb.jpg" alt="clip_image015[12]" border="0" title="clip_image015[12]"></a></p>
<h3>Conclusion</h3>
<p>Building two Betties was a fun and hard project. By leveraging past projects, we completed the project quickly without compromising functionality.</p>
<p>In upcoming articles, we’ll talk about how to program Betty, as well as how to get the phone to talk to her. Also, if I missed a section of building out Betty that you want me to cover, please comment and I’ll happily explain more of what I did.</p>
<h3>About The Author</h3>
<p>Clint runs Coding4Fun and is on the <a href="http://channel9.msdn.com/">Channel 9</a> team at Microsoft. Clint has yet to have a project he can’t catch on fire J. If you need to get a hold of Clint, his email is
<a href="mailto:clint.rutkas@microsoft.com">clint.rutkas@microsoft.com</a>, his personal blog is at
<a href="http://www.betterthaneveryone.com">http://www.betterthaneveryone.com</a> and his twitter account is
<a href="http://twitter.com/clintrutkas">@ClintRutkas</a>.</p>
t with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.
</p>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="175" valign="top">
<p>Clint Rutkas - Microsoft <br>
Coding4Fun Ninja</p>
</td>
<td width="463" valign="top">
<p><b>Source Code:</b> <a href="http://cannon.codeplex.com/">Download</a></p>
<p><b>Difficulty:</b> Software Medium - Hardware Advanced <br>
<b>Time Required:</b> 2 weeks <br>
<b>Software Needed:</b> <a href="http://www.microsoft.com/express/download/">Visual C# 2010 Express</a>,
<a href="http://www.microsoft.com/express/">Visual Studio Phone Developer Express</a>
<br>
<b>Hardware:</b> <a href="http://www.servocity.com/html/pan___tilt_packages.html">
Servo City Pan-Tilt</a>, <a href="http://www.robotcombat.com/products/MAG-BKT120.html">
Robot Marketplace battlebot kit</a>, <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">
Phidget 0/0/4 Relay board</a>, <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advance Servo controller</a>, <a href="http://aircannonsinc.com/">t-shirt cannons</a>, nuts and bolts, polycarbonate, and a lot of coffee / soda.</p>
</td>
</tr>
</tbody>
</table>
<h3><span>WARNING: </span></h3>
<blockquote>
<p><span>This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires.</span></p>
</blockquote>
<h4>In this multipart article series, we’ll cover:</h4>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2d00_microsoft_2d00_teched_2d00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<h3>Part 9c into Part 143B? What?</h3>
<p>For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get all the parts to play
 nicely. Only then did I go down to my local plastics place (I recommend TAPs Plastic in Seattle) to give them a technical drawing of what I wanted. The parts will vary depending on the look / feel you want. I wish I could give you part drawings that you could
 replicate, but I don’t think they would do you much good. What I will do, however, is give you a ton of pictures, which should point you in the right direction.</p>
<h3>Research and development</h3>
<p>Typically, I research parts and features to death. However, due to the two-week time constraint of being ready for the Mix conference, I went with what I knew worked for my previous projects while focusing on how to make Betty self-contained since requiring
 Betty to be plugged in would defeat the purpose of having her be a robot. The design of Betty was broken down into a few key parts: driving, aiming, shooting, brains, and power.</p>
<p><strong>Primary part list:</strong></p>
<ul>
<li>1x – <a href="http://www.robotcombat.com/products/MAG-BKT120.html">Battlekit medium kit with stock batteries</a>
</li><li>1x – Cisco Linksys gigabit wireless router </li><li>1x – 13” HP Envy laptop </li><li>1x – <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">Phidget 0/0/4 Relay board</a>
</li><li>1x – <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advanced Servo Controller</a> </li><li>1x – <a href="http://www.servocity.com/html/pan___tilt_packages.html">Servo City Pan-Tilt 985 series</a>
</li><li>2x – <a href="http://aircannonsinc.com/">Burst 175 T-Shirt cannons (with electronic solenoid values)</a>
</li><li>2x – Odyssey PC680MJ 12V 17AH Batteries </li><li>2x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle BECs</a> (set to 6V) (Battery Elimination Circuit)
</li><li>1x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle Pro BECs</a> (set to 12V, has two outputs)
</li><li>1x – 10lb CO2 tank </li><li>1x – Pressure valve (Able to adjust to 300 PSI) </li><li>1x – Serial port to USB Adapter </li></ul>
<h4>Driving a robot</h4>
<p>Without knowing the weight of certain parts, I had to choose a base that could handle the load and be big enough to support everything I loaded onto Betty. From building random, previous robots, I knew of a company, Robot Marketplace, with a ton of internet
 parts, including full bodies. I decided a medium version complete with stock batteries and motors would fit my needs. The batteries are configured here in series to boost the voltage from 12volt to 24volt. The kit comes with an AmpFlow motor controller, which
 is actually a rebranded Roboteq controller. This connects to the computer via a serial to USB adapter. You’ll also have to get the Roboteq software to configure the motor controller to work off RS232 (Serial Port).</p>
<h4>Shooting and aiming a t-shirt cannon </h4>
<p>The cannons are Burst 175 T-Shirt cannons with electronic solenoid valves, allowing them to be fired with the Phidget 0/0/4 Relay board. The cannons are mounted onto a Servo City Pan-Tilt which is controlled by a Phidget Advanced Servo Controller. The pressure
 on the robot is fixed.</p>
<h4>Having a brain and communicating</h4>
<p>Since Dan and myself had features in the initial planning that could require heavy processing, we decided it was best to have a laptop control everything, though initially, ideas of using the .Net Micro-framework were put out there as well. We decided on
 a 13” HP Envy to be the brains of the operation. One thing we loved about this laptop is the extended battery, which snaps onto the bottom to give it a 14-hour life!</p>
<p>We used a Linksys wireless router for getting the phone and the laptop to be able to talk to one another. For the keynote, we had to leverage a wired connection, but we’ll typically use a wireless connection between Betty and Frank.</p>
<h4>Powering everything</h4>
<p>The battlebot kit comes with batteries to power the motors, but we still needed to power everything else. I went with 2 massive 12volt 17-amp hour batteries, which just barely fit the case, and I wired them in series to boost the voltage. This would give
 me the massive amount of energy needed to power all of the random electronics. Since nothing on this robot, other than the motors, runs at 24v, we adjusted the voltage. This is where the BEC (Battery Elimination Circuit) came into play. Here is the breakdown:</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image002%5B12%5D.jpg"><img height="380" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image002%5B12%5D_thumb.jpg" alt="clip_image002[12]" border="0" title="clip_image002[12]"></a></p>
<p>If you use different parts, you’ll have to pay attention to the voltages. This is one reason why I like the Castle BEC units, I could just alter the voltage instead of buying a new BEC.</p>
<p>I also highly recommend installing on/off switches. If you plug stuff in with this type of voltage, you’ll get sparks, which carbonize the plugs.</p>
<h4>Building knowledge brain dump</h4>
<p>To mount the top of the robot to the chassis, I had to get a drill press and drill the sidewall of the front and back plate. I decided to save some money and buy a low-end drill press for this, but having a higher end drill press would have made my life
 a bit less stressful. Drilling it had 1/16<sup>th</sup> of an inch on either side to punch through. After drilling, I used a 10-24 tap to put in screw threads so I could use thumbscrews to mount the two together. The two plates were T-6 aluminum, so I used
 WD-40 to help lubricate both drilling and tapping. If you’ve never tapped a hole before, make sure you go a half turn in and then a quarter turn out. This helps break up the little bits of metal in the hole and so helps prevent the tap from breaking.</p>
<p>One thing to be aware of is the movement of the Pan-Tilt and how this relates to mounting the cannons. We had programmatic stops so the cannons didn’t go too far up or down or rip out any cords by rotating too much.</p>
<p>Another helpful tip is to use extra wire so you can move stuff around. Then, once you figure out final layout, either trim the extra wire or install entirely new wiring.</p>
<p>My final tip, and the tip to follow if you only follow one, is the following: use a Voltmeter before you connect anything together. I failed to follow this advice and had two wires switched, which reversed the polarity of the power. When I turned it on,
 I had a nice electrical fire break out, which destroyed 3 BECs. This was a hundred dollar mistake, which took a half-day to repair, and it could have been far worse. Verifying and re-verifying the voltage will not only keep you safe, it will keep you from
 having to buy new parts after explaining why the hallway smells like burnt plastic.</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image004%5B12%5D.jpg"><img height="240" width="195" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image004%5B12%5D_thumb.jpg" alt="clip_image004[12]" border="0" title="clip_image004[12]"></a></p>
<h4>Hey, wait a second, you have a custom part!</h4>
<p>Yes, yes I do. It is a part I made to help simplify the wiring on my automated bartender, drinktendr . It is designed to have a single power cord in, the positive wires go to the relay and back again, and have proper power cords go back out to the target
 device. You can wire this up without the board; it just will be a bit messier. If you want to get the boards created, the file for the PCB is in Codeplex in the source code area in the Files directory.</p>
<h3>Pictures should help</h3>
<p>I think the two primary areas that will help show the who/what/when/where/why/how are overviews of the top and of the cannon mountings.</p>
<h4>Chassis</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image006%5B12%5D.jpg"><img height="427" width="475" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image006%5B12%5D_thumb.jpg" alt="clip_image006[12]" border="0" title="clip_image006[12]"></a></p>
<h4>Cannon</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image008%5B12%5D.jpg"><img height="254" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image008%5B12%5D_thumb.jpg" alt="clip_image008[12]" border="0" title="clip_image008[12]"></a></p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image010%5B12%5D.jpg"><img height="233" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image010%5B12%5D_thumb.jpg" alt="clip_image010[12]" border="0" title="clip_image010[12]"></a></p>
<h4>Body Top</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image012%5B12%5D.jpg"><img height="468" width="425" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image012%5B12%5D_thumb.jpg" alt="clip_image012[12]" border="0" title="clip_image012[12]"></a></p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image013%5B12%5D.jpg"><img height="375" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image013%5B12%5D_thumb.jpg" alt="clip_image013[12]" border="0" title="clip_image013[12]"></a></p>
<h4>Why doesn’t mine look good yet?!?!</h4>
<p>It takes time to get all the mountings and wiring installed correctly. We had to demo to
<a href="http://weblogs.asp.net/scottgu/">the Gu</a> using a robot that had wires all over the place! It wasn’t pretty, but the key thing is that it got the job done. Only after I got the functionality working did I shorten wires and do some cord clean-up.
 I stated this above, but I’ll reiterate the fact, that having longer wires helped me move stuff around while being able to adapt to new layouts.</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image015%5B12%5D.jpg"><img height="357" width="496" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image015%5B12%5D_thumb.jpg" alt="clip_image015[12]" border="0" title="clip_image015[12]"></a></p>
<h3>Conclusion</h3>
<p>Building two Betties was a fun and hard project. By leveraging past projects, we completed the project quickly without compromising functionality.</p>
<p>In upcoming articles, we’ll talk about how to program Betty, as well as how to get the phone to talk to her. Also, if I missed a section of building out Betty that you want me to cover, please comment and I’ll happily explain more of what I did.</p>
<h3>About The Author</h3>
<p>Clint runs Coding4Fun and is on the <a href="http://channel9.msdn.com/">Channel 9</a> team at Microsoft. Clint has yet to have a project he can’t catch on fire J. If you need to get a hold of Clint, his email is
<a href="mailto:clint.rutkas@microsoft.com">clint.rutkas@microsoft.com</a>, his personal blog is at
<a href="http://www.betterthaneveryone.com">http://www.betterthaneveryone.com</a> and his twitter account is
<a href="http://twitter.com/clintrutkas">@ClintRutkas</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:48351ce68553464f9cea9e7600c98d88">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</comments>
      <itunes:summary>
We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robo
We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robot with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.





Clint Rutkas - Microsoft 
Coding4Fun Ninja


Source Code: Download
Difficulty: Software Medium - Hardware Advanced 
Time Required: 2 weeks 
Software Needed: Visual C# 2010 Express,
Visual Studio Phone Developer Express

Hardware: 
Servo City Pan-Tilt, 
Robot Marketplace battlebot kit, 
Phidget 0/0/4 Relay board, 
Phidget Advance Servo controller, t-shirt cannons, nuts and bolts, polycarbonate, and a lot of coffee / soda.




WARNING: 

This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires.

In this multipart article series, we’ll cover:

Project overview Developing the phone application
Building the robot
Creating the phone user experience

Part 9c into Part 143B? What?
For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get all the</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</link>
      <pubDate>Wed, 21 Apr 2010 21:31:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10000413_100.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10000413_220.jpg" height="165" width="220"/>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Project Overview</title>
      <description><![CDATA[
<p>I think the best way I can describe this project is by telling the story of how I got into this. While playing a bit of xbox 360 at 7:52 p.m., I see a legendary email come in:</p>
<blockquote>
<p>Clint,</p>
<p>Scott Guthrie would really like to have a cannon on stage at MIX this year that would allow him to fire t-shirts into the audience.&nbsp; […]&nbsp; We thought it might be something that you could build based on the fun stuff you’ve done in the past. […] Do you think
 you could build something like that?&nbsp; Do you have the time to work on this for MIX?</p>
</blockquote>
<p>So the Coding4Fun team had two weeks to build two robots able to drive, aim, and shoot t-shirts during a MIX10 Keynote demo of unreleased software? Piece of cake.</p>
<p>The following info will explain the who, what, why, and how of the project in order to help you understand the project’s layout.</p>

<p align="center"><img height="333" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image002_5B25_5D_thumb.jpg" alt="clip_image002[25]" border="0" title="clip_image002[25]">Picture by Vetala Hawkins - Filmateria
 Digital</p>
<h2>In this multipart article series, we’ll cover:</h2>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2D00_microsoft_2D00_teched_2D00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience
</a></li></ol>
<h2>Say hello to my little friend</h2>
<p>Mid-February, we were asked to build a t-shirt shooting robot for the Mix conference on March 15<sup>th</sup>, 2010. This required us to pitch our vision and then research, build, test, and ship our project—all in about 3 weeks. After Scott Guthrie gave
 us approval based on our SketchFlow demo, we had to divide and conquer the application with only 2 weeks left to build the physical robot, the server software, and the phone software. And on top of all that, since we were consuming an unfinished product, everything
 had to have backup plans.</p>
<h2>Delegating workloads</h2>
<p>The work was broken up into logical sections:</p>
<ul>
<li><strong>Server and Robot (Codenamed: Betty)</strong>
<ul>
<li>Clint Rutkas handled this part </li></ul>
</li><li><strong>Phone (Codenamed: Frank)</strong>
<ul>
<li>Dan Fernandez worked on this </li></ul>
</li><li><strong>The phone user interface</strong>
<ul>
<li><a href="http://www.352media.com/">Web design company</a>, <a href="http://www.352media.com/">
352 Media</a> created the look/feel for us </li></ul>
</li><li><strong>Camera / MJPEG stream</strong>
<ul>
<li><a href="http://www.brianpeek.com/">Brian Peek</a> updated his code so it would work on pretty much any platform
</li></ul>
</li></ul>
<p>But wait, if we had a super-secret project, how did Brian and 352 work on it? We told them they were working on Silverlight out of browser applications! We didn’t tell them it was for the phone! We’re sneaky like that.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image003_5B25_5D.png"><img height="277" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image003_5B25_5D_thumb.png" alt="clip_image003[25]" border="0" title="clip_image003[25]"></a></p>
<h2>Frank and Betty sitting in a tree …</h2>
<p>So why did we use code names? Dan and I got a bit confused when referring to certain item ownerships and the codenames allowed us to chat about the project in non-secured areas so it just sounded like we were gossiping about two people, albeit in extremely
 nerdy conversations and extremely nerdy tones. If memory serves, I wanted to name the robot Frank after the character Frank the Take from the movie
<i>Old School</i>,<i> </i>but Dan had for some reason already jokingly referred to the robot as Betty and so the flip-flopped names stuck. During development, Betty and Frank fought and had some communication issues—just like a real couple. You may see references
 to Frank and Betty in the source code or throughout the series of articles on this project. Just remember, Frank is the phone and Betty is the Robot.
</p>
<h2>Design decisions</h2>
<p>At a conference like Mix or PDC, thousands of people cram into a single room, creating a massive amount of wireless interference. Keeping this in mind while considering the communications aspect of the project, we decided to have Betty make HTTP communication
 calls while physically wired into the network. This required us to have some type of web server on the robot. Given enough time, I’m pretty confident that I can get the entire robot working without having a computer onboard or being 100% phone powered but
 we had to be sure nothing would interfere with communication so wireless was out of the question.</p>
<p>Also, since this project was due in an extremely short period of time, a lot of component decisions were based on my past projects. We looked at network cameras that transmit H264, MPEG4, and MJPEG along with the idea of using live smooth streaming from
 the server onboard the robot. Basically, having a computer on Betty gave us more options in case something didn’t work.
</p>
<p>Due to the time crunch, every part had to be either on-hand or off-the-shelf. Creating custom parts takes a lot of time. So basically, my rule was that if it couldn’t be shipped to me in two days, I’d find something different to accomplish the task at hand.</p>
<p>Throughout development, Dan and I met in a SCRUM meeting first thing every morning to figure out what we should get done that day and to discuss any issues that were occurring. Here is Dan’s whiteboard after one of the final meetings before we flew out to
 the conference:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image005_5B25_5D.jpg"><img height="274" width="429" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image005_5B25_5D_thumb.jpg" alt="clip_image005[25]" border="0" title="clip_image005[25]"></a></p>
<h2>Betty, you can be a real robot if you try</h2>
<p>Betty had to do three tasks: drive, aim, and shoot t-shirts. We used an HP Envy 13” laptop to manage everything and here is the hardware list per task:</p>
<ul>
<li><strong>Aiming:</strong>
<ul>
<li>Aiming was accomplished with the Servo City Pan-tilt and a Phidget advance servo controller.
</li></ul>
</li><li><strong>Shooting:</strong>
<ul>
<li>Shooting was accomplished with a Phidget 0/0/4 Relay controller, a drinktendr wiring board, and the t-shirt cannons.
</li></ul>
</li><li><strong>Driving:</strong>
<ul>
<li>Driving was made possible the battle-bot chassis by Robot Marketplace, which uses an Ampflow motor controller. This is the motor controller I used on my self-balancing skateboard project and I found out that it is actually a rebranded Roboteq motor controller.
 I highly recommend using the Roboteq software to configure and upgrade the firmware.
</li></ul>
</li></ul>
<p>Here is the first time Scott got to drive the robot and fire off a few test shots at real-world pressure all via the phone.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image007_5B25_5D.jpg"><img height="374" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image007_5B25_5D_thumb.jpg" alt="clip_image007[25]" border="0" title="clip_image007[25]"></a></p>
<h2>Seriously, you built it in 2 weeks?</h2>
<p>Yes, but we didn’t build just one. For redundancy, we had to build two Betty’s. If a part broke or something didn’t work, we had to be able to swap robots without anyone knowing. And for the record, I only had one very small electrical fire, which was due
 to a crossed wire. Having completed a few projects like this in the past, I knew what I’d get hung up and when I should ask for help. My experience completing previous projects also taught me which part vendors are the best.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image009_5B25_5D.jpg"><img height="333" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image009_5B25_5D_thumb.jpg" alt="clip_image009[25]" border="0" title="clip_image009[25]"></a></p>
<p>The robot was under constant work and my desk / office was literally covered in wires and parts all the time. Since I had such little space, even the robots were covered in wires and parts! I cleaned up multiple times, but within an hour every square inch
 of space had some type of part on it.</p>
<h2>Frank gets a tux for prom</h2>
<p>Silverlight and WPF use XAML for the design aspect of the application. Since it allows for an extremely nice separation, XAML gives both the designer and developer great power in creating the application. Dan told the great folks at
<a href="http://www.352media.com/">352 Media</a> what controls we were using and their Silverlight 3 final product was inserted directly for consumption with minimal change. In the User Experience and Phone articles in this series, we’ll go into more depth.</p>
<p align="center">What it was: <br>
<a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//image_2.png"><img height="283" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//image_thumb.png" alt="image" border="0" title="image"></a>
</p>
<p align="center">What it became:</p>
<p align="center"><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image012_5B25_5D.png"><img height="278" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image012_5B25_5D_thumb.png" alt="clip_image012[25]" border="0" title="clip_image012[25]"></a></p>
<h2>What is with the code?</h2>
<p>Rather than risk breaking our code, we’re showing you the keynote rev in all its glory. Dan and I know we have some cleanup to do. We are the first to admit this. We were dogfooding the Silverlight on the Phone and issues of course came up. Due to this,
 our code may look a bit interesting in a few places.</p>
<p>For communication, you’ll notice some of the code looks like it is a WCF (Windows Communication Foundation) service, and this is because it was at some point. We liked the idea behind WCF since it allowed us to lock down the service and prevent someone from
 sending in outside commands. This also allowed us to create very segregated services that only dealt with the service we wanted. Aim, Drive, Settings, and Shooting each had their own and if we wanted to add in another, it was extremely simple.</p>
<p>But as we got to a point where we were giving the phone tools, we had issues getting it to work and so we had to adapt. We shifted to a simple web project and sent in commands. Rather than refactor stuff, since we thought stuff may be fixed in later builds,
 we consumed the project as a reference and treated our services as classes. We never did go back and check <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p>
<p>The key projects are:</p>
<ul>
<li><strong>Coding4Fun.Cannon.Phone</strong>
<ul>
<li>The phone application </li></ul>
</li><li><strong>Coding4Fun.Cannon.Robot</strong>
<ul>
<li>Handles all direct hardware communications </li></ul>
</li><li><strong>Coding4Fun.Cannon.WCF</strong>
<ul>
<li>This will be abstracted out to a new, non-WCF project. It creates a simplified command from the Phone and the web server. A quick example of this abstraction is with the servo code. The servos expect a certain value that isn’t an angle. With this abstraction,
 the phone can send in an angle and the servos then can do the translation into a value that is meaningful.
<br>
Another big thing that needs to be added in to this namespace is capturing and sending back the photos off the web server. Right now, this logic is all contained in Coding4Fun.Cannon.Web.
</li></ul>
</li><li><strong>Coding4Fun.Cannon.Web</strong>
<ul>
<li>Handles all requests from the phone, it is basic ASP.Net website. </li></ul>
</li><li><strong>Coding4Fun.Cannon.MVC</strong>
<ul>
<li>In case you want routes instead of query string parameters </li></ul>
</li></ul>
<h2>Fins make a car go faster, right?</h2>
<p>Building this application, we figured out some ways make our application to act faster. We also built out some cool utilities we found very useful in our application, we’ll be abstracting these out into a tool chest project shortly. We will discuss these
 performance solutions later on in the series.</p>
<h2>Conclusion</h2>
<p>I hope everyone enjoyed the project and is ready for a more in-depth look on how it was accomplished. This was a fun and exciting project that pushed us by the short deadline and complexity. If you have any questions, please post a comment and we will be
 sure to address them in the future articles.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:623e9a0b064d4412aad29e7600c9c1f8">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</comments>
      <itunes:summary>
I think the best way I can describe this project is by telling the story of how I got into this. While playing a bit of xbox 360 at 7:52 p.m., I see a legendary email come in:

Clint,
Scott Guthrie would really like to have a cannon on stage at MIX this year that would allow him to fire t-shirts into the audience.&amp;nbsp; […]&amp;nbsp; We thought it might be something that you could build based on the fun stuff you’ve done in the past. […] Do you think
 you could build something like that?&amp;nbsp; Do you have the time to work on this for MIX?

So the Coding4Fun team had two weeks to build two robots able to drive, aim, and shoot t-shirts during a MIX10 Keynote demo of unreleased software? Piece of cake.
The following info will explain the who, what, why, and how of the project in order to help you understand the project’s layout.

Picture by Vetala Hawkins - Filmateria
 Digital
In this multipart article series, we’ll cover:

Project overview Developing the phone application
Building the robot
Creating the phone user experience

Say hello to my little friend
Mid-February, we were asked to build a t-shirt shooting robot for the Mix conference on March 15th, 2010. This required us to pitch our vision and then research, build, test, and ship our project—all in about 3 weeks. After Scott Guthrie gave
 us approval based on our SketchFlow demo, we had to divide and conquer the application with only 2 weeks left to build the physical robot, the server software, and the phone software. And on top of all that, since we were consuming an unfinished product, everything
 had to have backup plans.
Delegating workloads
The work was broken up into logical sections:

Server and Robot (Codenamed: Betty)

Clint Rutkas handled this part 
Phone (Codenamed: Frank)

Dan Fernandez worked on this 
The phone user interface

Web design company, 
352 Media created the look/feel for us 
Camera / MJPEG stream

Brian Peek updated his code so it would work on pretty much any platform


But wait, if we ha</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</link>
      <pubDate>Tue, 16 Mar 2010 18:20:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9979874_100.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9979874_220.jpg" height="165" width="220"/>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>7</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Fez’ing with the .Net Micro-framework</title>
      <description><![CDATA[
<p><a href="http://blog.makezine.com/archive/2010/02/hands-on_with_fez_mini_a_net-powere.html">Brian Jepson, from Make Magazine, along with Szymon Kobalczyk posted about their chance to play with the FEZ line of .NET-Powered microcontroller kits</a>.&nbsp; GHI Electronics
 makes them and can be found over at <a href="http://www.tinyclr.com">www.tinyclr.com</a>.&nbsp; The FEZ mini costs about $50 dollars.&nbsp; Adding on sensors is painless too.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:936418ab-9b18-4b3f-bf36-4deb98612feb" class="wlWriterEditableSmartContent">
<div></div>
</div>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:71199207cb234b7a93ab9e7600c9f440">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</comments>
      <itunes:summary>
Brian Jepson, from Make Magazine, along with Szymon Kobalczyk posted about their chance to play with the FEZ line of .NET-Powered microcontroller kits.&amp;nbsp; GHI Electronics
 makes them and can be found over at www.tinyclr.com.&amp;nbsp; The FEZ mini costs about $50 dollars.&amp;nbsp; Adding on sensors is painless too.



</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</link>
      <pubDate>Fri, 26 Feb 2010 16:06:33 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>c4fnews</category>
    </item>
  <item>
      <title>Robocode – robot warfare</title>
      <description><![CDATA[
<p><a href="http://robo-code.blogspot.com/2010/02/robocode-1720-beta-net-robots-are-now.html"><img title="Anatomy" border="0" alt="Anatomy" align="right" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9968766/Anatomy_a8239700-4cac-4d69-9eb3-1785bfa02bec.jpg" width="225" height="160">Robocode
 just released a new version of their software which now allows you to use .Net coded robots</a>!&nbsp; Awesome job guys.&nbsp; They have a
<a href="http://robo-code.blogspot.com/2010/02/robocode-net-introduction.html">post regarding their implementation</a> and their
<a href="http://robowiki.net/w/index.php?title=Robocode/.NET/Create_a_.NET_robot_with_Visual_Studio">
wiki has a quick example to get you up and running</a> and they also include <a href="http://robocode.sourceforge.net/docs/robocode.dotnet/Index.html">
API references for Robocode</a>.</p>
<p>To download, head to <a title="http://sourceforge.net/projects/robocode/files/" href="http://sourceforge.net/projects/robocode/files/">
http://sourceforge.net/projects/robocode/files/</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0855f54f9faf457fa56e9e7600c9fa5d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</comments>
      <itunes:summary>
Robocode
 just released a new version of their software which now allows you to use .Net coded robots!&amp;nbsp; Awesome job guys.&amp;nbsp; They have a
post regarding their implementation and their

wiki has a quick example to get you up and running and they also include 
API references for Robocode.
To download, head to 
http://sourceforge.net/projects/robocode/files/
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</link>
      <pubDate>Wed, 24 Feb 2010 14:35:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9968766_100.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9968766_220.jpg" height="165" width="220"/>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>c4fnews</category>
    </item>
  <item>
      <title>Talking about Microsoft Robotics and VPL with Trevor Taylor</title>
      <description><![CDATA[During my last visit to the Microsoft Redmond Campus Trevor Taylor from the Microsoft Robotics team was kind enough to talk to me about the Microsoft Robotics platform and in particular Visual Programming Language or VPL. Of course when you talk aout robotics
 there is always an opportunity to talk about other cool&nbsp;technology such as the simulation environment and the great things our partner
<a href="http://www.simplysim.net">http://www.simplysim.net</a> are doing with it.&nbsp;<br>
<br>
If this video peaks your interest in Microsoft Robotics then take a look at the book
<a href="http://www.amazon.com/Professional-Microsoft-Robotics-Developer-Programmer/dp/0470141077/ref=cm_cr_pr_product_top">
Trevor co-authored with Kyle Johns<br>
</a><br>
<p><b>John O'Donnell</b> Microsoft Dynamics ISV Architect Evangelist<br>
Microsoft Corporation<br>
<a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell<br>
</a><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br>
<a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4943108a27d645b6ad539deb000bc0f2">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</comments>
      <itunes:summary>During my last visit to the Microsoft Redmond Campus Trevor Taylor from the Microsoft Robotics team was kind enough to talk to me about the Microsoft Robotics platform and in particular Visual Programming Language or VPL. Of course when you talk aout robotics
 there is always an opportunity to talk about other cool&amp;nbsp;technology such as the simulation environment and the great things our partner
http://www.simplysim.net are doing with it.&amp;nbsp;

If this video peaks your interest in Microsoft Robotics then take a look at the book

Trevor co-authored with Kyle Johns

John O&#39;Donnell Microsoft Dynamics ISV Architect Evangelist
Microsoft Corporation
http://blogs.msdn.com/jodonnell
http://blogs.msdn.com/usisvde
http://www.twitter.com/jodonnel
</itunes:summary>
      <itunes:duration>1920</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</link>
      <pubDate>Fri, 22 May 2009 22:19:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/470295_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/470295_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_large_ch9.png" height="240" width="320"/>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_small_ch9.png" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_2MB_ch9.wmv" expression="full" duration="1920" fileSize="118699152" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.mp3" expression="full" duration="1920" fileSize="15361839" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.mp4" expression="full" duration="1920" fileSize="92917212" type="video/mp4" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wma" expression="full" duration="1920" fileSize="31057337" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wmv" expression="full" duration="1920" fileSize="105712963" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_Zune_ch9.wmv" expression="full" duration="1920" fileSize="121056943" type="video/x-ms-wmv" medium="video"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_s_ch9.wmv" expression="full" duration="1920" fileSize="247" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wmv" length="105712963" type="video/x-ms-wmv"/>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor/RSS</wfw:commentRss>
      <category>CCR</category>
      <category>DSS</category>
      <category>Microsoft CCR and DSS Toolkit 2008</category>
      <category>Microsoft Robotics</category>
      <category>Robotics</category>
      <category>Robotics Studio</category>
    </item>
  <item>
      <title>Controlling Your Festive Lights with the .NET Micro Framework</title>
      <description><![CDATA[
<table class="" cellspacing="0" cellpadding="2" width="470" border="0">
<tbody>
<tr>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Author:</strong></td>
<td class="" valign="top" width="363">Rob Miles: <a href="http://www.robmiles.com">
www.robmiles.com</a> </td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Download:</strong></td>
<td class="" valign="top" width="363"><a title="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/festivelights1.0.zip" href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/festivelights1.0.zip">Download</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Software:</strong></td>
<td class="" valign="top" width="363">Visual Studio 2008 Express Edition or better,
<br>
<a href="http://www.microsoft.com/netmf/about/gettingstarted.mspx">.NET Micro Framework 3.0</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Hardware:</strong></td>
<td class="" valign="top" width="363"><a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp">Digi Connect-ME</a>
<br>
<a href="http://www.ghielectronics.com/embeddedmaster.php">GHI Electronics Embedded Master</a>
<br>
<a href="http://devicesolutions.net/Products/Tahoe.aspx">Devices Solutions Tahoe II
</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Time Required:</strong></td>
<td class="" valign="top" width="363">3 hours</td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Cost:</strong></td>
<td class="" valign="top" width="363">30 dollars for lights plus the .NET Micro Framework device</td>
</tr>
</tbody>
</table>
<p>The Micro Framework is one of the newest kids on the .NET block, but it does something really rather wonderful. It brings embedded development within the reach of any C# programmer. If you know C# and love Visual Studio, you can now get started building
 hardware and controlling it with your software. Moreover, it lets developers achieve one of their most cherished dreams, to control their festive lights using programs that they have written. This project shows you how to do just that and adds an extra magical
 feature, in that you can make all your festive lights flash red whenever I, Rob Miles, make a new post on that most famous of blogs,
<a href="http://www.robmiles.com">www.robmiles.com</a>. </p>
<p>Actually, you can modify the code so that you can make your lights do most anything in response to an event that happens on the web. You could signal home that you are running late, send the weather forecast to your Christmas tree or explore any number of
 communication options. You might decide that this is so useful that you leave your decorations up all year round.</p>
<p>If you just want to play with the .NET Micro Framework and get a feel for how easy it is to create software for tiny devices you don't actually need to use any extra hardware at all. The project comes with a complete emulation of the lights display so that
 you can run the whole thing on your computer and learn how hardware and software can be made to work together without burning your fingers with a soldering iron.</p>
<p>However building the hardware will give you an understanding of how some simple electronic components can be controlled from C# and even how serial and parallel data transfer works. It is also great fun.</p>
<p>To get started you will need some hardware and some software. Let's take each in turn.</p>
<h1>Hardware</h1>
<h2>Processor Hardware</h2>
<p>The .NET Micro Framework lets you run C# programs on tiny embedded devices. There are a number of these available today, and they are getting progressively cheaper. You can base this project on any.NET Micro Framework device that has a network port and three
 or more output ports. The ones I'd recommend are:</p>
<ul>
<li>Digi Connect-ME: <a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp">
http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp</a> </li><li>GHI Electronics Embedded Master: <a href="http://www.ghielectronics.com/embeddedmaster.php">
http://www.ghielectronics.com/embeddedmaster.php</a> </li><li>Devices Solutions Tahoe II: <a href="http://devicesolutions.net/Products/Tahoe.aspx">
http://devicesolutions.net/Products/Tahoe.aspx</a> </li></ul>
<p>I built the project for Digi Connect board but the code can be customised for any of the above platforms. The beauty of the .NET Micro Framework is that you hardly need to change your program even if the underlying hardware is completely replaced. The only
 thing you will have to do is adjust the code to target different output pins. I'll flag this part of the program up when we get to it.</p>
<p>The project as supplied runs on a special emulator that runs on the PC and behaves like a .NET Micro Framework device with lights connected, so you can get started exploring the code right away.</p>
<h2>Lights</h2>
<p>I'm keeping things deliberately low voltage for this project. This means that kids of all ages can have a go at building the hardware without messing around with mains. The lights that I used were supplied as lines of twenty leds wired up as four strands
 of five leds each. All the leds in each strand were the same colour. The lights were fitted with a little battery box which held three AA batteries and a tiny controller. To get my display I simply removed the battery box and connected the strands to my hardware.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image.png"><img title="image" height="226" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb.png" width="324" border="0"></a>&nbsp;
<br>
<strong>Figure 1: My Battery Powered Lights</strong></p>
<p>You can do the same with any low power lighting kit that you wish to use. The drivers that I'm using can handle around 500 milliamps of continuous current and so you can connect a fair number of lights to each strand.
</p>
<h2>Buying the Lights</h2>
<p>The lights I used can be bought in the UK from Lights4Fun: www.lights4fun.co.uk and are called &quot;C-LED-4.5-M 20 Multi Coloured Battery Operated LED Fairy Lights&quot;. They are supplied with a battery box and controller that you can remove to connect to the Darlington
 drivers. I used an old 5 volt mobile phone charger to power the lights. If you search eBay for &quot;led christmas lights battery&quot; you should find plenty of suppliers.</p>
<h2>Driver Hardware</h2>
<p>We can't connect a .NET Micro Framework device directly to our lights. There are two reasons for this:</p>
<ol>
<li>The Micro Framework device will not be able to switch the amount of current that we need to drive the lights themselves.
</li><li>The Micro Framework device will not have enough outputs to control all the lights that we want to use.
</li></ol>
<p>This means that we need to make some hardware that goes between the processor and our lights. I actually don't see this as a problem. Making hardware is great fun, seeing something that you've built spring into life is very nice. The hardware we are going
 to use will provide a means by which we can control many hundreds of lights from a single Micro Framework board if we wish. It also has the ability to switch reasonable amounts of current, so you can use quite large numbers of lights if you wish. We are going
 to use two semiconductor components, a CD4094 Shift Register/Latch and a ULN2803 Octal Darlington Driver. A pair of these chips will allow us to control 8 outputs. If you want to control more outputs you simply get more chips and chain them together. For my
 version of the project I just used one of each chip, you can use as many as you like.The shift registers and Darlington amplifiers can be obtained in the UK from Maplin:
<a href="http://www.maplin.co.uk">www.maplin.co.uk</a>. The chip numbers and part numbers as are as follows: QW54J 4094 Shift Register, QY79L ULN2803A Darlington Driver. In the US you can obtain the components and breadboard from Digi-Key:
<a href="http://www.digikey.com">www.digikey.com</a>. </p>
<h2>Serial and Parallel Data</h2>
<p>You might be wondering how we can use just three output lines to control lots of lights. We are going to do this by using the three output lines to provide a
<i>serial</i> data stream which is converted by our hardware into <i>parallel</i> data that can be used to control our lights. This is a fundamental principle of digital electronics and is how, amongst many other things, computer networks transfer data.</p>
<p>We are going to use three signals which are called <b>clock</b>, <b>data</b> and
<b>latch</b>. Each of these can be set high (a voltage is present) or low (no voltage is present) by the .NET Micro Framework device under the control of our software. The signals are connected to the clock, data and latch inputs of our CD4094 shift register
 so that the program can talk to it.</p>
<p>The clock line triggers the shift register to do two things:</p>
<ol>
<li>Shift all the bits along to make room. </li><li>Sample the value of the data input and store this value in the space that was created.
</li></ol>
<p>To get a feel for how this works, take a look at Figure 2 below. It shows a shift register with a pattern of bits in it. The pattern is
<b>01100001</b>. Note that although this represents a number; it can also be regarded as a pattern of 0s and 1s in the shift register itself. The value 0 means 0 volts and the value 1 means some volts. These are the signals that will be used to control our
 lights. I'm going to call them 0 and 1 from now on. The Shift Register has Clock, Data and Latch signals connected and they are all set to 1. We can ignore the latch part of the chip for now.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_3.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_3.png" width="500" border="0"></a>
</p>
<p><strong>Figure 2: A shift register and latch with some data in it</strong></p>
<p>When the clock signal changes from 1 to 0 this causes the shift register to perform the two steps described above. First the data is shifted along to the right. Note that this means that there is an &quot;empty&quot; location at the start of the register, and that
 the right most bit in the register &quot;falls off&quot; the register and disappears. Figure 3 shows how this works.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_4.png"><img title="image" height="236" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_4.png" width="500" border="0"></a>
</p>
<p><strong>Figure 3: Shifting along the values in the shift register</strong></p>
<p>Once the shift has finished the shift register can copy the data signal into the empty bit at the left as shown in Figure 4 below.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_5.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_5.png" width="500" border="0"></a>
<strong><br>
Figure 4: Storing the new data bit</strong></p>
<p>By repeating this process 8 times a program can load a new pattern of 8 bits into the shift register. Then it is time to latch the new value to control the lights. This is the point at which the lights will appear to change. When the latch value is changed
 from 0 to 1 this causes the chip to copy the value in the Shift Register into the latch, as shown in Figure 5 below.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_6.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_6.png" width="500" border="0"></a>
</p>
<p><strong>Figure 5: Copying the shift register pattern into the latch.</strong></p>
<p>The latch is required so that the lights will not flicker as the new patterns are shifted into position. Each of the bits in the latch is connected to an output pin on the CD4094 which is used to switch a particular light colour on or off.</p>
<p>We need to create some C# that will provide the appropriate sequence of signals. It turns out that using the .NET Micro Framework to achieve this is actually very easy. The
<b>displayByte</b> method below sends an 8 bit value into a shift register and then latches it into the output. If you read through the code you can see how the clock, data and latch values are all set to true (high) or false (low) to first clock the data out
 and then trigger the latch to display the pattern on the lights. The input is an 8 bit byte value and the program uses a mask to pick out the value of each bit in turn and set the data output accordingly.</p>
<pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> displayByte(<span class="kwrd">byte</span> <span class="kwrd">value</span>)
{
    latchPort.Write(<span class="kwrd">false</span>);
    clockPort.Write(<span class="kwrd">false</span>);

    <span class="kwrd">byte</span> mask = 1;

    <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; 8; i&#43;&#43;)
    {
        <span class="kwrd">if</span> ((<span class="kwrd">value</span> &amp; mask) &gt; 0)
        {
            dataPort.Write(<span class="kwrd">true</span>);
        }
        <span class="kwrd">else</span>
        {
            dataPort.Write(<span class="kwrd">false</span>);
        }
        clockPort.Write(<span class="kwrd">true</span>);
        clockPort.Write(<span class="kwrd">false</span>);
        mask &lt;&lt;= 1;
    }
    latchPort.Write(<span class="kwrd">true</span>);
    latchPort.Write(<span class="kwrd">false</span>);
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>The <b>dataPort</b>, <b>clockPort</b> and <b>latchPort</b> variables are instances of the .NET Micro Framework class
<b>OutputPort</b>, which provides a method called <b>Write</b> which can be used to control the state of the output signal. We will consider how these are created a little later in the article.</p>
<p>The sample code for this project comes with a software emulator of the CD4094 which shows how it works. Figure 6 below shows that a new pattern is in the process of being shifted into the shift register, while the lights retain the previous one in the latch.
 The Clock and Data signals are high and the next statement will drop the Clock signal to add the next bit into the new pattern.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_7.png"><img title="image" height="303" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_7.png" width="264" border="0"></a>
</p>
<p><strong>Figure 6: The light emulator</strong></p>
<p>This figure also shows that I have two bits in the pattern controlling a strand of each colour. You can single step through the displayByte method above and watch it perform this output.</p>
<p>You can use this technique every time you want to control a large number of outputs using a small number of output pins. The CD4094 has &quot;daisy chain&quot; inputs and outputs so that the devices can be connected in sequence. If I used two devices I could control
 16 bits, with three I could control 24 and so on. This would require only minimal changes to the software.</p>
<h2>Output Driver</h2>
<p>The CD4094 device will produce a signal output, but it is not really powerful enough to drive things like lights. To do this we need an amplifier and the ULN2803 Octal Darlington Driver is perfect for this. It is packaged as a single chip which contains
 8 pairs of transistors. Each transistor pair is wired in a &quot;Darlington&quot; configuration and can be used as a switch which is controlled by on output from the CD4094. When the transistors are turned on they allow current to pass through them and this will cause
 the lamps to light. The lights that I bought used a &quot;pull down&quot; arrangement to make them light up. All of the light emitting diode (LED) lamps had one end wired to a common line that was connected to the positive supply. To make the a chain of LEDs light the
 other end that controls that chain needed to be pulled down to the ground level. This is a common arrangement with lights like these. The ULN2803 driver has the transistors wired in an arrangement that allows it to pull signals low in this way. Figure 7 shows
 how this arrangement works. The resistor shown is actually wired into each LED in the set of lights that I used.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_8.png"><img title="image" height="201" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_8.png" width="226" border="0"></a>
<br>
<strong>Figure 7: Lighting the LEDs</strong></p>
<h5>Complete Circuit</h5>
<p>The complete circuit shown in Figure 8 simply links each output of the CD4094 shift register to an input on the ULN2803 Darlington Driver. Note that there is no reason to link any particular bit with any other, the diagram shown is one which will translate
 most easily to a prototype &quot;breadboard&quot;.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_9.png"><img title="image" height="260" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_9.png" width="500" border="0"></a>
<br>
<strong>Figure 8: The Complete Circuit</strong></p>
<p>The diagram just shows four lights connected to OUT1 from pin 18 of the ULN2803, the other 7 channels are connected in exactly the same way. Some of the pins can be left unconnected. Pins 9 and 10 of the CD4094 are only required if you are connecting multiple
 shift registers together and the common connection on pin 10 of the ULN2803 is not required. The Latch, Data and Clock signals on the CD4094 are connected to the output signals from the Micro Framework device.
</p>
<p>Figure 9 shows the completed circuit built up on a prototype breadboard. The chip on the left is the CD4094 and the one on the right is the ULN2803.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_10.png"><img title="image" height="331" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_10.png" width="484" border="0"></a>
<strong><br>
Figure 9: The Completed Circuit</strong></p>
<p>The red wires carry the positive voltage from the power supply, which is connected to the top left of the circuit. The green wires are ground. Other coloured wires are used for signals. The Clock, Latch and Data signals are brought out to a connector which
 will fit a Digi-ME prototyping board.</p>
<h2>Selecting Lights</h2>
<p>Each bit in the value sent to the <b>displayByte</b> method and then into the shift register will be mapped to a particular chain of lights. The mapping of these is not particularly important, since you can use program constants to represent particular values.
 I wired the red signals to output pins 4 and 8. To light up just the red lights I used the value 0x88 which is the appropriate bit pattern. I then set up constants for all the other colors:</p>
<pre class="csharpcode"><span class="kwrd">const</span> <span class="kwrd">byte</span> GREEN = 0x11;
<span class="kwrd">const</span> <span class="kwrd">byte</span> BLUE = 0x22;
<span class="kwrd">const</span> <span class="kwrd">byte</span> YELLOW = 0x44;
<span class="kwrd">const</span> <span class="kwrd">byte</span> RED = 0x88;</pre>
<h2>Setting Up the Hardware</h2>
<p>The .NET Micro Framework provides a set of classes that can be used to represent the hardware in a system. The program uses instances of the
<b>OutputPort</b> class to represent the output pins. These are created in the method that sets up the hardware:</p>
<pre class="csharpcode"><span class="kwrd">const</span> Cpu.Pin clockPin = Cpu.Pin.GPIO_Pin0;
<span class="kwrd">const</span> Cpu.Pin dataPin = Cpu.Pin.GPIO_Pin1;
<span class="kwrd">const</span> Cpu.Pin latchPin = Cpu.Pin.GPIO_Pin2;

<span class="kwrd">static</span> OutputPort clockPort;
<span class="kwrd">static</span> OutputPort dataPort;
<span class="kwrd">static</span> OutputPort latchPort;

<span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> setupOutputs()
{
    clockPort = <span class="kwrd">new</span> OutputPort(clockPin, <span class="kwrd">false</span>);
    dataPort = <span class="kwrd">new</span> OutputPort(dataPin, <span class="kwrd">false</span>);
    latchPort = <span class="kwrd">new</span> OutputPort(latchPin, <span class="kwrd">false</span>);
}</pre>
<p>In this version of the hardware I have connected pin 0 of the processor to the clock, pin 1 to the data and pin 2 to the latch. If you use different pins you can change the settings above.</p>
<h1>Software</h1>
<p>Now that we have working hardware we can consider how the software is to work. Note that this version of the program works correctly but lacks exception handlers that would make it truly robust. I've left these out to simplify the explanation. To make sense
 of this description you will need to have a copy of the program itself available for reference.</p>
<p>You can develop the code using Visual Studio 2008 Express edition, which you can download from
<a href="http://www.microsoft.com/express/">http://www.microsoft.com/express/</a>
</p>
<p>The software is written for the .NET Micro Framework 3.0 which you can download from
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9356ed6f-f1f0-43ef-b21a-4644dd089b4a&amp;displaylang=en">
http://www.microsoft.com/downloads/details.aspx?FamilyID=9356ed6f-f1f0-43ef-b21a-4644dd089b4a&amp;displaylang=en</a>
</p>
<h2>Reading the Blog</h2>
<p>The program reads the RSS feed from a blog and looks for the <b>&lt;pubDate&gt;</b> value. This contains the date when the feed was last updated. Whenever this date changes the lights must flash red for a few seconds before resuming a random display. Users of
 the full .NET Framework can use the <b>HTTPRequest</b> class to build a <b>GET</b> command to be sent to a server. Unfortunately the .NET Micro Framework does not support this, so we have to access the web feed using socket based communication. This part of
 the program is heavily based on the <b>SocketClient</b> example supplied with the .NET Micro Framework.</p>
<pre class="csharpcode"><span class="rem">// This method requests a page from the specified server.</span>
<span class="kwrd">private</span> <span class="kwrd">static</span> String GetWebPage(String server, <span class="kwrd">string</span> webPage)
{
    <span class="kwrd">const</span> Int32 c_httpPort = 80;
    <span class="kwrd">const</span> Int32 c_microsecondsPerSecond = 1000000;

    <span class="rem">// Create a socket connection to the specified server and port.</span>
    <span class="kwrd">using</span> (Socket serverSocket = ConnectSocket(server, c_httpPort))
    {
        <span class="rem">// Send request to the server.</span>
        String request = <span class="str">&quot;GET &quot;</span>&#43; webPage &#43; 
             <span class="str">&quot; HTTP/1.1\r\nHost: &quot;</span> &#43; server &#43; 
             <span class="str">&quot;\r\nConnection: Close\r\n\r\n&quot;</span>;
        Byte[] bytesToSend = Encoding.UTF8.GetBytes(request);
        serverSocket.Send(bytesToSend, bytesToSend.Length, 0);

        <span class="rem">// Allocate a buffer to receive HTML chunks</span>
        Byte[] buffer = <span class="kwrd">new</span> Byte[1024];

        <span class="rem">// 'page' refers to the HTML data as it is built up.</span>
        String page = String.Empty; 

        <span class="rem">// Wait up to 30 seconds for initial data </span>
        <span class="rem">// Will throw exception if connection closed</span>
        DateTime timeoutAt = DateTime.Now.AddSeconds(30);
        <span class="kwrd">while</span> (serverSocket.Available == 0 &amp;&amp; 
               DateTime.Now &lt; timeoutAt)
        {
            System.Threading.Thread.Sleep(100);
        }

        <span class="rem">// Poll for data until 30 second time out</span>
        <span class="rem">// Returns true for data and connection closed</span>
        <span class="kwrd">while</span> (serverSocket.Poll(30 * c_microsecondsPerSecond,
                                 SelectMode.SelectRead))
        {
            <span class="rem">// Zero all bytes in the re-usable buffer</span>
            Array.Clear(buffer, 0, buffer.Length);

            <span class="rem">// Read a buffer-sized HTML chunk</span>
            Int32 bytesRead = serverSocket.Receive(buffer);

            <span class="rem">// If 0 bytes in buffer, then connection is closed, </span>
            <span class="rem">// or we have timed out</span>
            <span class="kwrd">if</span> (bytesRead == 0)
                <span class="kwrd">break</span>;

            <span class="rem">// Append the chunk to the string</span>
            page &#43;= <span class="kwrd">new</span> String(Encoding.UTF8.GetChars(buffer));
        }

        <span class="kwrd">return</span> page;   <span class="rem">// Return the complete string</span>
    }
}</pre>
<p>This method is called to fetch the journal RSS feed from my blog:</p>
<pre class="csharpcode"><span class="kwrd">string</span> address = <span class="str">&quot;www.robmiles.com&quot;</span>;
<span class="kwrd">string</span> name = <span class="str">&quot;/journal/rss.xml&quot;</span>;

<span class="kwrd">string</span> html = GetWebPage(address, name);</pre>
<p>You can use it to download from any RSS feed or page on the web. It will throw an exception if the page cannot be read. This version of my program does not perform exception handling however.</p>
<h2>Getting the Published Date</h2>
<p>The date is held in the form:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">pubDate</span><span class="kwrd">&gt;</span>Wed, 05 Nov 2008 22:38:52 &#43;0000<span class="kwrd">&lt;/</span><span class="html">pubDate</span><span class="kwrd">&gt;</span></pre>
<p>It would be enough just to record this content and check for changes in the text, but I decided that I might want to use the date information in a later version of the program and so I created some small helper methods to read numbers from the input string
 and a larger method to read the publish date itself:</p>
<pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">static</span> DateTime getRecentPubDate(<span class="kwrd">string</span> html, <span class="kwrd">string</span> startTag)
{
    <span class="kwrd">int</span> index = html.IndexOf(startTag) ;

    <span class="kwrd">if</span> (index &lt; 0) 
        <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Missing tag &quot;</span> &#43; startTag);

    index &#43;= startTag.Length;

    <span class="rem">// spin past the name of the day</span>
    <span class="kwrd">while</span> (index &lt; html.Length &amp;&amp; html[index] != <span class="str">','</span>) index&#43;&#43;;
    <span class="kwrd">if</span> (index == html.Length) 
        <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Short publish date&quot;</span>);

    <span class="kwrd">int</span> dayValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);

    <span class="kwrd">string</span> monthName = getString(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);
    <span class="kwrd">int</span> monthValue = getMonth(monthName);

    <span class="kwrd">int</span> yearValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);
    <span class="kwrd">int</span> hourValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">':'</span>);
    <span class="kwrd">int</span> minuteValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">':'</span>);
    <span class="kwrd">int</span> secondValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);

    <span class="kwrd">return</span> <span class="kwrd">new</span> DateTime(yearValue, monthValue, dayValue, 
                        hourValue, minuteValue, secondValue);
}</pre>
<p>The main body of the program uses this method to extract the date out of the RSS feed. When a new date is found it is time to update the lights.</p>
<h2>Lights and Threads</h2>
<p>My first version of the program flashed the lights for a while and then checked to see if a new blog post had been made. This worked OK, but the process of loading the RSS feed from the server and checking the dates can take a few seconds, which meant that
 the flashing lights would freeze every now and then. This did not look very good, and so I decided to use two threads instead. One is in charge of flashing the lights in a random pattern and the other loads the RSS feed from my blog and checks the date of
 the most recent publication. </p>
<p>Note that the threading I am using is exactly the same as threading in the full .NET Framework.
</p>
<h2>Thread Communication</h2>
<p>The two threads communicate by means of a single boolean variable which is set to true when the blog alert is to take place. The display thread reads this flag and flashes the lights red if it is time to alert.
</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> alert = <span class="kwrd">false</span>;

<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> flasher()
{
    setupOutputs();

    <span class="kwrd">while</span> (<span class="kwrd">true</span>)
    {
        randomDisplay(400, 10);
        <span class="kwrd">if</span> (alert)
        {
            alert = <span class="kwrd">false</span>;
            flashRed(600, 20);
        }
    }
}</pre>
<p>The methods <b>randomDisplay</b> and <b>flashRed</b> do exactly what you would expect. Each of them gets two numbers to control the lights. The first number gives the delay in milliseconds between flashes (a few hundred milliseconds giving best results).
 The second gives the number of times that the lights should be flashed before the method finishes.
<b>RandomDisplay</b> displays random colors, whereas <b>flashRed</b> is simply flashes the red lights. The
<b>alert</b> flag is cleared before the red lights are flashed so that the system will resume normal display after the alert.</p>
<p>The second thread in the system performs the blog download and date test behaviour. This all happens inside the
<b>Main</b> method:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> Main()
{
    flashThread = <span class="kwrd">new</span> System.Threading.Thread(flasher);

    flashThread.Start();

    <span class="kwrd">string</span> address = <span class="str">&quot;www.robmiles.com&quot;</span>;
    <span class="kwrd">string</span> name = <span class="str">&quot;/journal/rss.xml&quot;</span>;

    String html = GetWebPage(address, name);

    DateTime lastUpdate = getRecentPubDate(html, <span class="str">&quot;&lt;pubDate&gt;&quot;</span>);

    Debug.Print(<span class="str">&quot;Initial Update Value : &quot;</span> &#43; lastUpdate.ToString());

    <span class="kwrd">while</span> (<span class="kwrd">true</span>)
    {
        System.Threading.Thread.Sleep(10000);

        html = GetWebPage(address, name);

        DateTime blogUpdate = getRecentPubDate(html, <span class="str">&quot;&lt;pubDate&gt;&quot;</span>);

        <span class="kwrd">if</span> (!blogUpdate.Equals(lastUpdate))
        {
            Debug.Print(<span class="str">&quot;Updated at : &quot;</span> &#43; blogUpdate.ToString());
            lastUpdate = blogUpdate;
            alert = <span class="kwrd">true</span>;
        }
    }
}</pre>
<p>To reduce the load on the network the system only checks the blog feed every 10 seconds.</p>
<h1>Future Work</h1>
<p>The program itself works fine, but the error handling is not wonderful. Although some of the methods used throw exceptions these are not caught anywhere, causing the blog reading thread to terminate. This does not stop the lights flashing, but it does mean
 that there will be no more alerts. However, it is not too hard to create a version which contains proper error handling and even flashes the lights different colors to indicate the alarm conditions. I have created a version that flashes the lights yellow every
 now and then if the network connection fails. There is also considerable scope for reading other web based sources and changing the output accordingly. Feel free to do all these things and make sure that you have fun.</p>
<h2>Thanks</h2>
<p>Thanks go to Ian Mitchell of Ormston Technology (<a href="http://www.ormtec.co.uk/">http://www.ormtec.co.uk/</a>) for doing such a great job of hardware design and build.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:90ff2e0eefa3449089ad9e7600cda780">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</comments>
      <itunes:summary>





Author:
Rob Miles: 
www.robmiles.com 


Download:
Download


Software:
Visual Studio 2008 Express Edition or better,

.NET Micro Framework 3.0


Hardware:
Digi Connect-ME

GHI Electronics Embedded Master

Devices Solutions Tahoe II



Time Required:
3 hours


Cost:
30 dollars for lights plus the .NET Micro Framework device



The Micro Framework is one of the newest kids on the .NET block, but it does something really rather wonderful. It brings embedded development within the reach of any C# programmer. If you know C# and love Visual Studio, you can now get started building
 hardware and controlling it with your software. Moreover, it lets developers achieve one of their most cherished dreams, to control their festive lights using programs that they have written. This project shows you how to do just that and adds an extra magical
 feature, in that you can make all your festive lights flash red whenever I, Rob Miles, make a new post on that most famous of blogs,
www.robmiles.com. 
Actually, you can modify the code so that you can make your lights do most anything in response to an event that happens on the web. You could signal home that you are running late, send the weather forecast to your Christmas tree or explore any number of
 communication options. You might decide that this is so useful that you leave your decorations up all year round.
If you just want to play with the .NET Micro Framework and get a feel for how easy it is to create software for tiny devices you don&#39;t actually need to use any extra hardware at all. The project comes with a complete emulation of the lights display so that
 you can run the whole thing on your computer and learn how hardware and software can be made to work together without burning your fingers with a soldering iron.
However building the hardware will give you an understanding of how some simple electronic components can be controlled from C# and even how serial and parallel data transfer works. It is also great fun.
To</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</link>
      <pubDate>Fri, 28 Nov 2008 01:58:46 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9149635_100.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9149635_220.jpg" height="165" width="220"/>      
      <dc:creator>Rob Miles</dc:creator>
      <itunes:author>Rob Miles</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework/RSS</wfw:commentRss>
      <category>Hardware</category>
      <category>Robotics</category>
      <category>Home Automation</category>
      <category>holiday</category>
      <category>.NET Microframework</category>
      <category>hardwarehacks</category>
    </item>
  <item>
      <title>What&amp;rsquo;s New With Robotics Developer Studio 2008</title>
      <description><![CDATA[ <p>At the RoboDevelopment Conference and Expo in Santa Clara, California, Microsoft released the new version of Microsoft Developer Studio 2008 (Microsoft RDS), the latest version of the robotics programming platform and the third major release in two years. The toolkit allows developers, whether professional or hobbyists, to create software applications that run on robots. </p><h2>RDS 2008</h2><p>In the new version RDS 2008, there are now several new features, including:</p><p>• <strong>I</strong><strong>ncreased runtime performance.</strong> Performance is improved 1.5 to three times faster in message throughput between services, and services now load two times faster. Developers can now also define more specific message communication between services, reducing network utilization and optimizing the processing of data.</p><p>• <strong>Improvements to the Visual Programming Language (VPL) tool.</strong> The simple drag-and-drop-based visual programming tool now includes a simple method for defining and configuring distributed applications, making it easier to create applications that can run across networked devices. </p><p>• <strong>Improvements to the Visual Simulation Environment (VSE) tool.</strong> VSE now includes the ability to record and play back simulations, which allows for easier review of simulation experiences. VSE also adds a new floor-plan editor to simplify the definition of interior structures, and three new sample simulation environments (apartment, outdoor and urban) that enable developers to better test their robot applications. Another new feature is support for importing content from DS SolidWorks<sup>® </sup>3-D computer-aided design (CAD) software and Microsoft trueSpace 3-D modeling software.</p><p>• <strong>Greater development flexibility.</strong> This new release provides support for both Microsoft Visual Studio 2005 and Visual Studio 2008, which makes it accessible to a broad audience of developers. Improved support for running VPL and VSE on 64-bit Windows platforms provides more flexible installation options. </p><p>Along with the new release, ABB, a supplier of industrial robots and robotics software, is offering a connectivity package known as ABB Connect to Microsoft Robotics Developer Studio 2008 (ACM). ACM lets robotics students work in a virtual environment in order to design and implement virtual robotics. The package contains all the services needed to build a complete virtual robot controller. </p><h2>Challenges for Robotics Devs</h2><p>So now that you have the software, what can you do with it? Visit <a href="http://www.robochamps.com/">RoboChamps</a>, of course! At <a href="http://www.robochamps.com/">Robochamps</a>, there are a series of challenges for developers which are based in simulation, thus removing the barriers to entry that normally exist when writing code for robots…things like cost and deep hardware knowledge, for example. RoboChamps is built on top of the simulation functionality provided in Microsoft Robotics Developer Studio 2008, which means that participants can program their robots using the .NET languages they are already familiar with.</p><p><a href="http://on10.net/Link/3d51d55f-4a03-4332-8022-48d1407f6707/"><img width="506" height="384" title="robochamps" alt="robochamps" src="http://on10.net/Link/907a9f0c-1322-4a85-be79-ab727db25e2d/" border="0"></a></p><p>For an example of one of the challenges you could compete in, check out <a href="http://www.robochamps.com/rc/Common/challenge.aspx?id=Mars">The Mars Rover Challenge</a>, where you get to navigate Mars collecting data. </p><p><a href="http://on10.net/Link/097d1575-7c71-475f-8134-739103c1411c/"><img width="589" height="286" title="mars_rover_challenge" alt="mars_rover_challenge" src="http://on10.net/Link/11f3fa1b-03f3-49b1-99b9-057a3ad9d001/" border="0"></a>&nbsp; </p><p>Microsoft Robotics Developer Studio 2008 Standard Edition ($499.95 U.S.) is available at <a href="http://www.microsoft.com/robotics">http://www.microsoft.com/robotics</a>. Microsoft Robotics Developer Studio 2008 Express Edition will be available for no charge and downloadable from <a href="http://www.microsoft.com/robotics">http://www.microsoft.com/robotics</a>.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1dc7f6ed3a2a4538ad769e0e001cbe15">]]></description>
      <comments>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</comments>
      <itunes:summary> At the RoboDevelopment Conference and Expo in Santa Clara, California, Microsoft released the new version of Microsoft Developer Studio 2008 (Microsoft RDS), the latest version of the robotics programming platform and the third major release in two years. The toolkit allows developers, whether professional or hobbyists, to create software applications that run on robots. RDS 2008In the new version RDS 2008, there are now several new features, including:• Increased runtime performance. Performance is improved 1.5 to three times faster in message throughput between services, and services now load two times faster. Developers can now also define more specific message communication between services, reducing network utilization and optimizing the processing of data.• Improvements to the Visual Programming Language (VPL) tool. The simple drag-and-drop-based visual programming tool now includes a simple method for defining and configuring distributed applications, making it easier to create applications that can run across networked devices. • Improvements to the Visual Simulation Environment (VSE) tool. VSE now includes the ability to record and play back simulations, which allows for easier review of simulation experiences. VSE also adds a new floor-plan editor to simplify the definition of interior structures, and three new sample simulation environments (apartment, outdoor and urban) that enable developers to better test their robot applications. Another new feature is support for importing content from DS SolidWorks&#174; 3-D computer-aided design (CAD) software and Microsoft trueSpace 3-D modeling software.• Greater development flexibility. This new release provides support for both Microsoft Visual Studio 2005 and Visual Studio 2008, which makes it accessible to a broad audience of developers. Improved support for running VPL and VSE on 64-bit Windows platforms provides more flexible installation options. Along with the new release, ABB, a supplier of industrial robots</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</link>
      <pubDate>Mon, 24 Nov 2008 15:20:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_b115fb39-edb4-47e1-a663-fa4d5772325e.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_e4eae468-f84f-43c8-96d1-040c391291a8.jpg" height="64" width="85"/>      
      <dc:creator>Sarah Perez</dc:creator>
      <itunes:author>Sarah Perez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robots</category>
      <category>robochamps</category>
    </item>
  <item>
      <title>This Week on C9: Xbox &amp; Zune get updates, C9 gets custom CSS, and autonomous trucks!</title>
      <description><![CDATA[This week on Channel 9, Dan and Brian are joined by Steve Velat, a PhD student at Univ. of Florida working on cool autonomous robots. This week's news includes:<br>
<br>
- <a shape="rect" href="http://store.microsoft.com" shape="rect">Microsoft store</a> launches (1:00 - 1:40)<br>
- <a shape="rect" href="http://www.xbox.com" shape="rect">The New Xbox Experience</a> is now available including new services like NetFlix, new avatars, and XNA Community games (1:51 - 3:37)<br>
- <a shape="rect" href="http://www.liveside.net/main/archive/2008/11/18/microsoft-discontinues-windows-live-onecare-offers-lightweight-alternative-for-free.aspx" shape="rect">
Windows Live OneCare is discontinued</a>, but Morro will be a free lightweight offering...60% of developed nations don't have up-to-date security protection (higher in emerging markets) (3:37 - 5:09)<br>
- <a shape="rect" href="http://www.microsoft.com/presspass/press/2008/nov08/11-19ZunePassPR.mspx" shape="rect">
Zune Pass update</a> means that every month you can own 10 songs (5:09 - 6:23)<br>
- <a shape="rect" href="http://www.shahine.com/omar/WindowsLivePeopleAndThePast12Months.aspx" shape="rect">
Omar Shahine discusses Windows Live updates</a>, and New York Times declares Microsoft the winner of Social Inbox 2.0 (6:23 - 7:40)<br>
- <a shape="rect" href="http://dev.live.com/blogs/devlive/archive/2008/11/13/434.aspx" shape="rect">
Live Search API</a> adds XML, JSON APIs, removes query limit, and enables you to specify Web, news, images, phonebook, Encarta Instant Answers, etc for search results (7:40 - 9:17)<br>
- CodeProject article shows building a <a shape="rect" href="http://www.codeproject.com/KB/recipes/lego_pan_tilt_camera.aspx" shape="rect">
Pan &amp; Tilt camera with object tracking</a> using LEGO NXT (9:17 - 10:25)<br>
- The 9 guy, Brian, and Dan make it on to <a shape="rect" href="http://www.microspotting.com/2008/11/you-are-the-empire" shape="rect">
Microspotting</a> (10:25 - 11:12)<br>
- Rico Mariani, the architect for Visual Studio tooling, discusses the <a shape="rect" href="http://blogs.msdn.com/ricom/archive/2008/11/18/the-visual-studio-tech-roadmap-starring-visual-studio-2010.aspx" shape="rect">
Visual Studio Technology Roadmap</a> (11:12 - 13:10)<br>
- <a shape="rect" href="http://www.informit.com/podcasts/channel.aspx?c=3761c00b-ef8f-4385-9b08-a6e1c7a9a35f" shape="rect">
OnMicrosoft video site launches</a>, includes interviews with the Microsoft product teams (13:10 - 14:00)<br>
- Channel 9 dev team adds <a shape="rect" href="http://channel9.msdn.com/forums/Coffeehouse/443794-C9-Theme-Thread/" shape="rect">
user-generated CSS extensions and Jamie's built some cool ones already</a> (14:00 - 15:00)<br>
- Charles has a two-part video series with Brian Beckman on state monads and concurrency,
<a shape="rect" href="http://channel9.msdn.com/shows/Going&#43;Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/" shape="rect">
Part 1</a> and <a shape="rect" href="http://channel9.msdn.com/shows/Going&#43;Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/" shape="rect">
Part 2</a> (15:00 - 15:46)<br>
- Dan's pick of the week: Dan declares <a shape="rect" href="www.worldofwarcraft.com" shape="rect">
Wrath of the Lich King</a> is the most extensible and popular game on the planet. (15:46 - 18:15)<br>
- Brian's pick of the week: Greg Duncan's find on <a shape="rect" href="http://coolthingoftheday.blogspot.com/2008/11/extending-team-members-feature-in-vsts.html" shape="rect">
extending VSTS Power Tools with Skype</a> to talk directly to teammates (18:15 - 19:20)<br>
- Steve's pick of the week: Robotic Assisted Convoy Operation - A video clip of automated transport vehicles using IR emitters to drive actual convoy trucks&nbsp; (19:20 - end)
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:75048b4ecf2c40b5b26e9dea00c4fb38">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian are joined by Steve Velat, a PhD student at Univ. of Florida working on cool autonomous robots. This week&#39;s news includes:

- Microsoft store launches (1:00 - 1:40)
- The New Xbox Experience is now available including new services like NetFlix, new avatars, and XNA Community games (1:51 - 3:37)
- 
Windows Live OneCare is discontinued, but Morro will be a free lightweight offering...60% of developed nations don&#39;t have up-to-date security protection (higher in emerging markets) (3:37 - 5:09)
- 
Zune Pass update means that every month you can own 10 songs (5:09 - 6:23)
- 
Omar Shahine discusses Windows Live updates, and New York Times declares Microsoft the winner of Social Inbox 2.0 (6:23 - 7:40)
- 
Live Search API adds XML, JSON APIs, removes query limit, and enables you to specify Web, news, images, phonebook, Encarta Instant Answers, etc for search results (7:40 - 9:17)
- CodeProject article shows building a 
Pan &amp;amp; Tilt camera with object tracking using LEGO NXT (9:17 - 10:25)
- The 9 guy, Brian, and Dan make it on to 
Microspotting (10:25 - 11:12)
- Rico Mariani, the architect for Visual Studio tooling, discusses the 
Visual Studio Technology Roadmap (11:12 - 13:10)
- 
OnMicrosoft video site launches, includes interviews with the Microsoft product teams (13:10 - 14:00)
- Channel 9 dev team adds 
user-generated CSS extensions and Jamie&#39;s built some cool ones already (14:00 - 15:00)
- Charles has a two-part video series with Brian Beckman on state monads and concurrency,

Part 1 and 
Part 2 (15:00 - 15:46)
- Dan&#39;s pick of the week: Dan declares 
Wrath of the Lich King is the most extensible and popular game on the planet. (15:46 - 18:15)
- Brian&#39;s pick of the week: Greg Duncan&#39;s find on 
extending VSTS Power Tools with Skype to talk directly to teammates (18:15 - 19:20)
- Steve&#39;s pick of the week: Robotic Assisted Convoy Operation - A video clip of automated transport vehicles using IR emitters </itunes:summary>
      <itunes:duration>1486</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</link>
      <pubDate>Sat, 22 Nov 2008 18:33:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/444639_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/444639_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_large_ch9.jpg" height="240" width="320"/>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_small_ch9.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_2MB_ch9.wmv" expression="full" duration="1486" fileSize="433522019" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.mp3" expression="full" duration="1486" fileSize="11896291" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.mp4" expression="full" duration="1486" fileSize="303826022" type="video/mp4" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wma" expression="full" duration="1486" fileSize="24058017" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wmv" expression="full" duration="1486" fileSize="87006359" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_Zune_ch9.wmv" expression="full" duration="1486" fileSize="191454339" type="video/x-ms-wmv" medium="video"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_s_ch9.wmv" expression="full" duration="1486" fileSize="210" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wmv" length="87006359" type="video/x-ms-wmv"/>
      <dc:creator>Dan Fernandez</dc:creator>
      <itunes:author>Dan Fernandez</itunes:author>
      <slash:comments>10</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks/RSS</wfw:commentRss>
      <category>Channel9 Team</category>
      <category>Live Services</category>
      <category>Robotics</category>
      <category>Xbox</category>
    </item>
  <item>
      <title>Channel 9 on Mars: Inside the Mars Exploration Mission - Past, Present and Future</title>
      <description><![CDATA[While in LA for <a shape="rect" href="http://microsoftpdc.com" shape="rect" target="_blank">
PDC2008</a>, we were lucky enough to get the chance to head down to Pasadena for a tour and interview at the
<a shape="rect" href="http://www.jpl.nasa.gov/" shape="rect" target="_blank">Jet Propulsion Laboratory</a>.&nbsp;<a shape="rect" href="http://on10.net/People/Nic/" shape="rect" target="_blank">Nic Fillingham</a> and I grabbed a cab and met up with the great Marc
 Mercuri (of <a shape="rect" href="http://www.robochamps.com" shape="rect" target="_blank">
RoboChamps </a>fame), DPE's VP Walid Abu-Hadba and others to get a look at the JPL Mars Rover facility and meet some of the folks behind the
<a shape="rect" href="http://marsrovers.jpl.nasa.gov/home/index.html" shape="rect" target="_blank">
Mars Exploration Rover Mission</a>. Our guide was the venerable Dave Lavery who is the Program Executive for
<a shape="rect" href="http://en.wikipedia.org/wiki/Timeline_of_solar_system_exploration" class="mw-redirect" title="Timeline of solar system exploration" shape="rect">
Solar System Exploration</a> at <a shape="rect" href="http://www.nasa.gov" title="NASA" shape="rect" target="_blank">
NASA</a>.<br /><br />This is a fascinating glimpse into the world of solar system exploration from the perspective of robotics and software design&nbsp;(Dave was a major contributor to the robotics design and development efforts behind (and in) the Mars rovers, Spirit and Opportunity).<br /><br />Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...). It's really exciting that
 the Mars rovers Spirit and Opportunity will be joined on the red planet by a new mobile robot equipped with an advanced laboratory capable of unparalleled experimentation and analysis. The folks at JPL think 100 million miles outside of the box!<br /><br /> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f4241b1577a04d51ad8d9dea00cd8176">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</comments>
      <itunes:summary>While in LA for 
PDC2008, we were lucky enough to get the chance to head down to Pasadena for a tour and interview at the
Jet Propulsion Laboratory.&amp;nbsp;Nic Fillingham and I grabbed a cab and met up with the great Marc
 Mercuri (of 
RoboChamps fame), DPE&#39;s VP Walid Abu-Hadba and others to get a look at the JPL Mars Rover facility and meet some of the folks behind the

Mars Exploration Rover Mission. Our guide was the venerable Dave Lavery who is the Program Executive for

Solar System Exploration at 
NASA.This is a fascinating glimpse into the world of solar system exploration from the perspective of robotics and software design&amp;nbsp;(Dave was a major contributor to the robotics design and development efforts behind (and in) the Mars rovers, Spirit and Opportunity).Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...). It&#39;s really exciting that
 the Mars rovers Spirit and Opportunity will be joined on the red planet by a new mobile robot equipped with an advanced laboratory capable of unparalleled experimentation and analysis. The folks at JPL think 100 million miles outside of the box!</itunes:summary>
      <itunes:duration>1212</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</link>
      <pubDate>Mon, 17 Nov 2008 17:33:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/441246_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/441246_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/2210b23b-6233-45e7-990d-0f4ea185825b.jpg" height="240" width="320"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/6c2a5589-9875-4f0d-a7d9-f116d5e0e26c.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_2MB_on10.wmv" expression="full" duration="1212" fileSize="357204768" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_on10.mp3" expression="full" duration="1212" fileSize="9700751" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_on10.mp4" expression="full" duration="1212" fileSize="68737216" type="video/mp4" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_on10.wma" expression="full" duration="1212" fileSize="9816161" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_on10.wmv" expression="full" duration="1212" fileSize="76361687" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_Zune_on10.wmv" expression="full" duration="1212" fileSize="96108819" type="video/x-ms-wmv" medium="video"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/on10/7/6/9/3/2/JPLVisit_s_on10.wmv" expression="full" duration="1212" fileSize="196" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/on10/7/6/9/3/2/JPLVisit_on10.wmv" length="76361687" type="video/x-ms-wmv"/>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>16</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/RSS</wfw:commentRss>
      <category>Embedded Software</category>
      <category>Mars</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Channel 9 on Mars: A tour of the NASA Jet Propulsion Lab</title>
      <description><![CDATA[Charles and I were lucky enough to get a tour of the NASA&nbsp;<a href="http://en.wikipedia.org/wiki/Jet_Propulsion_Laboratory" target="_blank">Jet Propulsion Laboratory</a> in Pasendena, CA last month whilst we were in town for PDC2008.<br><a href="http://en.wikipedia.org/wiki/Dave_Lavery" target="_blank">Dave Lavery</a>,&nbsp;<a href="http://ranier.hq.nasa.gov/staff/lavery.shtm" target="_blank">Program Executive for Solar System Exploration</a> (aka coolest job title evar!)&nbsp;granted us permission&nbsp;to film a portion of&nbsp;his&nbsp;awesome&nbsp;tour and spoke with Charles about designing and building robots for use on other planets.<br><br>&quot;<em>Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...)</em>&quot;<br><br>Check it out here:&nbsp;<a href="http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/"><strong>http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/</strong></a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:fd2f632d3ff14623a6629e0f00ea7e17">]]></description>
      <comments>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</comments>
      <itunes:summary>Charles and I were lucky enough to get a tour of the NASA&amp;nbsp;Jet Propulsion Laboratory in Pasendena, CA last month whilst we were in town for PDC2008.Dave Lavery,&amp;nbsp;Program Executive for Solar System Exploration (aka coolest job title evar!)&amp;nbsp;granted us permission&amp;nbsp;to film a portion of&amp;nbsp;his&amp;nbsp;awesome&amp;nbsp;tour and spoke with Charles about designing and building robots for use on other planets.&amp;quot;Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...)&amp;quot;Check it out here:&amp;nbsp;http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</link>
      <pubDate>Mon, 17 Nov 2008 14:57:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_98d4d903-6298-4d1b-ac2e-d58e8eb18b6a.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_fe906f11-36d2-4aa1-8ba4-e3796cd4225e.jpg" height="64" width="85"/>      
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab/RSS</wfw:commentRss>
      <category>Mars</category>
      <category>NASA</category>
      <category>Robotics</category>
      <category>jpl</category>
    </item>
  <item>
      <title>We Love Robots</title>
      <description><![CDATA[At Microsoft, we love Robots.&nbsp; Turns out, we’re not the only ones.&nbsp; Our friends at NASA’s Jet Propulsion Laboratory have brought a full scale replica of the Mars Exploratory Rover to display in the “Big Room” next to the Robotics Booth.&nbsp; In addition, some
 of the actual engineers and scientists from the Pasadena lab working on the Rover will be on-hand to answer questions and geek out with PDC attendees.&nbsp; Make sure to stop by, get a picture of yourself with the Rover, and ask all those questions you have for
 the “rocket scientists” at NASA!  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d4730f575fbc462c93e59df80040b073">]]></description>
      <comments>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</comments>
      <itunes:summary>At Microsoft, we love Robots.&amp;nbsp; Turns out, we’re not the only ones.&amp;nbsp; Our friends at NASA’s Jet Propulsion Laboratory have brought a full scale replica of the Mars Exploratory Rover to display in the “Big Room” next to the Robotics Booth.&amp;nbsp; In addition, some
 of the actual engineers and scientists from the Pasadena lab working on the Rover will be on-hand to answer questions and geek out with PDC attendees.&amp;nbsp; Make sure to stop by, get a picture of yourself with the Rover, and ask all those questions you have for
 the “rocket scientists” at NASA! </itunes:summary>
      <link>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</link>
      <pubDate>Fri, 24 Oct 2008 20:44:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</guid>      
      <dc:creator>D. Begley</dc:creator>
      <itunes:author>D. Begley</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots/RSS</wfw:commentRss>
      <category>Announcements</category>
      <category>PDC</category>
      <category>PDC 2008</category>
      <category>PDC08</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>CoroWare Technologies: Mobile Robotics Integrator</title>
      <description><![CDATA[
<p>CoroWare Technologies, a wholly owned subsidiary of <a href="http://www.coroware.com/">
CoroWare, Inc</a>. (CROE.OB), is a systems and mobile robotics integrator.&nbsp; They’ve recently been awarded Microsoft Certified Gold Partner status.&nbsp; CoroWare has made their mark on Microsoft platforms through developing software and solutions for mobile service
 robotics and business automation.&nbsp; Here, we meet David Hyams, CTO for Coroware and learn more about how this company is shaping the future through technology developments to improve and simplify our lives.</p>
<p>Check out the <a href="http://www.microsoft.com/isv" target="_blank">Microsoft ISV site</a> for more information related to partnering with Microsoft.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4c8885f51e1c4c9494249dea00bf85e7">]]></description>
      <comments>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</comments>
      <itunes:summary>
CoroWare Technologies, a wholly owned subsidiary of 
CoroWare, Inc. (CROE.OB), is a systems and mobile robotics integrator.&amp;nbsp; They’ve recently been awarded Microsoft Certified Gold Partner status.&amp;nbsp; CoroWare has made their mark on Microsoft platforms through developing software and solutions for mobile service
 robotics and business automation.&amp;nbsp; Here, we meet David Hyams, CTO for Coroware and learn more about how this company is shaping the future through technology developments to improve and simplify our lives.
Check out the Microsoft ISV site for more information related to partnering with Microsoft.
</itunes:summary>
      <itunes:duration>825</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</link>
      <pubDate>Thu, 18 Sep 2008 18:01:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/2e546e29-7332-49a6-bc76-9dcf9413c180.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/422769_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/422769_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/c5389f2a-97b0-4c3b-a420-6cb70cb34b61.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_2MB_ch9.wmv" expression="full" duration="825" fileSize="258250895" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.mp3" expression="full" duration="825" fileSize="6602292" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.mp4" expression="full" duration="825" fileSize="44645264" type="video/mp4" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wma" expression="full" duration="825" fileSize="6682953" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wmv" expression="full" duration="825" fileSize="52502657" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_Zune_ch9.wmv" expression="full" duration="825" fileSize="65434461" type="video/x-ms-wmv" medium="video"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/9/6/7/2/2/4/IOCoroware_s_ch9.wmv" expression="full" duration="825" fileSize="200" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wmv" length="52502657" type="video/x-ms-wmv"/>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator/RSS</wfw:commentRss>
      <category>Microsoft Solutions</category>
      <category>Partner</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Microsoft&amp;rsquo;s New Robotic Receptionist</title>
      <description><![CDATA[Last week, Chief Research and Strategy officer <a href="http://www.microsoft.com/msft/speech/FY08/MundieFAM2008.mspx">Craig Mundie demonstrated a software-based robot</a> that uses both visual and voice recognition as well as speech synthesis to handle some basic tasks. The robot will be put into place on Microsoft’s campus to act as sort of a “robotic receptionist” that will handle shuttle requests from visitors. In the video Mundie played at the <a href="http://www.microsoft.com/msft/speech/FY08/MundieFAM2008.mspx">Financial Analysts Meeting (FAM),</a> two Microsoft employees walked up to the robot and it asked “Which building do you want to go to?” They responded, and then the robot, after double-checking their request and confirming some details, announced that the shuttle “should be here in four minutes.” Says Mundie, “This is what a natural user interface is all about and it won't be just a receptionist. This is just the tip of the iceberg.&quot;&nbsp; <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f0a5fb7e4a7e4473811e9e0e0097aa08">]]></description>
      <comments>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</comments>
      <itunes:summary>Last week, Chief Research and Strategy officer Craig Mundie demonstrated a software-based robot that uses both visual and voice recognition as well as speech synthesis to handle some basic tasks. The robot will be put into place on Microsoft’s campus to act as sort of a “robotic receptionist” that will handle shuttle requests from visitors. In the video Mundie played at the Financial Analysts Meeting (FAM), two Microsoft employees walked up to the robot and it asked “Which building do you want to go to?” They responded, and then the robot, after double-checking their request and confirming some details, announced that the shuttle “should be here in four minutes.” Says Mundie, “This is what a natural user interface is all about and it won&#39;t be just a receptionist. This is just the tip of the iceberg.&amp;quot;&amp;nbsp;</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</link>
      <pubDate>Tue, 29 Jul 2008 14:50:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_6b01a473-611b-4089-bd3a-0f426a23a139.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_60cc6eab-e258-4685-8df8-0e8b9e0aabee.jpg" height="64" width="85"/>      
      <dc:creator>Sarah Perez</dc:creator>
      <itunes:author>Sarah Perez</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robot</category>
    </item>
  <item>
      <title>Home Automation with Microsoft Robotics Developer Studio 2008</title>
      <description><![CDATA[<span id="c4fmetadata">
<table cellspacing="0" cellpadding="1" width="100%" border="0">
<tbody>
<tr class="entry_overview">
<td width="50"></td>
<td>
<p>Typically we think of robots as machines from science fiction or as industrial robots such as those that build and paint cars. In the world of Microsoft Robotics Developer Studio, anything that has sensors and/or actuators can be considered a robot. In this
 article, we look at an automated house as a robot and apply the Decentralized Software Services model of Microsoft Robotics Studio to implementing some home automation tasks.</p>
</td>
</tr>
<tr>
<td colspan="2">
<div class="entry_author">Charles Stacy Harris III</div>
<br>
<div class="entry_details"><b>Difficulty: </b><span class="entry_details_input">Intermediate</span></div>
<div class="entry_details"><b>Time Required:</b> <span class="entry_details_input">
6-10 hours</span></div>
<div class="entry_details"><b>Cost: </b><span class="entry_details_input">$100-$200 for hardware (Optional, $0 if using only simulation)</span></div>
<div class="entry_details"><b>Software: </b><span class="entry_details_input">Visual Studio or Visual Studio Express, Microsoft Robotics Developer Studio 2008 CTP April,
<a href="http://www.controlthink.com/zwavesdk.htm">ControlThink Z-Wave PC SDK</a>
</span></div>
<div class="entry_details"><b>Hardware: </b><span class="entry_details_input">(All Optional) Elk M1G/M1EZ Security and Automation Panel, Z-Wave Dimmer Switches, Z-Wave Controller such as the ControlThink ThinkStick or equivalent.</span></div>
<div class="entry_details"><b>Download: </b><a href="http://www.codeplex.com/houserobot">Download</a>
<ul>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</span>
<h3>House, Robot</h3>
<p>Those of you who know me or who have read my previous Coding4Fun article <a href="http://blogs.msdn.com/coding4fun/archive/2007/10/05/5296972.aspx">
Home Automation with Windows Workflow</a>, know that I'm nuts about home automation. I'm even more passionate about robotics and I've wanted to try out some things with Microsoft Robotics Studio since the very first version. Recently I had a long weekend, so
 I spent a few hours putting together some simple home automation examples using Microsoft Robotics Developer Studio 2008 CTP April. Check out the
<a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx">Microsoft Robotics Developer Center</a> for details on how to get the CTP.</p>
<p>The examples in this article duplicate what I did using Windows Workflow in my previous article, but instead use the Decentralized Software Services (DSS) approach of Microsoft Robotics, and Microsoft Visual Programming Language (VPL) for a simple way to
 write automation tasks. The <a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx">
Microsoft Robotics Developer Center</a> contains a lot of detailed information about DSS, VPL, and the other technologies found in Microsoft Robotics Developer Studio. For now, let's just cover some basics. To get further along with the code in this article,
 you'll want to check out some of the excellent tutorials presented by the Microsoft Robotics team.</p>
<h3>Services, Messages, and Ports</h3>
<p>A DSS Service is the basic component upon which Microsoft Robotics applications are built. In fact, DSS services are a generic construct that can and have been used outside of the context of robotics. DSS services contain state and the service state is manipulated
 via messages sent to the service on a service port.</p>
<p>Messages sent to a service are structured .NET classes that may contain a message payload that determines how or even if state will be modified, or what part of a service state should be retrieved. There are also message that do not directly manipulate state,
 but may have some other side-effects. Services respond to messages such as CREATE, LOOKUP, UPDATE, etc. In addition, you can define messages that extend the semantics of the core messages.</p>
<p>Ports are the mechanism through which services communicate. Ports accept a set of message types that are defined by the service itself. In addition, ports are also used for outbound communication in situations such as subscribing to event notification from
 a service.</p>
<p>Again, there are excellent online resources for learning the details of Microsoft Robotics, DSS, and the underlying technologies for Microsoft Robotics developer Studio. You'll probably want basic familiarity with the Microsoft Robotics architecture including
 the Concurrency and Coordination Runtime (CCR) along with the notion of Arbiters and iterators.</p>
<h3>Robo-Moose</h3>
<p>The security and automation system in my house is centered on an Elk M1G alarm panel from
<a href="http://www.elkproducts.com/index.html">Elk Products Incorporated</a> . This panel allows for up to 208 input zones in the form of contact switches, motion sensors, and so on. It also allows for up to 208 outputs, on-board task scripting and many other
 features. One of the key features for my use is the capability of being able to monitor and control the panel via an Ethernet adaptor. So, my first order of business was to write a DSS service – the ElkService – to communicate with the Elk M1G via sockets.
 This ElkService exchanges messages with the Elk M1G via an ASCII protocol that is documented
<a href="http://www.elkproducts.com/products/m1/m1documentation.htm">here</a>. </p>
<p>The code that the ElkService uses to read from the Elk M1G hardware is shown below. Note that the code looks sequential, but is actually asynchronous. The StreamAdapter.Read method sets up a task to do an asynchronous IO operation and the line “yield return
 (Choice)ioResultPort;” returns this task to the runtime which is iterating over all tasks returned by ElkReader.</p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// ElkReader opens a socket connection to the hardware panel. It then</span>
<span class="rem">/// enters a loop that</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span class="kwrd">public</span> IEnumerator&lt;ITask&gt; ElkReader()
{
    Connect();

    <span class="rem">// Send a request to the Elk panel get a report of the entire zone status.</span>
    SendElkMessage(RequestStrings.ZoneStatus);

    <span class="kwrd">byte</span>[] buffer = <span class="kwrd">new</span> <span class="kwrd">byte</span>[256];

    <span class="kwrd">int</span> bytesRead = -1;
    Exception ex = <span class="kwrd">null</span>;

     <span class="kwrd">do</span>
    {
        var ioResultPort = StreamAdapter.Read(networkStream, buffer, 0, buffer.Length);

        <span class="kwrd">yield</span> <span class="kwrd">return</span> (Choice)ioResultPort;

        ex = ioResultPort;
        <span class="kwrd">if</span> (ex != <span class="kwrd">null</span>)
            <span class="kwrd">throw</span> ex;

        bytesRead = ioResultPort;
        <span class="kwrd">if</span> (bytesRead != 0)
            ProcessRawElkMessage(Encoding.ASCII.GetString(buffer, 0, bytesRead));

    } <span class="kwrd">while</span> (bytesRead != 0);
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>When the ElkService receives a packet from the hardware panel, it converts the packet from a string to a custom message containing the raw sensor data and posts the message to the main port of the ElkService itself. For example, when the service receives
 a “ZC” message from the hardware, it converts this to an UpdateRawZone message that contains the raw data from the security panel. This happens in the method ProcessRawElkMessage. Here is a fragment of that code:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> ProcessRawElkMessage(<span class="kwrd">string</span> message)
{
    <span class="kwrd">string</span> messageType = message.Substring(2, 2);

    <span class="kwrd">switch</span> (messageType)
    {
        <span class="kwrd">case</span> <span class="str">&quot;ZC&quot;</span>: <span class="rem">// Zone status change</span>
            var zoneState = <span class="kwrd">new</span> UpdateRawZoneRequest
            {
                Id = <span class="kwrd">byte</span>.Parse(message.Substring(4, 3)),
                State = <span class="kwrd">byte</span>.Parse(message.Substring(7, 1),
                              NumberStyles.HexNumber)
            };

            var updateZoneMessage = <span class="kwrd">new</span> UpdateRawZone();
            updateZoneMessage.Body = zoneState;

            _mainPort.Post(updateZoneMessage);
            <span class="kwrd">break</span>;
…</pre>
<p>UpdateRawZoneRequest is the message payload and is used to send data about a zone change event to a subscriber. UpdateRawZone is the actual message type that is transmitted on the port for the ElkService.</p>
<pre class="csharpcode">[DataContract]
[Description(<span class="str">&quot;UpdateRawZone Request Message Payload&quot;</span>)]
<span class="kwrd">public</span> <span class="kwrd">class</span> UpdateRawZoneRequest
{
    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> Id { get; set; }

    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> State { get; set; }
}


<span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Update Elk zone status</span>
<span class="rem">/// &lt;/summary&gt;</span>
[Description(<span class="str">&quot;UpdateZone request message&quot;</span>)]
<span class="kwrd">public</span> <span class="kwrd">class</span> UpdateRawZone : Update&lt;UpdateRawZoneRequest,
        PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
{
}</pre>
<p>The message processing code can also be written a bit more compactly as:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> ProcessRawElkMessage(<span class="kwrd">string</span> message)
{
    <span class="kwrd">string</span> messageType = message.Substring(2, 2);

    <span class="kwrd">switch</span> (messageType)
    {
        <span class="kwrd">case</span> <span class="str">&quot;ZC&quot;</span>: <span class="rem">// Zone status change</span>
            var updateZoneMessage = <span class="kwrd">new</span> UpdateRawZone
            {
                Body = <span class="kwrd">new</span> UpdateRawZoneRequest
                {
                    Id = <span class="kwrd">byte</span>.Parse(message.Substring(4, 3)),
                    State = <span class="kwrd">byte</span>.Parse(message.Substring(7, 1),
                          NumberStyles.HexNumber)
                }
            };

            _mainPort.Post(updateZoneMessage);
            <span class="kwrd">break</span>;
…</pre>
<p>UpdateRawZoneHandler is a message receiver that is active on the main port and which responds to the update message by updating internal state, and notifying subscribers of the change in state.</p>
<pre class="csharpcode">[ServiceHandler(ServiceHandlerBehavior.Exclusive)]
<span class="kwrd">public</span> IEnumerator&lt;ITask&gt; UpdateRawZoneHandler(UpdateRawZone message)
{
    _state.ZoneStates[message.Body.Id - 1] = message.Body.State;

    SendNotification(_submgrPort, message);

    message.ResponsePort.Post(DefaultUpdateResponseType.Instance);

    <span class="kwrd">yield</span> <span class="kwrd">break</span>;
}</pre>
<h3>In the Zone</h3>
<p>The ElkService represents the core service that communicates with the Elk M1G hardware. The next service – ElkZoneSensor – represents a higher level “sensor array” that is attached to the Elk hardware. ElkZoneSensor “partners” with the ElkService. This means
 that the ElkZoneSensor relies on the ElkService to function. The DSS infrastructure will ensure that the ElkService is started if needed when starting the ElkZoneSensor service.</p>
<p>The ElkZoneSensor subscribes to updates from the ElkService for changes in the hardware zones. When these changes occur, the ElkService notifies the ElkZoneSensor which updates its state and notifies any of its subscribers. The ElkZoneSensor uses a higher
 level message – UpdateZone – that contains a sensor ID and an enumeration that describes the state of the sensor.</p>
<pre class="csharpcode">[DataContract]
<span class="kwrd">public</span> <span class="kwrd">class</span> Zone
{
    [DataMember]
    [Description(<span class="str">&quot;The Elk hardware zone id of the sensor&quot;</span>)]
    [DataMemberConstructor]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> Id { get; set; }

    [DataMember]
    [Description(<span class="str">&quot;The Elk defined state of the sensor&quot;</span>)]
    <span class="kwrd">public</span> ZoneStatus Status { get; set; }
}</pre>
<h3>Candlepower</h3>
<p>The next services that we need for the robotic house are services to control the lights. In this case, I started with a
<i>generic</i> contract for the DSS service. A generic contract in DSS terms just defines the set of messages to which a service will respond and defines the port type on which those messages will be sent. The generic contract does not contain code to actually
 implement the service behavior. One of the benefits of a generic service contract is that you can specify the contract, write algorithms that use the contract, and later connect the generic service contracts to code that actually implements the behavior. This
 is very much like programming to an abstract interface in the object oriented world, and having multiple classes that actually implement the interface.</p>
<p>We start off with a generic service called the GenericDimmer that represents a dimmer switch and we implement two concrete services: the SimulatedDimmer and the ZWaveDimmer. SimulatedDimmer just logs a message to represent its state change. The ZWaveDimmer
 actually controls the lights via a hardware Z-Wave controller.</p>
<p>Here's what the GenericDimmer contract looks like:</p>
<pre class="csharpcode"><span class="kwrd">namespace</span> Robotics.GenericHouseControls.Dimmer
{


    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Contract class</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">sealed</span> <span class="kwrd">class</span> Contract
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// The Dss Service contract</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [DataMember]
        <span class="kwrd">public</span> <span class="kwrd">const</span> String Identifier = <span class="str">&quot;http://schemas.tempuri.org/2008/04/generichousecontrolsdimmer.html&quot;</span>;
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// The GenericDimmer State</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> GenericDimmerState
    {
        [DataMember]
        [DataMemberConstructor(Order = 1)]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Id;

        [DataMember]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Level;
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Main Operations Port</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [ServicePort(AllowMultipleInstances = <span class="kwrd">true</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> GenericDimmerOperations : PortSet&lt;DsspDefaultLookup, DsspDefaultDrop, Get, HttpGet, On, Off, SetLevel&gt;
    {
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Get Operation</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">class</span> Get : Get&lt;GetRequestType, PortSet&lt;GenericDimmerState, Fault&gt;&gt;
    {

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get()
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get(Microsoft.Dss.ServiceModel.Dssp.GetRequestType body) :
            <span class="kwrd">base</span>(body)
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get(Microsoft.Dss.ServiceModel.Dssp.GetRequestType body, Microsoft.Ccr.Core.PortSet&lt;GenericDimmerState, W3C.Soap.Fault&gt; responsePort) :
            <span class="kwrd">base</span>(body, responsePort)
        {
        }
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> OnRequest
    {
    }

    [Description(<span class="str">&quot;Turn the switch on&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> On : Update&lt;OnRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> OffRequest
    {
    }

    [Description(<span class="str">&quot;Turn the switch off&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> Off : Update&lt;OffRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SetLevelRequest
    {
        [DataMember]
        [DataMemberConstructor]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Level { get; set; }
    }

    [Description(<span class="str">&quot;Set the dim level&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SetLevel : Update&lt;SetLevelRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }
}</pre>
<p>This code defines the contract only. Now to implement that contract we can run the DssNewService utility with the /implement switch and generate a service based on this contract. For example:
</p>
<p>dssnewservice /s:SimulatedDimmer /n:Robotics.HouseControls.SimulatedDimmer /i:GenericHouseControls.Y2008.M04.Proxy.dll</p>
<p>will generate a new service called SimulatedDimmer in the .NET namespace Robotics.HouseControls.SimulatedDimmer. The service will have a stubbed out implementation of the GenericDimmer contract including service startup code, state, and stubbed out message
 handlers.</p>
<p>Here's what the main service file looks like for the simulated dimmer after I added logging to the generated methods. I've also deleted some of the using statements for easier reading.</p>
<pre class="csharpcode"><span class="kwrd">using</span> pxdimmer = Robotics.GenericHouseControls.Dimmer.Proxy;

<span class="kwrd">namespace</span> Robotics.HouseControls.SimulatedDimmer
{


    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// House Controls Service</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [DisplayName(<span class="str">&quot;Simulated Dimmer&quot;</span>)]
    [Description(<span class="str">&quot;The Simulated Dimmer Switch Service&quot;</span>)]
    [Contract(Contract.Identifier)]
    [AlternateContract(pxdimmer.Contract.Identifier)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SimulatedDimmerService : DsspServiceBase
    {

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// _state</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [ServiceState]
        [InitialStatePartner(Optional = <span class="kwrd">true</span>)]
        <span class="kwrd">private</span> pxdimmer.GenericDimmerState _state = <span class="kwrd">new</span> pxdimmer.GenericDimmerState();

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// _main Port</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [ServicePort(<span class="str">&quot;/simulateddimmer&quot;</span>, AllowMultipleInstances = <span class="kwrd">true</span>)]
        <span class="kwrd">private</span> pxdimmer.GenericDimmerOperations _mainPort = <span class="kwrd">new</span> pxdimmer.GenericDimmerOperations();


        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Default Service Constructor</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> SimulatedDimmerService(DsspServiceCreationPort creationPort) :
            <span class="kwrd">base</span>(creationPort)
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Service Start</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Start()
        {
            <span class="kwrd">base</span>.Start();

            <span class="rem">// Add service specific initialization here.</span>
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Dimmer State =&gt; Id:{0} Level:{1}&quot;</span>, _state.Id, _state.Level));
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; OnHandler(pxdimmer.On update)
        {
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} On&quot;</span>, _state.Id));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; OffHandler(pxdimmer.Off update)
        {
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} Off&quot;</span>, _state.Id));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }

        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; SetLevelHandler(pxdimmer.SetLevel update)
        {           
            _state.Level = update.Body.Level;
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} Level:{1}&quot;</span>, _state.Id, update.Body.Level));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);            
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }
    }
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>Check the code download for the implementation of the ZWaveDimmer. You'll find that it's pretty straightforward. It should be simple to write similar code if you use a different technology for lighting control. You just write a service that matches the GenericDimmer
 contract, and you should be able to configure the GenericDimmer using a manifest to point to the actual dimmer service. Check out the documentation in Microsoft Robotics Developer Studio for more information on manifests and how to use the manifest editor.</p>
<h3>Bulb On, Bulb Off!</h3>
<p>The “Hello, World” application for any home automation software that I've tested in my house has always been the automating of my pantry light. The pantry has a Z-Wave light switch inside and the pantry door has a contact switch that is connected to the
 Elk M1G. When the door is open, we want the light to turn on, and when the door is closed we want the light to turn off. Now that we have all the pieces for this, here's what the VPL diagram for this looks like:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image.png"><img title="image" height="259" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_thumb.png" width="500" border="0"></a>
</p>
<p>As you can see, it was also a relatively easy matter to add text-to-speech to announce the opening and closing of the pantry door. You may find out quickly that this is an annoyance to those in the testing areas – for me that was my kitchen – so it's nice
 to know that two quick hits of the delete key will also remove the text-to-speech. This is part of the beauty of the Microsoft Robotics programming model!</p>
<p>The second example shows how you can use a motion detector – in this case connected to zone 19 on the Elk – to trigger a light. The light comes on at a level that you control from the VPL code, and stays on for a duration that you can also control from the
 code. For the example, I set the timer to a pretty low level, but you can customize it. You could also add additional rules to only turn on the light at certain times, or better still connect an ambient light sensor to decide whether you should turn the light
 on.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_3.png"><img title="image" height="319" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_thumb_3.png" width="500" border="0"></a>
</p>
<p>In this diagram, if motion is detected – that is zone 19 is triggered with a status of ViolatedOpen – the light is turned on at a low dim level and a timer is set. When the timer completes, the light is turned off. If, however, there is more motion before
 the timer completes, the SetTimer message will cancel the old timeout and restart the timer.</p>
<p>There are more VPL examples included in the download including an extra service that you can use to send email from your VPL code. I'm experimenting with using the email service to send me a text message whenever my alarm is armed or disarmed.</p>
<h3>Miscellanea</h3>
<p>Since I haven't had a lot of time to study the testing framework and simulation environments used by Microsoft Robotics, I included a service called the ElkTestDataPlayback service that allows me to replay the contents of a text file to simulate the ElkService
 getting actual data. This works pretty well for testing. The contents of the file are merely raw data captures that I made from the data sent by the Elk M1G panel. To use this service in VPL, you just drop it onto your diagram, configure it's TestDataFileName
 via “Set initial configuration” to point to a data file, and send it a message to start playback.</p>
<p><b>Important:</b> If you have the Elk hardware, you will want to uncomment the
<i>SpawnIterator(ElkReader)</i> line in the ElkService.Start method. I know this is a hack for now. It would probably be better to write a SimulatedElk service based on a generic service contract. If I have time, I will do that in the future. That would involve
 a lot more work than I had for this weekend project!</p>
<h3>TODO List</h3>
<p>Since this was my first foray into Microsoft Robotics Developer Studio and I had limited time to really explore the features in depth, there are a few things that I've left unimplemented. Here are some of the things that I would like to expand on in the
 future:</p>
<p>1. <b>Support for more of the Elk features:</b> Currently, I only support Zone Change notifications. Fuller support of the Elk hardware would not be difficult and would be beneficial to anyone wanting to use this on an ongoing basis. There's some stub code
 for a few other notifications if you want to add to the service.</p>
<p>2. <b>Generic contracts for the Elk M1G:</b> I didn't base the Elk services on generic contract because I'm not familiar with enough other types of security and automation panels to make the needed generalizations. It would be interesting to try to come
 up with something more generic. I thought about using the Generic Contact Sensor array, but I'm not sure that it models what we need. For example, a door contact is considered
<b><i>violated</i></b> when it's open, but a water sensor is considered <b><i>violated</i></b> when it's closed.</p>
<p>3. <b>Additional Z-Wave features:</b> I've left out notification for lighting level changes, support for scenes and a host of other features. There's so much more that's possible with full Z-Wave support.</p>
<p>4. <b>Refined Generic Contracts:</b> Generic contracts allow developers to write code that is independent of the final hardware. That is one of the major benefits of the model used by Microsoft Robotics. You could for example have a generic light switch
 for simulation and testing, and based on configuration you could plug in a Z-Wave switch or an Insteon switch when it's time to deploy the actual solution.</p>
<p>5. <b>Simulation Support:</b> One of the major benefits of Microsoft Robotics Developer Studio is the simulation environment. For example, if we had a motion detector in the simulation environment, we could test some of the algorithms that I presented above
 by having a simulated mobile robot “violate” the motion detector's zone and trigger the corresponding VPL code.</p>
<p>6. <b>Exception Handling:</b> As I build more on the code in this article, I'll add exception handling and retry logic. Microsoft Robotics has some extremely robust features such as Causalities that make handling exceptions in a concurrent environment much
 easier.</p>
<p>7. <b>HttpHandlers:</b> I have a start at code for handling HTTP requests in the ZWaveController service. Handling HTTP requests is handy for building client applications that access your services without themselves having to be DSS services.</p>
<p>Other experiments that might be fun to try include integrating your Microsoft Robotics controlled home with remote control applications that are based on WPF or Silverlight, or perhaps integrating control from a Windows Media Center PC or Windows Home Server.</p>
<p>I hope you enjoy Microsoft Robotics Developer Studio as much as I have. I look forward to seeing what other people build with this fantastic technology. If people are interested, I can continue to share my home automation experiments. I think Microsoft Robotics
 Developer Studio will be the major tool in my home automation toolbox for quite some time.</p>
<h3>Project Settings Note:</h3>
<p>You will have to modify the project settings for the projects included in the House.Robot solution since your installation of Microsoft Robotics Developer Studio will be in a different directory than mine. The DssProjectMigration.exe command line tool will
 make short work of this. Just run it with a parameter that specifies the directory you want it to search, and it will find all of the project files in that directory and subdirectories and convert them to be buildable with your installation settings.</p>
<p>If you use the ElkTestDataPlayback service, in the examples, you'll need to set the path to the location of the test data file either in the initial configuration for the component, or in a manifest that configures the component. Make sure that you
<b>do not</b> put quotes around the path name. I included a test data file from my system.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:57770cc07d4e4541ac5b9e7600cf847d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</comments>
      <itunes:summary>





Typically we think of robots as machines from science fiction or as industrial robots such as those that build and paint cars. In the world of Microsoft Robotics Developer Studio, anything that has sensors and/or actuators can be considered a robot. In this
 article, we look at an automated house as a robot and apply the Decentralized Software Services model of Microsoft Robotics Studio to implementing some home automation tasks.




Charles Stacy Harris III

Difficulty: Intermediate
Time Required: 
6-10 hours
Cost: $100-$200 for hardware (Optional, $0 if using only simulation)
Software: Visual Studio or Visual Studio Express, Microsoft Robotics Developer Studio 2008 CTP April,
ControlThink Z-Wave PC SDK

Hardware: (All Optional) Elk M1G/M1EZ Security and Automation Panel, Z-Wave Dimmer Switches, Z-Wave Controller such as the ControlThink ThinkStick or equivalent.
Download: Download








House, Robot
Those of you who know me or who have read my previous Coding4Fun article 
Home Automation with Windows Workflow, know that I&#39;m nuts about home automation. I&#39;m even more passionate about robotics and I&#39;ve wanted to try out some things with Microsoft Robotics Studio since the very first version. Recently I had a long weekend, so
 I spent a few hours putting together some simple home automation examples using Microsoft Robotics Developer Studio 2008 CTP April. Check out the
Microsoft Robotics Developer Center for details on how to get the CTP.
The examples in this article duplicate what I did using Windows Workflow in my previous article, but instead use the Decentralized Software Services (DSS) approach of Microsoft Robotics, and Microsoft Visual Programming Language (VPL) for a simple way to
 write automation tasks. The 
Microsoft Robotics Developer Center contains a lot of detailed information about DSS, VPL, and the other technologies found in Microsoft Robotics Developer Studio. For now, let&#39;s just cover some basics. To get further along with the code in this</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</link>
      <pubDate>Sat, 24 May 2008 03:56:55 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/8544962_100.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/8544962_220.jpg" height="165" width="220"/>      
      <dc:creator>Charles Stacy Harris III</dc:creator>
      <itunes:author>Charles Stacy Harris III</itunes:author>
      <slash:comments>20</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008/RSS</wfw:commentRss>
      <category>Hardware</category>
      <category>Robotics</category>
      <category>Home Automation</category>
    </item>
  <item>
      <title>Tandy Trower: Robotics Update</title>
      <description><![CDATA[We caught up with Tandy Trower recently to find out what's new with in <a href="http://msdn.microsoft.com/en-us/robotics/default.aspx">
Microsoft Robotics World</a>, now named <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EB00C558-2163-45A5-BEFE-531AD48BC525&amp;displaylang=en">
Microsoft Robotics Developer Studio&nbsp;2008</a> (got to love our naming schemes, eh?<img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' />). The
<a href="http://blogs.msdn.com/MSRoboticsStudio/">Robotics group</a> has moved from Redmond to downtown studio. They are still a very small team, but they are now more of&nbsp;an official MS product team as opposed to an incubation group tied to MSR.
<br /><br />Tandy reflects on the current state of MSRDS 2008, robotics in general, <a href="http://www.robochamps.com/">
RoboChamps</a> competition and more. It's always fun to chat with Tandy, who's been at MS for almost 27 years now. Tandy pioneered Microsoft's foray into robotics and his small team has produced some amazing core technologies (<a href="/Showforum.aspx?forumid=14&amp;tagid=85">CCR</a>,
<a href="http://blog.jonudell.net/2007/07/25/henrik-frystyk-nielsen-on-the-restful-architecture-of-microsoft-robotics-studio/">
DSS</a>). <br /><br />Enjoy.<br /><br /><a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_ch9.wmv">Low res wmv file</a><br /><a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_ch9.mp4">MP4 file</a><br /><a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_Zune_ch9.wmv">Zune file</a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1da742cdb27a416aa3e19dea00ce49af">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Charles/Tandy-Trower-Robotics-Update</comments>
      <itunes:summary>We caught up with Tandy Trower recently to find out what&#39;s new with in 
Microsoft Robotics World, now named 
Microsoft Robotics Developer Studio&amp;nbsp;2008 (got to love our naming schemes, eh?). The
Robotics group has moved from Redmond to downtown studio. They are still a very small team, but they are now more of&amp;nbsp;an official MS product team as opposed to an incubation group tied to MSR.
Tandy reflects on the current state of MSRDS 2008, robotics in general, 
RoboChamps competition and more. It&#39;s always fun to chat with Tandy, who&#39;s been at MS for almost 27 years now. Tandy pioneered Microsoft&#39;s foray into robotics and his small team has produced some amazing core technologies (CCR,

DSS). Enjoy.Low res wmv fileMP4 fileZune file</itunes:summary>
      <itunes:duration>1520</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Charles/Tandy-Trower-Robotics-Update</link>
      <pubDate>Mon, 05 May 2008 18:17:04 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Charles/Tandy-Trower-Robotics-Update</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/401564_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/401564_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/62ba7186-6758-4876-8aad-7f88e745ac47.jpg" height="204" width="270"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/cf8ff4df-ea18-4155-b607-3bbbbbd71ecd.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_2MB_ch9.wmv" expression="full" duration="1520" fileSize="1" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_ch9.mp3" expression="full" duration="1520" fileSize="1" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_ch9.wma" expression="full" duration="1520" fileSize="1" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/MSRSUpdateTandyTrower_s_ch9.wmv" expression="full" duration="1520" fileSize="1" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/MSRSUpdateTandyTrower_2MB_ch9.wmv" length="0" type="video/x-ms-wmv"/>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Charles/Tandy-Trower-Robotics-Update/RSS</wfw:commentRss>
      <category>Robotics</category>
    </item>
  <item>
      <title>This Week on Channel 9: April 25th Episode</title>
      <description><![CDATA[This Week on Channel 9, Dan and Ed cover:<br>
<br>
- <a href="/Showpost.aspx?postid=399578">Clip of Ray Ozzie </a>describing Live Mesh (2:10 - 4:55)<br>
- Dan and Ed take the Live Mesh Rorschach Test (4:55 - 6:52)<br>
- <a href="http://www.on10.net/blogs/nic/Hands-on-with-Live-Mesh/">Channel 10 clip
</a>showing the Live Mesh end user application (7 -&nbsp;9:10)<br>
- Dan and Ed talk about the Live Mesh dev platform and architecture (9:10 - &nbsp;13:30)<br>
- Dan and Ed brainstorm ideas for using Mesh (13:30 - 17:30)<br>
- <a href="/Showpost.aspx?postid=399577">Clip of Abolade Gbadegesin</a> whiteboarding Live Mesh data storage (17:30 - 19:23)<br>
- <a href="/Showpost.aspx?postid=399964">Clip of Ori Amiga</a> show how a Silverlight Web app can work both locally and offline, and&nbsp;then sync back to&nbsp;the cloud using Mesh&nbsp;(20:20 - &nbsp;23:50)<br>
- Dan and Ed brainstorm more Mesh ideas (23-50 - 25:11)<br>
- Photobucket launches their <a href="http://photobucket.com/developer">developer API</a> via Alvin Ashcraft (25:20 - &nbsp;26:54)<br>
- Dan's Pick of the Week: Jeff Atwood's Coding Horror post on <a href="http://www.codinghorror.com/blog/archives/001104.html?r=24512">
old-school BASIC</a> (26:54 - 30:30 )<br>
- Ed's Pick of the Week: <a href="http://www.robochamps.com/">RoboChamps.com </a>
launches, a simulated environment for robots to compete 30:30 - end<br>
<br>
<br>
<br>
- <a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_ch9.wmv">Low res version</a><br>
- <a href="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_ch9.mp4">MP4 version</a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:fc0eeef3aa6649d3ae869dea00c5560d">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-Channel-9-April-25th-Episode</comments>
      <itunes:summary>This Week on Channel 9, Dan and Ed cover:

- Clip of Ray Ozzie describing Live Mesh (2:10 - 4:55)
- Dan and Ed take the Live Mesh Rorschach Test (4:55 - 6:52)
- Channel 10 clip
showing the Live Mesh end user application (7 -&amp;nbsp;9:10)
- Dan and Ed talk about the Live Mesh dev platform and architecture (9:10 - &amp;nbsp;13:30)
- Dan and Ed brainstorm ideas for using Mesh (13:30 - 17:30)
- Clip of Abolade Gbadegesin whiteboarding Live Mesh data storage (17:30 - 19:23)
- Clip of Ori Amiga show how a Silverlight Web app can work both locally and offline, and&amp;nbsp;then sync back to&amp;nbsp;the cloud using Mesh&amp;nbsp;(20:20 - &amp;nbsp;23:50)
- Dan and Ed brainstorm more Mesh ideas (23-50 - 25:11)
- Photobucket launches their developer API via Alvin Ashcraft (25:20 - &amp;nbsp;26:54)
- Dan&#39;s Pick of the Week: Jeff Atwood&#39;s Coding Horror post on 
old-school BASIC (26:54 - 30:30 )
- Ed&#39;s Pick of the Week: RoboChamps.com 
launches, a simulated environment for robots to compete 30:30 - end



- Low res version
- MP4 version</itunes:summary>
      <itunes:duration>2019</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-Channel-9-April-25th-Episode</link>
      <pubDate>Fri, 25 Apr 2008 16:23:50 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-Channel-9-April-25th-Episode</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/73914a96-07e3-4da0-85b7-a56a02af54df.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/399429_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/399429_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/87d0da36-5816-4e20-9115-cc529c4317ff.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_2MB_ch9.wmv" expression="full" duration="2019" fileSize="1" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_ch9.mp3" expression="full" duration="2019" fileSize="1" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_ch9.wma" expression="full" duration="2019" fileSize="1" type="audio/x-ms-wma" medium="audio"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/ThisWeekC9Apr25_s_ch9.wmv" expression="full" duration="2019" fileSize="1" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekC9Apr25_2MB_ch9.wmv" length="0" type="video/x-ms-wmv"/>
      <dc:creator>Dan Fernandez</dc:creator>
      <itunes:author>Dan Fernandez</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-Channel-9-April-25th-Episode/RSS</wfw:commentRss>
      <category>LiveMesh</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Robotics: A new approach</title>
      <description><![CDATA[
<blockquote>
<p><em><br>
In this podcast, Jon Udell invites Tandy Trower and Henrik Nielsen to explain why robotics is taking off, and how their new approach to the technology will generalize to a broad range of scenarios.</em></p>
<div class="transcript">
<p><strong>JU:</strong> So you were just in Japan. What did you see and do? </p>
<p><strong>TT:</strong> We were at IREX, the international robotics exhibition in Tokyo. All forms of robots were there, heavily dominated by industrial robots. That was the big-ticket item. But we were in a smaller section that focused on this new market,
 service robots, which are moving into new areas. Industrial robots have done the dangerous, dull, and dirty jobs. Now there's a new market coming, where robots move outside the factories and into the homes.
</p>
<p>It's a dramatic change. Industrial robots are very expensive, they require special operators, they perform repetitive functions, and they're dangerous for humans to interact with. But that market is starting to flatten out. So a lot of the vendors in that
 area, including one of our best supporting partners, Kuko, one of the top industrial robotic arm manufacturers in the world, is looking for new markets, and very anxious to engage with us in this new service, or personal, robotics market.
</p>
<p>Bill Gates reflected this in his <a href="http://www.sciam.com/article.cfm?chanID=sa006&amp;colID=1&amp;articleID=9312A198-E7F2-99DF-31DA639D6C4BA567">
January article in Scientific American</a>, where he likened the personal and service robotics world to the PC world in the 1970s. The personal computer market, in its infancy, looked kind of weird. You had the Commodore PET, which had a strange little keyboard
 and saved programs to cassette, you had the Apple II. The transition we see in this robotics market now is very similar to what we saw coming out of that era, and even the industrial vendors are starting to look to this new market as a place to go.
</p>
<p><strong>JU:</strong> In this case, there's also a particular demographic driver: aging populations create the need for these personal assistants in the home. And in Japan, in particular, there's a special interest in companionable robots.
</p>
<p><strong>TT:</strong> Yes. In Japan and in many Asian countries, there's much more interest in the social aspect of robots. It's partly cultural, they grew up with AstroBoy and the idea that robots were friendly companions. So you're right, one of the biggest
 motivating factors is this aging of the population. I face this myself. My father-in-law is 84, he lives on his own, he needs help from his family to be able to live independently. It certainly would be helpful if we had more technology that would allow us
 to stay in touch with him, remind him to take his medications, connect him better with his health care providers, these are all things that robots could perform.
</p>
<p>It's also the case that in the Asian countries, because of family and cultural traditions, it's more important to take care of your elders.
</p>
<p><strong>JU:</strong> So if the analogy is to the early PC era, then you're providing what is, in a sense, DOS.
</p>
<p><strong>TT:</strong> Exactly. </p>
<p><strong>HN:</strong> I actually think robotics can grow far beyond where the PC started out. Because the PC, until very recently, had a fairly uniform form factor. You could rely on a screen and a keyboard and a mouse, and that dictated what the user interface
 can be. As soon as you start having what I call more context-aware applications, things that know where you are, what you are doing, what the surroundings are doing -- and not just the local environment -- this causes the computation and the applications to
 be completely different. They are inherently part of the environment. They have to become much more aware, and the ways you interact with them have to become more aware. You might want to use speech for some things, or touch, or just you being there in person
 so it can track you using heat, or motion. </p>
<p>Robotics hardware has come a long way in terms of price, functionality, and flexibility. But service robots have yet to reach a level of usefulness that defines how they might be able to take off. There are some obvious entertainment opportunities, and remote
 presence opportunities, but beyond that we're only in the beginning phase of figuring out what these applications look like.
</p>
<p>And we actually think it applies not only to robotics but also to how you might start thinking about interaction with information systems in general.
</p>
<p><strong>TT:</strong> And that's been one of the challenges. How do you create applications like this, where you have a lot of things going on? PCs have had it easy. They just sit there, they take the keyboard input, the mouse input, but when they have to
 go and sense things in our environment, and actually operate in our environment, it takes a much more complex model. How do you deal with all these different sensory inputs that are coming in at the same time? How do you deal with controlling the activations
 of many different things at the same time? This, we believe, is not just a model for robotics, but is a model for software of the future.
</p>
<p><strong>JU:</strong> Absolutely, because there no longer is the illusion of god-like control of the machine. In the early PC network, pre-network, you really did make the rules and you really did have that control. But in the network era, and now as the
 network extends into the physical world, you're an actor on a stage with a number of other actors running around with their own agendas. It becomes a negotation, a game of interaction. So yes, it absolutely mandates a different model, and that model extends
 equally to loosely-coupled services that communicate by sending messages over the network.
</p>
<p><strong>TT:</strong> Yes, a model that deals with the inherent complexity of concurrency, and the coordination or orchestration of what's going on. This was the whole reason for choosing the CCR and DSS pieces for robotics. This was actually an advanced
 programming model designed not for robotics per se, but as a general purpose programming model. We put it into the robotics SDK as a way to test this out, but now we're seeing that people are lifting the hood on the engine inside this SDK and finding other
 uses for it. We have people who are using it to build trading systems, who are doing large data-set scientific modeling, the folks at MySpace are using it to manage their server farms.
</p>
<p><strong>JU:</strong> So let's review, for people who may not have followed the story. The CCR, which is the Concurrency and Coordination Runtime, and DSS, which stands for Decentralized Software Services, are projects that were in the works, and had a relationship
 to one another, prior to their incorporation into the robotics kit. Is that true?
</p>
<p><strong>TT:</strong> Yes, that's right. </p>
<p><strong>HN:</strong> Yes, absolutely. DSS is built on top of CCR. By way of background, the challenge was to answer the question: What is the programming and application model when it's no longer true that you have a single process running on a single cpu
 on a single machine? We think that is already no longer true. When you look down you see many cores under you that operate concurrently...
</p>
<p><strong>JU:</strong> And many nodes on the network... </p>
<p><strong>HN:</strong> That's right, and when you look up you see many nodes on the network, and you want to have your application function in that environment. In fact you need to define what an application is. If you are in fact building a composition of
 services you need to deal with the concurrency, but also about messages flowing around in the system. It becomes much more autonomous computing. And this is why it fits nicely with robotics. It's about sensing, get a huge amount of input from the environment
 in a very asynchronous and loosely-coupled way. </p>
<p>Everything becomes an autonomous unit. And each can be participating in many different applications at the same time, without even knowing it...
</p>
<p><strong>JU:</strong> Or not participating, because some of them went AWOL, but that's OK because you have the redundancy to handle that.
</p>
<p><strong>HN:</strong> Exactly. The web has been trying to push toward this model for a long time, and now the appearance of many-core CPUs has started to push toward it. So the whole idea of an application, which hasn't changed for 30 years, now has to change.
 And that's the question we tried to answer when we started out with CCR and DSS. They work nicely together. One provides a programming model, the other provides an application model, that together fits nicely around messaging, as you said. We think it leads
 you down a path of building very robust, scalable, and flexible applications. </p>
<p><strong>JU:</strong> So in this context how do you define an application? </p>
<p><strong>HN:</strong> It is a composition of a set of loosely-coupled services that function individually. Kind of like in a mashup environment. You have a variety of inputs, a different set of outputs that you want to be able to affect, it is the orchestration
 of messages going in and out. It's the collection -- it is effectively, when you look at it, a graph of services that you start thinking of as your application.
</p>
<p><strong>JU:</strong> And a ruleset. </p>
<p><strong>HN</strong>: And a ruleset, yes, exactly. So it's about having a set of services hooked together, and ruleset for how to orchestrate messages over that set. And it's about partial failure, and redundancy, because you don't have control over all of
 these services. Some run locally, some run across the network, some run in the cloud. You want to be able to leverage them all, and hook new things in.
</p>
<p>Here's a very practical problem from a robotics point of view. You might have had your robot in the home for a couple of years. It has learned where you go, it knows your calendar, it knows a bunch of things about you. Now you might get another robot. Rather
 than wait a couple of years for it to get up to speed on what you think matters to it, you might want to be able to hook into the same application context. It's a web of information that you want the new guy to be able to hook into. It's all about the connectedness
 of applications. </p>
<p><strong>TT:</strong> And of course this is the way that living systems operate, whether we're talking about the cellular structure of our bodies, or our neural systems, or even full ecosystems. It's all based on the fact that the nodes themselves have a
 certain importance, but it's the connectivity through the nodes -- the way they communicate with one another -- that provides the inherent power. Our own neural system is a massive network. The individual nodes provide insignificant data, yet they pass these
 messages along, and through the orchestration of these connections we get the ability to see, or to hear, or to be able to function in our world.
</p>
<p><strong>JU:</strong> Biomimicry, that's the ticket. Nature's already done all this R and D, why don't we piggyback on what it's already figured out.
</p>
<p><strong>TT:</strong> Exactly. When I first looked at applying the technology that Henrik was working on, that was one of the areas I looked at. Now it turns out that biologically inspired techniques are still in a crude stage, so my second attempt was to
 apply this to robotics because it's a more practical technology that may eventually evolve toward more biologically inspired technologies.
</p>
<p>Again, this whole model was never designed to be exclusively for robotics. It was designed to be a programming model for the future that would enable a new generation of applications. We've been trying to create them, today, as if they were all on a single
 neuron. What this technology says is that with the trends that are coming -- Intel and AMD both now shipping 4-core systems, 8-cores coming next year, how are we going to manage all this power? And the Internet shows us that we've already moved past the idea
 of running a single application that runs on a single core on a single machine, that's just obsolete. How do you reduce the overall complexity when your application runs in five different places at the same time? Is it even a solvable problem? Well it turns
 out that the CCR and DSS have solved that problem, they do provide that programming model. And that's not just me saying that, we have customers who are embracing them because they are helping solve these complex problems.
</p>
<p><strong>JU:</strong> One of the challenges, as we see in the web services space, is that when the application becomes a set of actors on the stage, with a lot of other actors, how do I know that I'm meeting my requirements, how do I test? I think these are
 all extensions of things we know how to do, but still, it changes the game. </p>
<p><strong>HN:</strong> Oh, it changes dramatically. We hold the basic assumption that bad things happen, and things fail for unknown reasons. In the case of robotics it works beautifully, because the robot falls off the cliff, and it's gone. But you can't
 just stop. It would be smart to say, well, don't do what that thing did. Try to avoid falling off the cliff. That's where this magic term loose coupling comes in. It's often seen as a good thing to do, an important architectural principle, but in fact how
 to do it turns out to be difficult. How can you write an application that can fail partially without the rest of it going down?
</p>
<p><strong>JU:</strong> How do you evaluate the performance of an application? We're used to a model where the testable performance is discrete. It did or didn't do this function. But in this world, it tends toward the probabilistic.
</p>
<p><strong>HN:</strong> Oh, absolutely. </p>
<p><strong>JU:</strong> It's not whether it vacuumed the room or not, but how well did it do that? And over a series of trials, how did that average out? It's fuzzier.
</p>
<p><strong>HN:</strong> Yes. Of course people already know that on the web, when they use search engines. They know they'll get a decent response, but an exact snapshot is just not possible.
</p>
<p><strong>JU:</strong> It won't be authoritative or complete. </p>
<p><strong>HN:</strong> It's a snapshot of a moment in time. I think a lot of the applications we deal with will have to think about that, and be organized around that. And that boils down to, well, I have information, how do I orchestrate it, how do I put
 weights on the different pieces of information? And how do I spread it around so I can build something that doesn't freeze?
</p>
<p><strong>TT:</strong> Related to that, what do you do when one of your program components does freeze up, or crashes. In this world, it's fine. If you lose one of the services in the set, because its state is separated out, you can drop the service or restart
 it or replace it... </p>
<p><strong>JU:</strong> And reattach the state to another instance of the service.
</p>
<p><strong>TT:</strong> Exactly. What do you do when you find out that code has failed? Do you reboot the system? Do you remove the whole application? Or do you just surgically go in there and remove or fix one piece? I mean, we lose cells all the time, and
 they're replaced, and yet we don't have to be rebooted every time a new cell comes in. It just fits into the network, finds its place, replaces the old one, and we continue on. Software needs that kind of resiliency. You need to do that kind of surgical maintenance.
</p>
<p>Back to robotics, the classical model was this. You read your sensors, you decide what to do about that sensory input, and then you effect your actuators. The problem with that was twofold. First it's very brittle. You get one wrong instruction, you bring
 the whole application down. Second, while you're processing your sensory input or actuator outputs, you're not reading your sensors. So at the time you should be noticing that you're running into the wall, you're telling the wheels to move forward.
</p>
<p>The fact that we talk about this as orchestration is a very apt metaphor. What happens in an orchestra, what does a conductor do? He has a lot of people playing at the same time, his task is to make sure that it all blends together and sounds beautiful.
 This is the key, this is the programmer's challenge in the future. How are they going to keep an application flowing that way? It needs a simple model, but one that is scalable from the lowest level of abstraction to the highest level. That's what we believe
 we have here in the CSS/DSS companionship. </p>
<p><strong>JU:</strong> I was going to ask how you begin to instill this way of doing things into a new generation of programmers, but I think I got the answer in a recent
<a href="http://itc.conversationsnetwork.org/shows/detail3467.html">conversation with Matt MacLaurin</a>, in the Creative Systems Group. He's developing a thing called Boku, which is both a game and a game development system, but all on these same principles.
 A kid puts an object into the world, then declares what are the goals or the reactions that it can have. Then you start to get emergent things happening, and you are learning to operate in a world which is much like the one you're describing. You're not controlling
 this world. You're injecting things into it that participate and interact, and you need to shape those interactions.
</p>
<p><strong>HN:</strong> Robotics offers a lot of excitement in terms of education. It ties together a lot of technologies, in terms of science, math, applied technologies like vision and audio, and also computer science. So it's a powerful vehicle for getting
 attention from students. </p>
<p>So we had this problem, people said, well, if you want to use it for computer science, then computer science 101 has to be a for loop, or a function call...
</p>
<p><strong>JU:</strong> Sorting. </p>
<p><strong>HN:</strong> Sorting, exactly. And we said, well, we think it might be interesting to expose this model of distribution and concurrency directly. We don't think the students will freeze up, they are already aware of the asynchronicity from IM and
 email. </p>
<p><strong>JU:</strong> This is what Matt is doing, actually. It's beautiful. So, to make this concrete, let's come back to home automation. In the case of HealthVault, currently, any of the home health devices that connect to it will be satellites of the PC.
 But you're imagining a model where the home is more of a network of...well, in a sense, the entire home is a complex robot.
</p>
<p><strong>HN:</strong> My view is that the P in the PC will go away. Because it's about computers in the network, and the connectedness of them, and the fact that you want them to be orchestrated, but you don't really go and sit in front of any of them. When
 the robot's around you might do some stuff with it, then you go down into your basement that might do something else, but you want the information to be continuous.
</p>
<p><strong>JU:</strong> It's not like your cellphone, a thing that's permanently attached to you. When it's in your environment, you can interact with it, but it doesn't have to be there, and you can interact with lots of other things.
</p>
<p><strong>HN:</strong> Yes. Of course the cellphone has had clearly subordinate role to the PC, you dock it and synch it, but these devices are becoming full-fledged network devices. So again you have to have an application and programming model that allows
 you to build applications that can float around these devices as they come and go.
</p>
<p><strong>JU:</strong> And the support software is light enough for these devices?
</p>
<p><strong>HN:</strong> You mean in terms of CCR and DSS? Yes. We run today on Windows CE, and I think we can say for the next release we will run -- we are already running now -- on the micro framework, which doesn't have any Windows underneath, it's really
 running a very lightweight managed environment straight on top of the hardware. We can run on very small things. Light switches.
</p>
<p><strong>JU:</strong> Really? </p>
<p><strong>HN:</strong> Yes. We run a limited version of what we have, but it's the same bits, fundamentally. We had a researcher in MSR implement a very lightweight version of our protocol, on a small device, and have it show up in our environment, without
 having to do anything else. It could be a light switch, a thermostat, a security alarm, any number of devices that don't do much computation but provide sensory input.
</p>
<p><strong>JU:</strong> So if somebody wants to get their feet wet with this, and do a little project that gives them a taste of what it's like, what would you recommend? I mean, they can get the kit, but what's a good example to try?
</p>
<p><strong>HN:</strong> There are a lot of people who'd be excited about going to the store and buying a robot, and that's great. But assuming you couldn't, what you would start with is the simulation environment. It allows you, without having touched a robot
 at all, to play around with a set of robots that we provide you with simulation models for. You can very easily, in 5 minutes, download the SDK and then get going with a robot that is only in the visual environment. However it's more than that, it is a fully
 physics-aware environment. </p>
<p><strong>JU:</strong> Sensors, actuators... </p>
<p><strong>HN:</strong> Yes, so when you bump into other things they will move, and if you made them very heavy, your robot will flip or crash. So you have a very easy way to get started.
</p>
<p><strong>JU:</strong> Thanks Tandy. And thanks, Henrik. </p>
</div>
</blockquote>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f1fb5958581a450eb8c39dea011a260c">]]></description>
      <comments>http://channel9.msdn.com/Blogs/JonUdell/Microsoft-Robotics-A-new-approach</comments>
      <itunes:summary>


In this podcast, Jon Udell invites Tandy Trower and Henrik Nielsen to explain why robotics is taking off, and how their new approach to the technology will generalize to a broad range of scenarios.

JU: So you were just in Japan. What did you see and do? 
TT: We were at IREX, the international robotics exhibition in Tokyo. All forms of robots were there, heavily dominated by industrial robots. That was the big-ticket item. But we were in a smaller section that focused on this new market,
 service robots, which are moving into new areas. Industrial robots have done the dangerous, dull, and dirty jobs. Now there&#39;s a new market coming, where robots move outside the factories and into the homes.

It&#39;s a dramatic change. Industrial robots are very expensive, they require special operators, they perform repetitive functions, and they&#39;re dangerous for humans to interact with. But that market is starting to flatten out. So a lot of the vendors in that
 area, including one of our best supporting partners, Kuko, one of the top industrial robotic arm manufacturers in the world, is looking for new markets, and very anxious to engage with us in this new service, or personal, robotics market.

Bill Gates reflected this in his 
January article in Scientific American, where he likened the personal and service robotics world to the PC world in the 1970s. The personal computer market, in its infancy, looked kind of weird. You had the Commodore PET, which had a strange little keyboard
 and saved programs to cassette, you had the Apple II. The transition we see in this robotics market now is very similar to what we saw coming out of that era, and even the industrial vendors are starting to look to this new market as a place to go.

JU: In this case, there&#39;s also a particular demographic driver: aging populations create the need for these personal assistants in the home. And in Japan, in particular, there&#39;s a special interest in companionable robots.

TT: Yes. In Ja</itunes:summary>
      <itunes:duration>2194</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/JonUdell/Microsoft-Robotics-A-new-approach</link>
      <pubDate>Thu, 13 Mar 2008 15:26:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/JonUdell/Microsoft-Robotics-A-new-approach</guid>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/perspectives/robotics/robotics.mp3" expression="full" duration="2194" fileSize="17555328" type="audio/mp3" medium="audio"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/on10/perspectives/robotics/robotics.wma" expression="full" duration="2194" fileSize="17762025" type="audio/x-ms-wma" medium="audio"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/on10/perspectives/robotics/robotics.wma" length="17762025" type="audio/x-ms-wma"/>
      <dc:creator>JonUdell</dc:creator>
      <itunes:author>JonUdell</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/JonUdell/Microsoft-Robotics-A-new-approach/RSS</wfw:commentRss>
      <category>Robotics</category>
    </item>
  <item>
      <title>Feb 29: This Week on Channel 9</title>
      <description><![CDATA[
<p>On this week's episode, Brian and Dan talk about<br>
- GDC and GDC Impressions<br>
-&nbsp;<a href="/Showpost.aspx?postid=386084">Michael Klucher clip </a>where he talks about VS tool support for building Zune games<br>
- Heroes Happen Here <a href="http://www.microsoft.com/heroeshappenhere">Launch Event</a><br>
- <a href="/Showpost.aspx?postid=386366">Aaron Marten clip</a> showing VSX extensibility to build a custom tool window<br>
- Christian Kleinerman showing the <a href="/showpost.aspx?postid=387069">SQL Merge statement for SQL Server 2008</a><br>
- Popfly nominated for <a href="http://www.webware.com/html/ww/100/2008/vote_publish.html?compid=103440">
C|Net WebWare Award<br>
</a>- Microsoft <a href="http://www.microsoft.com/presspass/presskits/interoperability/default.mspx">
Interoperability Announcement<br>
</a>- <a href="/Showpost.aspx?postid=383939">Miguel De Icaza</a> on Moonlight<br>
- VS Tools for Office <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=46B6BF86-E35D-4870-B214-4D7B72B02BF9&amp;displaylang=en">
Power Toys Released</a><br>
- Tools and APIs including Cake3 (via Jason Haley), Virtual Earth <a href="http://blogs.msdn.com/publicsector/archive/2008/02/26/javascript-intellisense-for-the-virtual-earth-map-control.aspx">
JavaScript IntelliSense</a>, and Steve Holstad's Coding4Fun <a href="http://blogs.msdn.com/coding4fun/archive/2008/02/24/7883342.aspx">
Twitter &#43; Silverlight mashup<br>
</a>- Brian's Pick of the week: <a href="http://blogs.msdn.com/msroboticsstudio/archive/2008/02/27/robotturk-disaster-emergency-video-system.aspx">
RobotTurk </a>- Autonomous, Aerial helicopter using Robotics Studio, Virtual Earth, and Silverlight<br>
- Dan's Pick of the week: <a href="http://blogs.msdn.com/garretts/archive/2008/02/25/the-apache-visit-to-microsoft-campus-day-one.aspx">
The Apache Foundation visits Microsoft</a><br>
- Coffeehouse News: Jamie's <a href="/ShowPost.aspx?PostID=386560">Who are you (2) thread</a><br>
- $100 Community Roulette at Vegas - You, the community, decides what number we put our money on!</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d444303c8fcd46dfa09d9dea00c57023">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/Feb-29-This-Week-on-Channel-9</comments>
      <itunes:summary>
On this week&#39;s episode, Brian and Dan talk about
- GDC and GDC Impressions
-&amp;nbsp;Michael Klucher clip where he talks about VS tool support for building Zune games
- Heroes Happen Here Launch Event
- Aaron Marten clip showing VSX extensibility to build a custom tool window
- Christian Kleinerman showing the SQL Merge statement for SQL Server 2008
- Popfly nominated for 
C|Net WebWare Award
- Microsoft 
Interoperability Announcement
- Miguel De Icaza on Moonlight
- VS Tools for Office 
Power Toys Released
- Tools and APIs including Cake3 (via Jason Haley), Virtual Earth 
JavaScript IntelliSense, and Steve Holstad&#39;s Coding4Fun 
Twitter &amp;#43; Silverlight mashup
- Brian&#39;s Pick of the week: 
RobotTurk - Autonomous, Aerial helicopter using Robotics Studio, Virtual Earth, and Silverlight
- Dan&#39;s Pick of the week: 
The Apache Foundation visits Microsoft
- Coffeehouse News: Jamie&#39;s Who are you (2) thread
- $100 Community Roulette at Vegas - You, the community, decides what number we put our money on!
</itunes:summary>
      <itunes:duration>1500</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/Feb-29-This-Week-on-Channel-9</link>
      <pubDate>Fri, 29 Feb 2008 21:26:38 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/Feb-29-This-Week-on-Channel-9</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/79a2220e-d708-4e71-98a1-1dfb231c8ce1.jpg" height="0" width="0"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/249627_100x75.jpg" height="75" width="100"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/249627_220x165.jpg" height="165" width="220"/>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/e389390d-0c91-45fc-b7a0-17d7f28d1898.jpg" height="64" width="85"/>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/feb29.wmv" expression="full" duration="1500" fileSize="1" type="video/x-ms-wmv" medium="video"/>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/ThisWeekonC9Feb29_ch9.mp3" expression="full" duration="1500" fileSize="1" type="audio/mp3" medium="audio"/>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/0/ThisWeekonC9Feb29_s_ch9.wmv" expression="full" duration="1500" fileSize="1" type="video/x-ms-wmv" medium="video"/>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/0/feb29.wmv" length="0" type="video/x-ms-wmv"/>
      <dc:creator>Dan Fernandez</dc:creator>
      <itunes:author>Dan Fernandez</itunes:author>
      <slash:comments>15</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/Feb-29-This-Week-on-Channel-9/RSS</wfw:commentRss>
      <category>GDC2008</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Visual Studio 2008</category>
      <category>VS SDK</category>
      <category>VSTO</category>
    </item>    
</channel>
</rss>
