<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">David L's Blog</title><subtitle type="html"> &amp;nbsp;</subtitle><id>http://blogs.msdn.com/b/davidlem/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/davidlem/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2009-11-24T12:44:28Z</updated><entry><title>Goodbye Microsoft</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/09/08/goodbye_2D00_microsoft.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/09/08/goodbye_2D00_microsoft.aspx</id><published>2010-09-08T06:48:24Z</published><updated>2010-09-08T06:48:24Z</updated><content type="html">&lt;p&gt;Today I resigned from Microsoft. While I’m leaving to take a big step in a new direction, I have to say, it’s with very mixed emotions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/frankarr/archive/2005/02/23/378387.aspx" target="_blank"&gt;Five and a half years ago&lt;/a&gt;, I started a journey that changed me forever. Not only was it the realization of a teenage dream (I still remember unwrapping the Visual Basic 3.0 box as an intern and thinking, one day I’ll ship a product for Microsoft), but it was also a graduation of sorts into the realm of industrial software engineering. &lt;/p&gt;  &lt;p&gt;My time at Microsoft has been completely magical. Not only have I been fortunate to work with some of the most amazing professionals in my career (colleagues, partners, influences and students!), I’ve also had the opportunity to travel around the world, move from Australia to the United States, and fulfill a life-long dream and ambition, &lt;a href="http://twitpic.com/poyf2" target="_blank"&gt;to ship a major product for Microsoft Corporation&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;But, it’s time to move on. &lt;/p&gt;  &lt;p&gt;Where am I going? I’m joining &lt;a href="http://www.pwc.com/us/en/index.jhtml" target="_blank"&gt;PricewaterhouseCoopers&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;What am I going to do there? I’m taking a role as Director of Cloud Computing, focusing on how customers transform their businesses to take advantage of the cloud. &lt;/p&gt;  &lt;p&gt;Why? Cloud is my passion, and while building one of the biggest and best at Microsoft was amazing from a geek and engineer perspective, I’m yearning to focus on the other aspects of what it takes for customers to truly use the cloud as a business transformer. &lt;/p&gt;  &lt;p&gt;What will happen to my blog? I have a &lt;a href="http://lemphers.com/blog" target="_blank"&gt;new one here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So to all my Microsoft friends and family, thanks for five and a half years of being awesome! &lt;/p&gt;  &lt;p&gt;Vale, lacerte!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059173" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Getting Started with Parallel Programming in .NET 4</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/05/15/getting-started-with-parallel-programming-in-net-4.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/05/15/getting-started-with-parallel-programming-in-net-4.aspx</id><published>2010-05-14T16:51:06Z</published><updated>2010-05-14T16:51:06Z</updated><content type="html">&lt;p&gt;So one of the features of .NET 4 that I’ve been eagerly awaiting is the new Parallel Programming “stuff”.&lt;/p&gt;  &lt;p&gt;Now, anyone who has worked in concurrent environments knows, it’s daunting to learn a new set of technologies, constructs, tools, etc. For those that haven’t worked in concurrent environments, the entry into concurrency can be downright intimidating. Either way, adopting concurrent practices in your code is not a trivial process.&lt;/p&gt;  &lt;p&gt;So to get started, I took a simple approach, which I’ve detailed in this post. The goals of my approach were:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Understand at a high level, the full surface area of what is now possible with the Parallel Programming “stuff” (I really don’t know what to refer to it as&amp;quot;)&lt;/li&gt;    &lt;li&gt;Get my hands dirty building some simple examples that map to real problems I need to solve in my day to day job&lt;/li&gt;    &lt;li&gt;Discover some new patterns that are made easier with the new PP “stuff”&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;First stop was to read &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=86B3D32B-AD26-4BB8-A3AE-C1637026C3EE&amp;amp;displaylang=en" target="_blank"&gt;this guide&lt;/a&gt; by &lt;a href="http://blogs.msdn.com/toub/default.aspx" target="_blank"&gt;Stephen Toub&lt;/a&gt; from the &lt;a href="http://blogs.msdn.com/pfxteam/" target="_blank"&gt;Parallel Extensions team&lt;/a&gt;. This is a fantastic guide, written at the perfect level for achieving goal 1. I read it top to bottom to glean the high level points, then went back over it with a more detailed eye to try and map the concepts Stephen talks about to real scenarios I have/have been experienc[ed][ing]. &lt;/p&gt;  &lt;p&gt;The second stop was to download the &lt;a href="http://code.msdn.microsoft.com/ParExtSamples" target="_blank"&gt;sample code&lt;/a&gt; from &lt;a href="http://code.msdn.microsoft.com/" target="_blank"&gt;MSDN Code Gallery&lt;/a&gt;. There are a &lt;a href="http://blogs.msdn.com/pfxteam/archive/2009/12/09/9934811.aspx" target="_blank"&gt;ton of samples here&lt;/a&gt;, and just starting with something like the Acme Pizza sample is very enlightening. &lt;/p&gt;  &lt;p&gt;The third stop was to download the articles on &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C3EA8FB5-650D-434B-A216-7E54C53965D1&amp;amp;displaylang=en" target="_blank"&gt;Parallel Programming with the .NET Framework 4&lt;/a&gt;. I only got through the Coding Guidelines one, but will slowly grind through the others as part of my journey.&lt;/p&gt;  &lt;p&gt;Finally, I have started to work through the blog posts on the &lt;a href="http://blogs.msdn.com/pfxteam/" target="_blank"&gt;team blog&lt;/a&gt;. So much gold here, I mean, &lt;a href="http://blogs.msdn.com/pfxteam/archive/2010/05/04/10007557.aspx" target="_blank"&gt;check out this article as a start&lt;/a&gt;! &lt;/p&gt;  &lt;p&gt;Now, there is a natural path that this kind of stuff leads to, because when you take the fact that Parallel Programming “stuff” is rolled into .NET 4, and &lt;a href="http://blogs.msdn.com/windowsazure/archive/2010/04/07/upcoming-support-in-windows-azure-for-net-framework-4.aspx" target="_blank"&gt;Windows Azure will have .NET 4 support very soon&lt;/a&gt;, then the opportunity to build Parallel Programming Windows Azure “stuff” is pretty strong. Just putting it out there!&lt;/p&gt;  &lt;p&gt;Enjoy! :) &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:15b1153f-a21c-4d9f-b30c-6dbb933dadf5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Parallel+Programming" rel="tag"&gt;Parallel Programming&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET+4" rel="tag"&gt;.NET 4&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10013225" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>WCF, REST and URL Rewriting with Windows Azure!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/04/26/wcf-rest-and-url-rewriting-with-windows-azure.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/04/26/wcf-rest-and-url-rewriting-with-windows-azure.aspx</id><published>2010-04-25T22:48:24Z</published><updated>2010-04-25T22:48:24Z</updated><content type="html">&lt;p&gt;So there is nothing I find nicer than a well formatted, REST based URL. &lt;/p&gt;  &lt;p&gt;Take for example:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://myhost/customer/2/orders"&gt;http://myhost/customer/2/orders&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As a way to retrieve all orders for customer number 2.&lt;/p&gt;  &lt;p&gt;There is also nothing I like more than &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank"&gt;WCF&lt;/a&gt;! The flexibility to declaratively control the behavior of my web service is perfect for situations where I need to respond quickly to heterogeneous client calling requirements (REST, SOAP, etc).&lt;/p&gt;  &lt;p&gt;And finally, I love &lt;a href="http://msdn.microsoft.com/en-us/azure/cc994380.aspx" target="_blank"&gt;Windows Azure&lt;/a&gt;, nothing more really to say there.&lt;/p&gt;  &lt;p&gt;So how do you build a RESTful WCF Service in Windows Azure?&lt;/p&gt;  &lt;p&gt;Start with a new Cloud project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb.png" width="415" height="281" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then add a new WCF Service Web Role:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image3_thumb.png" width="419" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, this is enough to get a WCF service going in Windows Azure, so just hit F5 and you’ll get this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_2.png" width="420" height="214" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you don’t get this, then something is not right. First thing to check is that you’ve switched on WCF activation:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_10.png" width="421" height="252" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If this doesn’t help matters, then you’re out of luck my furry friend. Time to hit the power button and try again.&lt;/p&gt;  &lt;p&gt;Next we want to change our service’s behavior to be more REST’y, so we start by changing the way the page is hosted. To do this, we set the Factory property of our ServiceHost by editing the markup of our service to use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.webservicehostfactory.aspx" target="_blank"&gt;WebServiceHostFactory&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_3.png" width="424" height="72" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, the first time you run this, you’re going to hit a 400:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_4.png" width="427" height="221" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Simply go into your web.config and remove the system.serviceModel section, as the WebServiceHostFactory will take care of your services behavior. (&lt;a href="http://msdn.microsoft.com/en-us/library/dd203052.aspx" target="_blank"&gt;Some more helpful info on RESTful services with WCF here&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;This should get your service going, but you’ll notice that the WebServiceHostFactory will not have any endpoints enabled.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_5.png" width="432" height="104" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;All good, onto our next part. To make sure we can invoke our service through a HTTP verb, and the response can be returned in basic XML, we need to add some attributes to our OperationContract:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms733901.aspx" target="_blank"&gt;XmlSerializerFormat&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.web.webgetattribute.aspx" target="_blank"&gt;WebGet&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_6.png" width="434" height="129" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So now, you can simply invoke your service like such:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_7.png" width="438" height="129" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Getting closer.&lt;/p&gt;  &lt;p&gt;But I don’t like having the .svc extension in the URL. One of the great things about REST, well, web services in total, is you don’t have to expose the implementation details to the caller. So let’s get rid of the .svc part. To do this, we use a fantastic feature available in Windows Azure called the &lt;a href="http://www.iis.net/download/URLRewrite" target="_blank"&gt;URL Rewrite module&lt;/a&gt;. So I write a crude and dirty little rule in my web.config that maps any calls to myservice to Service1.svc.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_8.png" width="446" height="199" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now we’re almost there:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_9.png" width="449" height="171" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, to make URL Rewriting work on your local machine, remember to install the appropriate version of the URL Rewrite Module on your machine, &lt;a href="http://msdn.microsoft.com/en-us/library/dd573358.aspx" target="_blank"&gt;per these instructions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Now, not happy to leave well enough alone, I want to pass in my value as part of the URI, rather than part of the query string, so I’m going to set the &lt;a href="http://msdn.microsoft.com/en-us/library/bb943469.aspx" target="_blank"&gt;UriTemplate&lt;/a&gt; property of the WebGet attribute to reflect my formatting requirements:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_11.png" width="454" height="120" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You’ll also notice I had to change the input type of my method to a string, as the UriTemplate requires that parameters, in this example, {value}, are string types. &lt;/p&gt;  &lt;p&gt;Now, everything is as it should be, and I can call my service straight from a HTTP verb, in this case, GET, using a nicely formatted URI:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WCFRESTandURLRewritingwithWindowsAzure_1347C/image_thumb_12.png" width="453" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This all runs nicely in Windows Azure, and more importantly, is callable from any client capable of constructing a HTTP payload, so the interop is awesome!&lt;/p&gt;  &lt;p&gt;Here is the basic &lt;a href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/Blog%20Samples/RESTService.zip" target="_blank"&gt;Windows Azure project in VS2010 format&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2a87c1cc-3029-48e0-9569-58db86945de0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/REST" rel="tag"&gt;REST&lt;/a&gt;,&lt;a href="http://technorati.com/tags/URL+Rewrite+Module" rel="tag"&gt;URL Rewrite Module&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10002265" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Build Your Own Pivot Server in Windows Azure!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/04/16/build-your-own-pivot-server-in-windows-azure.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/04/16/build-your-own-pivot-server-in-windows-azure.aspx</id><published>2010-04-15T16:07:48Z</published><updated>2010-04-15T16:07:48Z</updated><content type="html">&lt;p&gt;So one thing I’ve been wanting to do since &lt;a href="http://blogs.msdn.com/davidlem/archive/2010/03/02/new-gig.aspx" target="_blank"&gt;moving&lt;/a&gt; from the &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; team to the &lt;a href="http://www.getpivot.com/" target="_blank"&gt;Pivot&lt;/a&gt; team, is build a &lt;a href="http://www.getpivot.com/developer-info/hosting.aspx#Dynamic" target="_blank"&gt;Pivot Dynamic Server&lt;/a&gt; in Windows Azure.&lt;/p&gt;  &lt;p&gt;Well, tonight I decided to do just that, allow me to expatiate! ;0&lt;/p&gt;  &lt;p&gt;Let’s start with a basic overview of what &lt;a href="http://www.getpivot.com/developer-info/xml-schema.aspx" target="_blank"&gt;Pivot requires to load a collection&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;First it needs a collection file, affectionately referred to as “the cxml”. This lays out the details of your collection, things like the facet categories that provide the faceted exploration capabilities, and the details about the item in your collection. Within the cxml, there is a reference to another file, known as “the dzc”, or the &lt;a href="http://msdn.microsoft.com/en-us/library/cc645050%28VS.95%29.aspx#working_with_collections" target="_blank"&gt;DeepZoom Collection&lt;/a&gt;. This file describes all the smaller “dzi” files, or &lt;a href="http://msdn.microsoft.com/en-us/library/cc645050%28VS.95%29.aspx#creating_a_deep_zoom_image" target="_blank"&gt;DeepZoom Images&lt;/a&gt;, that make up the whole collections set of images.&lt;/p&gt;  &lt;p&gt;Now, this is all pretty high level, and to get a real sense of what this all means, a little time spent reading through &lt;a href="http://www.getpivot.com/developer-info/" target="_blank"&gt;our site&lt;/a&gt; is time well spent. For those that have, and are simply asking the question, “How do I create a collection on the fly, and serve it up from Windows Azure?”, then I hope this blog post satisfies.&lt;/p&gt;  &lt;p&gt;So given the basics above, that Pivot requires a cxml that points to a dzc of dzi’s, we’re ready to move to the Windows Azure part.&lt;/p&gt;  &lt;p&gt;So Windows Azure has some awesome capabilities, that makes it possible to build something as powerful as a Pivot Dynamic Server in no more than a night.&lt;/p&gt;  &lt;p&gt;To start with, I set some goals. &lt;/p&gt;  &lt;p&gt;1. Be able to serve a completely dynamic collection from Windows Azure that would load in Pivot.&lt;/p&gt;  &lt;p&gt;2. To not use Windows Azure Storage (yet!). For my demo, I’m assuming a single web role instance, with all files being served from the role itself, old skool style. I’ll rev this sample/demo to use blobs in Windows Azure Storage in a follow up post.&lt;/p&gt;  &lt;p&gt;3. To generate the collection from a web source, that is, use something like &lt;a href="http://www.flickr.com/" target="_blank"&gt;Flickr&lt;/a&gt; or &lt;a href="http://twitter.com/" target="_blank"&gt;Twitter&lt;/a&gt; as the source of my collection and transform it on the fly (I picked Flickr).&lt;/p&gt;  &lt;p&gt;4. Auto-generate my &lt;a href="http://www.getpivot.com/developer-info/design.aspx#Facet_Categories" target="_blank"&gt;facets&lt;/a&gt;. This way, there is no need for “authoring” per se, you just point and click.&lt;/p&gt;  &lt;p&gt;Now on to the code.&lt;/p&gt;  &lt;p&gt;I started with a standard &lt;a href="http://msdn.microsoft.com/en-us/library/dd179341.aspx" target="_blank"&gt;Windows Azure web role&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I then added a &lt;a href="http://msdn.microsoft.com/en-us/library/bb398986.aspx" target="_blank"&gt;Generic Handler&lt;/a&gt; (.ashx) to the project, to handle the requests coming from Pivot. Because Pivot expects a file that has a CXML extension and contains XML, and because goal 1 requires that we are able to handle dynamic requests, we need some way to map a virtual request like &lt;a href="http://foo/bar.cxml?id=n"&gt;http://foo/bar.cxml?id=n&lt;/a&gt; to something that will return the dynamically generated cxml.&lt;/p&gt;  &lt;p&gt;The second thing I needed to do was setup a &lt;a href="http://msdn.microsoft.com/en-us/library/dd573358.aspx" target="_blank"&gt;URL rewrite&lt;/a&gt; rule so that all request to my web role are directed to my handler, where it can make the appropriate changes to the request.context.&lt;/p&gt;  &lt;p&gt;Now the basics of my service are ready.&lt;/p&gt;  &lt;p&gt;Next I need to serve up some basic cxml. To do this, I created a simple class that supports &lt;a href="http://msdn.microsoft.com/en-us/library/ms950721.aspx" target="_blank"&gt;XmlSerialization&lt;/a&gt; that provides the basic infrastructure to create a collection. This way, I can build my collection in code, then simply return the serialized version of the collection through my handler.&lt;/p&gt;  &lt;p&gt;OK, next I needed to populate my items. For this I simply load a public Flickr RSS URI, use a &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx" target="_blank"&gt;LINQ&lt;/a&gt; to convert the Flickr RSS format to my new collection format, preserving key information such as the href’s of the images, as we’ll need that later.&lt;/p&gt;  &lt;p&gt;Now, onto the facets. One of the most powerful attributes of Pivot is the ability to search and discover information from your collection using facets. For my Flickr collection, the most meaningful facets are those that exist in the names of the photos I’ve uploaded, so I created a very simple keyword extractor, to build my facets.&lt;/p&gt;  &lt;p&gt;Now finally, I need to convert the images to a set of DeepZoom Images, and all of the DeepZoom Images into a DeepZoom Collection. To this, I need to get a hold of the DeepZoomTools.dll that comes with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=457B17B7-52BF-4BDA-87A3-FA8A4673F8BF&amp;amp;displaylang=en" target="_blank"&gt;Deep Zoom Composer&lt;/a&gt;. Once I have that, I simply iterate through my collection, and build the DZI’s and DZC from the details I have about my images.&lt;/p&gt;  &lt;p&gt;And I’m done!&lt;/p&gt;  &lt;p&gt;Now, the last thing to discuss is the way I serve up the files that I’ve built in my Windows Azure web role, under the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.localresource.aspx" target="_blank"&gt;LocalResource&lt;/a&gt;. To do this, I have a simple function in my handler which says:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If the request is for a cxml, then build a cxml&lt;/li&gt;    &lt;li&gt;If the request is not for a cxml, then it must be a request from Pivot for either the DZC or a DZI, so simply serve up the file.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Voila! Give it a shot for yourself:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://davidlempivot.cloudapp.net/FlickrCollection.cxml?id=85482401@N00" href="http://davidlempivot.cloudapp.net/FlickrCollection.cxml?id=85482401@N00"&gt;http://davidlempivot.cloudapp.net/FlickrCollection.cxml?id=85482401@N00&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Simply put your FlickRss ID in place of mine, and plug the URL into Pivot like I have below, and you’re Windows Azure Dynamic Flickr Collection is served up!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/BuildYourOwnPivotServerinWindowsAzure_12A2/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/BuildYourOwnPivotServerinWindowsAzure_12A2/image_thumb.png" width="409" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Sample code is &lt;a href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/Blog%20Samples/DynamicCollection.zip" target="_blank"&gt;here&lt;/a&gt;, usual disclaimers apply in terms of lack of error handling, general crud’iness, terrible camel casing! ;)&lt;/p&gt;  &lt;p&gt;Enjoy! &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f6d00cfe-7557-4769-9c57-8d6d77f155e8" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live+Labs" rel="tag"&gt;Live Labs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Pivot" rel="tag"&gt;Pivot&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dynamic+Server" rel="tag"&gt;Dynamic Server&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9996605" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>New Gig!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/03/02/new-gig.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/03/02/new-gig.aspx</id><published>2010-03-02T00:52:38Z</published><updated>2010-03-02T00:52:38Z</updated><content type="html">&lt;p&gt;One of the things I love about &lt;a href="https://careers.microsoft.com/" target="_blank"&gt;working for Microsoft&lt;/a&gt; is the amazing amounts of opportunity to follow your passions. I’ve been very fortunate over &lt;a href="http://blogs.msdn.com/davidlem/archive/2005/03/05/385738.aspx" target="_blank"&gt;my five years&lt;/a&gt; (yep, I celebrate 5 years at Microsoft this month) to have explored a number of great roles, and today I start off on another great adventure.&lt;/p&gt;  &lt;p&gt;So where am I going?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/NewGig_ED4F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/NewGig_ED4F/image_thumb.png" width="396" height="140" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://livelabs.com/" target="_blank"&gt;Microsoft Live Labs&lt;/a&gt;! More specifically, to go work on the &lt;a href="http://www.getpivot.com/" target="_blank"&gt;Pivot&lt;/a&gt; project.&lt;/p&gt;  &lt;p&gt;Why am I going?&lt;/p&gt;  &lt;p&gt;To springboard off the amazing &lt;a href="http://blogs.msdn.com/davidlem/archive/2008/12/06/i-ve-changed-teams-and-jobs.aspx" target="_blank"&gt;experience I had at Windows Azure&lt;/a&gt;, and at a more fundamental level, the journey I started when I joined Microsoft. Being able to traverse the disciplines of evangelism, product management and engineering at the level Microsoft performs at is very rare, especially for someone who has spent the majority of their time in software engineering. Prior to joining Microsoft, I only ever worked in technical roles, so being able to contribute in so many ways is not only very unique to Microsoft but also hugely rewarding. &lt;/p&gt;  &lt;p&gt;So wish me luck! And stay tuned for much Pivot goodness! :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6d0a90e0-7df1-4f0c-9de5-47d283eb131b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live+Labs" rel="tag"&gt;Live Labs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Pivot" rel="tag"&gt;Pivot&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9971211" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Australia, here I come… again!?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2010/01/28/australia-here-i-come-again.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2010/01/28/australia-here-i-come-again.aspx</id><published>2010-01-27T23:45:05Z</published><updated>2010-01-27T23:45:05Z</updated><content type="html">&lt;p&gt;I’m so excited, I just can’t hide it! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/AustraliahereIcomeagain_DD6C/2010-01-27%2015-40-10.348_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2010-01-27 15-40-10.348" border="0" alt="2010-01-27 15-40-10.348" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/AustraliahereIcomeagain_DD6C/2010-01-27%2015-40-10.348_thumb.jpg" width="405" height="230" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And neither could &lt;a href="http://blogs.msdn.com/acoat/default.aspx" target="_blank"&gt;Coatesy&lt;/a&gt;!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://blogs.msdn.com/acoat/archive/2010/01/27/windows-azure-user-group-briefings.aspx" href="http://blogs.msdn.com/acoat/archive/2010/01/27/windows-azure-user-group-briefings.aspx"&gt;http://blogs.msdn.com/acoat/archive/2010/01/27/windows-azure-user-group-briefings.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s right, I’m being crated up and shipped back home to &lt;a href="http://en.wikipedia.org/wiki/Terra_Australis" target="_blank"&gt;Terra Australis&lt;/a&gt; for a week of &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; goodness from the 22nd of Feb to the 25th of Feb. &lt;/p&gt;  &lt;p&gt;Please check-out Coatesy’s blog for all the deets and I look forward to seeing everyone very soon!&lt;/p&gt;  &lt;p&gt;Woo hoo! :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:452c4ae5-f6b4-482c-adba-5a6a56f2d1db" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Launch" rel="tag"&gt;Launch&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Australia" rel="tag"&gt;Australia&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9954400" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Expression Blend 3 and SketchFlow! Wow!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx</id><published>2009-12-16T23:42:22Z</published><updated>2009-12-16T23:42:22Z</updated><content type="html">&lt;p&gt;So I’m doing some prototyping at the moment and one of the most frustrating aspects of getting started with any prototype is capturing the:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Flow&lt;/li&gt;    &lt;li&gt;Main Screens&lt;/li&gt;    &lt;li&gt;Specification&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I think in mind maps, so one of my biggest problems when starting a new project is setting up the high-level map of how everything is going to connect together. &lt;/p&gt;  &lt;p&gt;The second issue I have is I want to capture the essence and linkage of each screen, but not in painful detail, just enough so someone can infer the underlying data model and application behavior.&lt;/p&gt;  &lt;p&gt;So when I heard about &lt;a href="http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx" target="_blank"&gt;Sketchflow&lt;/a&gt; (jeez, I sound like one of the guys of those late night infomercials, I promise, no blanket that doubles as clothing) I was immediately intrigued. &lt;/p&gt;  &lt;p&gt;Four things that are awesome about Sketchflow with respect to my needs are:&lt;/p&gt;  &lt;p&gt;1. The Sketchflow Map&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb.png" width="444" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This wonderful little feature lets you define new screens by simply adding them to the map, then connect those to other screens. So building your high level flow is super simple and fast!&lt;/p&gt;  &lt;p&gt;2. Sketch Tools&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_1.png" width="448" height="343" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So building the above page, which was created by simply creating a new screen on the map was also dead easy. There is a wonderful little toolbox of controls that I can use to build out these pages quickly:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_2.png" width="221" height="496" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. The Run-time Experience&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_3.png" width="460" height="374" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So I just hit F5 and the project gets spun-up as a little web project in the player! Awesome, I can then try out the ergonomics of the sketch, provide feedback on what I like/don’t like, and navigate from page to page.&lt;/p&gt;  &lt;p&gt;4. Export to Word!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_4.png" width="255" height="352" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_5.png" width="456" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So this is awesome, I’ve built my flow, played around with the ergo and feel, and I’m ready to send it to my boss in a form he can consume so the cash flows out of his pocket into my “build it” budget!&lt;/p&gt;  &lt;p&gt;Now, there are a whole bunch of things Expression Blend 3 + Sketchflow does in addition to what I’ve captured above, but what is the most important aspect is how easy it is to use and how much you can achieve in a very short period of time. This is the key to me using for my initial needs, but also what will keep me using it to learn more about what else it does.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ec6101d3-acc6-4951-885e-43b77f9965f4" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Product+Development" rel="tag"&gt;Product Development&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Expression+Blend" rel="tag"&gt;Expression Blend&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Sketchflow" rel="tag"&gt;Sketchflow&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937933" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Remote Command Service for Windows Azure!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx</id><published>2009-12-12T00:56:48Z</published><updated>2009-12-12T00:56:48Z</updated><content type="html">&lt;p&gt;So a while back I blogged a little sample code on how to get some info about what’s happening inside your instance using a simple process within a web page.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Looking Inside Windows Azure!" href="http://blogs.msdn.com/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx" target="_blank"&gt;Looking Inside Windows Azure!&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Well, I decided to refresh this code sample using one of my favorite features, &lt;a href="http://msdn.microsoft.com/en-us/library/ee758711.aspx#InputEndpoint" target="_blank"&gt;InputEndpoints&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;So let’s take a quick tour of the sample. At a high level, this is what’s going on:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_thumb_2.png" width="435" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s dig deeper. The client is a simple console app, and the service is a worker role that exposes a TCP InputEndpoint, connected to a socket. The socket accepts a single inbound client connection, and then executes commands on the local instance and returns the results to the client. &lt;/p&gt;  &lt;p&gt;So, I can fire up my client and connect to my service like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_thumb.png" width="438" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And execute commands such as DIR or NETSTAT (&lt;a href="http://technet.microsoft.com/en-us/magazine/dd630943.aspx" target="_blank"&gt;or others you could try&lt;/a&gt;), against the local VM. This is very handy when trying to debug local instance issues.&lt;/p&gt;  &lt;p&gt;You can download the code &lt;a href="http://cid-e4d160b012d97011.skydrive.live.com/self.aspx/.Public/BossProd.zip" target="_blank"&gt;here&lt;/a&gt;. It contains the code for the VS2010 Worker Role cloud service project and the simple console client.&lt;/p&gt;  &lt;p&gt;Also, you’ll need to update the diagnostics connection string before deploying it to the cloud, and I’d suggest deploying the worker role with a single instance to avoid any load balanced strangeness.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a9d3d7aa-56b4-4448-a84b-2feebabd53bf" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935971" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>My PDC09 Session – Code and Clip!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx</id><published>2009-12-10T23:20:00Z</published><updated>2009-12-10T23:20:00Z</updated><content type="html">&lt;P&gt;So one thing I’ve been terribly slack about since returning from PDC09 has been posting my session clip and code snippets for folks to download/reference, so my sincerest apologies, and without further ado:&lt;/P&gt;
&lt;P&gt;1. &lt;A href="http://microsoftpdc.com/Sessions/SVC37" target=_blank mce_href="http://microsoftpdc.com/Sessions/SVC37"&gt;My session&lt;/A&gt; &lt;/P&gt;
&lt;OBJECT data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAIAADYEwAA2BMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" width=800 height=450 type=application/x-silverlight-2&gt;
    &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" mce_href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" mce_src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"&gt; &lt;/a&gt; &lt;/OBJECT&gt;
&lt;P&gt;2. &lt;A href="http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVC37.pptx" target=_blank mce_href="http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVC37.pptx"&gt;My slide deck&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;3. &lt;A href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/PDC09%20Code%20Snippets/CodeSnippets.zip" target=_blank mce_href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/PDC09%20Code%20Snippets/CodeSnippets.zip"&gt;My code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4. My banner (picture care of &lt;A href="http://www.flickr.com/photos/jldavid/" target=_blank mce_href="http://www.flickr.com/photos/jldavid/"&gt;JLD&lt;/A&gt;)!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/jldavid/4107952369/in/set-72157622658417519/" target=_blank mce_href="http://www.flickr.com/photos/jldavid/4107952369/in/set-72157622658417519/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=MyPDCBanner border=0 alt=MyPDCBanner src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/MyPDC09SessionCodeandClip_D7C9/MyPDCBanner_3.jpg" width=416 height=278 mce_src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/MyPDC09SessionCodeandClip_D7C9/MyPDCBanner_3.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Let me know if you have any issues, otherwise, enjoy! :)&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:93c879d1-8271-434a-8ef8-9402b9b848f0 class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/PDC09" rel=tag mce_href="http://technorati.com/tags/PDC09"&gt;PDC09&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Windows+Azure" rel=tag mce_href="http://technorati.com/tags/Windows+Azure"&gt;Windows Azure&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935427" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Guy Shahine from the Windows Azure Dev Team!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx" /><id>http://blogs.msdn.com/b/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx</id><published>2009-11-24T02:44:28Z</published><updated>2009-11-24T02:44:28Z</updated><content type="html">&lt;p&gt;Guy has started blogging!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gshahine/WindowsLiveWriter/ThreeDaysatMicrosoftsPDC_1014E/Guy%20Shahine.jpg"&gt;&lt;img title="Guy Shahine" border="0" alt="Guy Shahine" src="http://blogs.msdn.com/blogfiles/gshahine/WindowsLiveWriter/ThreeDaysatMicrosoftsPDC_1014E/Guy%20Shahine_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://blogs.msdn.com/gshahine/" href="http://blogs.msdn.com/gshahine/"&gt;http://blogs.msdn.com/gshahine/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Go check out his &lt;a href="http://blogs.msdn.com/gshahine/archive/2009/11/22/3-days-at-microsoft-s-pdc-09.aspx" target="_blank"&gt;first post&lt;/a&gt;, and stay tuned for more information from the belly of the beast!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:88b7b646-c75e-4cbc-8493-c77f40ddd189" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dev+Team" rel="tag"&gt;Dev Team&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927692" width="1" height="1"&gt;</content><author><name>Dave Lemphers</name><uri>http://blogs.msdn.com/davidlem/ProfileUrlRedirect.ashx</uri></author></entry></feed>