<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David L's Blog</title><link>http://blogs.msdn.com/b/davidlem/</link><description> &amp;nbsp;</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.21163 (Build: 5.6.583.21163)</generator><item><title>Goodbye Microsoft</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/09/08/goodbye_2D00_microsoft.aspx</link><pubDate>Wed, 08 Sep 2010 06:48:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10059173</guid><dc:creator>davidlem</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=10059173</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/09/08/goodbye_2D00_microsoft.aspx#comments</comments><description>&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;</description></item><item><title>Getting Started with Parallel Programming in .NET 4</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/05/15/getting-started-with-parallel-programming-in-net-4.aspx</link><pubDate>Fri, 14 May 2010 16:51:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10013225</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=10013225</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/05/15/getting-started-with-parallel-programming-in-net-4.aspx#comments</comments><description>&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;</description></item><item><title>WCF, REST and URL Rewriting with Windows Azure!</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/04/26/wcf-rest-and-url-rewriting-with-windows-azure.aspx</link><pubDate>Sun, 25 Apr 2010 22:48:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10002265</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=10002265</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/04/26/wcf-rest-and-url-rewriting-with-windows-azure.aspx#comments</comments><description>&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;</description></item><item><title>Build Your Own Pivot Server in Windows Azure!</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/04/16/build-your-own-pivot-server-in-windows-azure.aspx</link><pubDate>Thu, 15 Apr 2010 16:07:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9996605</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9996605</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/04/16/build-your-own-pivot-server-in-windows-azure.aspx#comments</comments><description>&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;</description></item><item><title>New Gig!</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/03/02/new-gig.aspx</link><pubDate>Tue, 02 Mar 2010 00:52:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9971211</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9971211</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/03/02/new-gig.aspx#comments</comments><description>&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;</description></item><item><title>Australia, here I come… again!?</title><link>http://blogs.msdn.com/b/davidlem/archive/2010/01/28/australia-here-i-come-again.aspx</link><pubDate>Wed, 27 Jan 2010 23:45:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9954400</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9954400</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2010/01/28/australia-here-i-come-again.aspx#comments</comments><description>&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;</description></item><item><title>Expression Blend 3 and SketchFlow! Wow!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx</link><pubDate>Wed, 16 Dec 2009 23:42:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937933</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9937933</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx#comments</comments><description>&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;</description></item><item><title>Remote Command Service for Windows Azure!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx</link><pubDate>Sat, 12 Dec 2009 00:56:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9935971</guid><dc:creator>davidlem</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9935971</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx#comments</comments><description>&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;</description></item><item><title>My PDC09 Session – Code and Clip!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx</link><pubDate>Thu, 10 Dec 2009 23:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9935427</guid><dc:creator>davidlem</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9935427</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx#comments</comments><description>&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;</description></item><item><title>Guy Shahine from the Windows Azure Dev Team!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx</link><pubDate>Tue, 24 Nov 2009 02:44:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9927692</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9927692</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx#comments</comments><description>&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;</description></item><item><title>Windows Azure, MSBuild, and Lotsa Files!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/11/04/windows-azure-msbuild-and-lotsa-files.aspx</link><pubDate>Wed, 04 Nov 2009 00:10:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917067</guid><dc:creator>davidlem</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9917067</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/11/04/windows-azure-msbuild-and-lotsa-files.aspx#comments</comments><description>&lt;p&gt;So I’ve been working on a project, and I came across a little challenge that I thought folks may be interested in the solution to.&lt;/p&gt;  &lt;p&gt;So, the problem is this, I have a dependency on a bunch of files that I need access to from my worker role in the cloud and dev fabric. I have all these files in a folder, and the folder has a sub-directory structure that I want preserve inside my project.&lt;/p&gt;  &lt;p&gt;Question! How do I add this folder to my project, with the directory structure preserved, and have all the files “Copy To Output Directory” property set to something, like in my example,&amp;#160; “Copy Always”, so it gets taken up to the cloud with my package? Easy… well, kinda.&lt;/p&gt;  &lt;p&gt;First step, from Windows Explorer, drag said folder into your role project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb.png" width="435" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will add the folder into your project, with the folder structure in place, however the properties of the files will not be set, and therefore, when you publish your project, the files won’t be picked up in your package.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_1.png" width="243" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, second step is, exclude the folder from your project. Don’t delete it! This will remove it from the disk, you just want to remove the reference of it from the csproj file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_2.png" width="158" height="409" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next, you need to unload your project.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_3.png" width="157" height="407" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then edit the csproj file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_4.png" width="195" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Inside the csproj, scroll down to the area where you find all the ItemGroup elements:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_5.png" width="400" height="95" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Add a new ItemGroup element, say above the app.config one (it doesn’t matter where), and set it to include your folder like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_6.png" width="399" height="116" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;What you’re telling VS to do is, include the &amp;quot;Melbourne Photos” folder, recursively, to the project, with the CopyToOutputDirectory property set to Always.&lt;/p&gt;  &lt;p&gt;When you reload the project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_7.png" width="222" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You will notice all the files have been included in the project, and the Copy to Output Directory property has been set to Copy always for all of them!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureMSBuildandLotsaFiles_DB94/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/WindowsAzureMSBuildandLotsaFiles_DB94/image_thumb_8.png" width="134" height="476" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;When you publish your role, all these files will be taken up with your project, and accessible by your code!&lt;/p&gt;  &lt;p&gt;Big thanks to &lt;a href="http://social.msdn.microsoft.com/Profile/en-US/?user=Guy%20Shahine&amp;amp;referrer=http%3a%2f%2fsocial.msdn.microsoft.com%2fForums%2fen-US%2fwindowsazure%2fthread%2f1ea5f984-b239-494a-9e6b-5784bbea7f62&amp;amp;rh=YJaTNTCtAIeHDeA%2fY%2fJWhPv3qDA5KbwGp7yT0UDYLX4%3d&amp;amp;sp=forums" target="_blank"&gt;Guy&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/daniwang/default.aspx" target="_blank"&gt;Dan&lt;/a&gt; for helping with this!&lt;/p&gt;  &lt;p&gt;Enjoy! :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917067" width="1" height="1"&gt;</description></item><item><title>Documentation Driven Development!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/09/24/documentation-driven-development.aspx</link><pubDate>Wed, 23 Sep 2009 20:03:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898536</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9898536</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/09/24/documentation-driven-development.aspx#comments</comments><description>&lt;p&gt;So I was having lunch with our Programmer Writer, Tamra Myers the other day, and we got onto the conversation of documentation. I’m a huge Huge HUGE fan of documentation, in fact, when I coded in anger, I was known for my extensive, well written, downright Elizabethan doco. &lt;/p&gt;  &lt;p&gt;I was then having lunch with &lt;a href="http://simonguest.com/pages/bio.aspx" target="_blank"&gt;Simon Guest&lt;/a&gt; on a different day and we got onto the topic of doco too, in fact, we were talking about some research he had done into how much of MSDN doco actually had code samples! You might start seeing a trend emerge… yes, I love to eat lunch with passionate doco people! &lt;/p&gt;  &lt;p&gt;So what has this got to do with the price of &lt;a href="http://en.wikipedia.org/wiki/Tzatziki" target="_blank"&gt;Tzatziki&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Redmond,_Washington" target="_blank"&gt;Redmond&lt;/a&gt;? Well, we all strive (in software engineering anyway) to build technology that people can use, or at least, work out how to use. If you build software, especially developer platform software, it’s not always easy to build highly intuitive APIs and components. So what’s left is the doco. The doco is the first port of call for the user of developer goo, in there, they can orientate themselves around the nuances and intricacies of a component and the bend it to their will. However, if you don’t provide doco, well then, you’re putting the developer user in a world of pain, and forcing them to make a choice. They can either try and hack away, using coincidental discovery to work out how your thing works, or try and find a blog post from someone who has. If they choose the former, they could waste a bunch of time and never hit paydirt, if the they choose the latter, there is always the chance that the code they are using is not optimal, or inline with the way the component/API was designed. &lt;/p&gt;  &lt;p&gt;So why is there such poor doco? Well first of all, the engineering process if fundamentally broken. It starts with requirements, then specs, then code, then test, then release, then somewhere along the way, doco. Now, it’s like running a marathon, they always tell you to stretch and cool down afterwards, but for most of us, when you hit the finish line, you just want to pass out. Coding is the same, when you’ve squashed that last bug, and checked in your final build, the last thing you want to do is write your coding memoirs. However, herein lies the travesty! Because most of us don’t summon the last drops of energy to write good doco, all our hard work is wasted because know one knows where to find the secret red button that can transport us through space and time. Instead they are left to prod around the facade and try and find the switch. &lt;/p&gt;  &lt;p&gt;How do you solve the problem? Start with doco first! Just like the industry realized that by putting testing after development, you’re putting the cart before the horse, putting doco before testing makes sure you stay true to what the customer is meant to have and what it’s meant to do. And more important, you can see how easy or usable your stuff is before you code it. I mean, how many of us have written a component, then given it to someone, had them ask us for a quick sample, then as you develop the sample you realize, “Damn, this is hard to use” or “I could have added a method that would have reduced this from 10 lines to 2 lines of code”? By starting with how should someone use the component, what it does, what are the inputs/outputs, exceptions, expected behavior, you have more than just the functional spec to work against. And, most importantly, when you’re ready to release, you have the best doco on earth, better than the code! To the customer anyway ;)&lt;/p&gt;  &lt;p&gt;By the way, if you want to read more on this topic, check out the following paper:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://portal.acm.org/citation.cfm?id=1042420" target="_blank"&gt;Documentation Driven Development for Complex Real-Time Systems&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now go forth and doco!&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:45d481a8-5acd-448a-9111-e31d6d711c82" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Engineering" rel="tag"&gt;Engineering&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898536" width="1" height="1"&gt;</description></item><item><title>What’s Your Cloud Address?</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/09/02/what-s-your-cloud-address.aspx</link><pubDate>Tue, 01 Sep 2009 19:20:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9889946</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9889946</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/09/02/what-s-your-cloud-address.aspx#comments</comments><description>&lt;p&gt;One of the many challenges to building a cloud is your addressing strategy.&lt;/p&gt;  &lt;p&gt;Now, addressing is an issue for any public facing Internal application, but for clouds, the issues increase because of the dynamic nature of deploying applications that require publicly addressable endpoints at huge scale.&lt;/p&gt;  &lt;p&gt;Let’s start by thinking about a traditional web application, whether it be large or small. At the early design phase, you are able to identify the front end roles that will require public IP space. You can then start capacity planning to identify your peak load forecasts, how many front end nodes you will need to support max load, then make the appropriate request and allocation. As the process for allocating IP space from the public range can take many months, you want to conclude this process early in the design phase.&lt;/p&gt;  &lt;p&gt;Secondly is the scarcity of resources. If you rely on IPv4, your going to have to be very sparing of your use of public space, as IPv4 is not only very scarce, but it’s expensive. IPv6 on the other hand is abundant, simplifies your network strategy (as you don’t have to necessarily NAT addresses etc), and is easy to acquire. On the flip side, you need to do more planning and up front design to ensure your system, both hardware and software, can accommodate IPv6 addressing. &lt;/p&gt;  &lt;p&gt;And now, finally onto the cloud part. In a cloud environment, the tenant, that is, the application being deployed, requires a public IP address. The may have many back end nodes, but for the most part, these will sit behind a load balanced front end node, and therefore, a public IP space. You could try and virtualize that whole layer, and instead, have a primary “head” IP address, where all traffic is routed through, then split based on host headers, but that isn’t going to scale very well. So instead, each customer should have a public IP address for each publicly exposed endpoint, but then, you don’t know how many customer exposed endpoints your going to have during design, or deployment for that fact. You could have 100, you could have 1,000,000. &lt;/p&gt;  &lt;p&gt;Using strategies like just-in-time allocation, based on historical usage and prediction is a good approach, but requires a level of sophistication, or you can acquire lots of space up front, but this can be costly and wasteful. Ideally you want to use a mixture of both, establishing a small unit of allocation, something like a /20 or higher space, then constantly measuring the watermark and determining when you need to add more, based on prior use patterns. This way, you know how early you need to make the request, and you don’t over allocate. &lt;/p&gt;  &lt;p&gt;Food for thought! :)&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:0ed81578-689e-4a16-900e-1f556b0c1994" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Building+a+Cloud" rel="tag"&gt;Building a Cloud&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9889946" width="1" height="1"&gt;</description></item><item><title>Cloud Apprenticeship!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/08/27/cloud-apprenticeship.aspx</link><pubDate>Wed, 26 Aug 2009 19:54:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9885583</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9885583</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/08/27/cloud-apprenticeship.aspx#comments</comments><description>&lt;p&gt;So I was talking to an old friend yesterday about building software, and we both came to the conclusion that there are some things you need to learn:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;From books&lt;/li&gt;    &lt;li&gt;From others&lt;/li&gt;    &lt;li&gt;From doing&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We then got onto the topic of cloud computing, he works in the same space, so it was a great context to place on our conversation.&lt;/p&gt;  &lt;p&gt;Taking the thinking further, we both realized that when we decomposed our jobs into buckets, we arrived at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Working with customers – &lt;/strong&gt;This is the most important element, and the only way to sharpen your skills are to engage real customers, books are pretty much useless in this area, and while you can learn some tricks from others, nothing beats logging hours in the field.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Core engineering&lt;/strong&gt; – This is bread and butter stuff, and doesn’t really change depending on what your working on. And it definitely get’s ticks in all three categories from above.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Working in a team&lt;/strong&gt; – Again, this doesn’t change all that much, working with your own team and other teams is not necessarily specific to cloud, but when you think of it in terms of the list above, you could learn a little about it in books, but nothing compares to learning from others and from doing.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We then got to the unique parts when working in the cloud, and this ended up being more about trading lessons learned, and while it definitely leverages the core concepts above, there are some aspects which I’ve never encountered in any other type of project.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Think big! &lt;/strong&gt;Very few projects work at the scale of cloud computing projects. When you take into account the sheer size of the data center deployments, the hardware, facilities, connectivity, nothing can prepare you for the types of problems you will need to solve in terms of core engineering and software development. How do you deploy, manage, test, recover, fail-over, charge, audit, a massive, geographically dispersed, mega-distributed system? You don’t only have to build new software, you need to build new ways to test, deploy, manage and support it. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Shipping!&lt;/strong&gt; The cloud world is not like the packaged product world, it’s not even like the online services world. Not only do you need to think in small bite sized chunks, to reduce the integration and dependency workload and risk, but you also need to plan for how you get that chunk out to thousands of live servers running live customer apps, in a completely passive and non-intrusive/non-disruptive way. You also have the incumbent hardware that comes with cloud, so not only are you shipping software, your rolling out hardware, and lots of it, to places you never knew about before, I liken it to landing jumbo jets on small islands. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Simplicity&lt;/strong&gt;! If you can’t describe how you plan to define, develop, test, deploy, test, deploy, test, deploy again, and finally test once more, troubleshoot, maintain, update, and finally decommission the feature you want to build, to a layperson, then think harder or don’t do it. When you’re working in an environment where every bug is a potential go-home bug (the kind of bug that wipes every users data out or something else so catastrophic that you can never recover, you just go home and find a new job), you need to raise the bar on all aspects, and complexity is usually the root of all evil &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Test! &lt;/strong&gt;I have a saying that I only started using when I started working in the cloud, “Give me a tester before you give me a dev”. The reality of the cloud is you cannot and will not ever test enough, the best you can do is test lots. And the types of tests are so diverse, starting from a one box environment for the developer, to check-in tests for unit completeness, integration tests for fit and flow, perf/scale/load tests, environment tests for datacenter compatibility, regression testing, pen testing both at the edge and at the platform boundaries. Key take away is that quality matters so much more in the cloud because the potential impact of a bug is much larger and unpredictable that most other environments. You also want to build self-testing into your code, you want your code/feature to be cognizant of where it is, so it can ask questions of itself, and react accordingly. Think of it like the safety switch on a power point, make sure your code doesn’t need to touch the iron to know it’s hot!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Anyhoo, just some thoughts from my time as an apprentice of the cloud. &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:6ed2a696-17f9-4fe7-8f30-e50737a579b2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Thoughts+on+the+Cloud" rel="tag"&gt;Thoughts on the Cloud&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9885583" width="1" height="1"&gt;</description></item><item><title>Windows Azure and Live ID Auth!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/08/26/windows-azure-and-live-id-auth.aspx</link><pubDate>Tue, 25 Aug 2009 19:43:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9883849</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9883849</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/08/26/windows-azure-and-live-id-auth.aspx#comments</comments><description>&lt;p&gt;OK, so MattT (thanks for the feedback on my blog too Matt :)) pinged me and asked if something had changed in the way Live ID auth worked in Windows Azure.&lt;/p&gt;  &lt;p&gt;He was looking around Bing for some samples, and came across this &lt;a href="http://dev.live.com/blogs/devlive/archive/2008/11/12/432.aspx" target="_blank"&gt;post&lt;/a&gt; but couldn’t get it working. You’re right Matt, there was a change.&lt;/p&gt;  &lt;p&gt;In late May, 2009, we made a change to the way developers access Live ID, see this post:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Windows Azure - Changes to Alerts, Analytics, and Windows Live ID" href="http://blogs.msdn.com/windowsazure/archive/2009/05/29/changes-to-alerts-analytics-and-windows-live-id-integration.aspx"&gt;Windows Azure - Changes to Alerts, Analytics, and Windows Live ID&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So how do you code it up?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=91761" target="_blank"&gt;Download the appropriate SDK&lt;/a&gt; (I downloaded the CS one)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2. &lt;/strong&gt;Go to &lt;a href="http://windows.azure.com"&gt;http://windows.azure.com&lt;/a&gt; and create a new Live Services project, make sure you select &lt;u&gt;Live Services: Existing APIs&lt;/u&gt; as your project type&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureandLiveIDAuth_88AB/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/WindowsAzureandLiveIDAuth_88AB/image_thumb.png" width="440" height="129" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 3.&lt;/strong&gt; Enter the details of your Web Role project (you should have created this already, it’s your &lt;a href="http://xxxx.cloudapp.net"&gt;http://xxxx.cloudapp.net&lt;/a&gt; url). The domain should be the straight “xxxx.cloudapp.net” part, in the returnUrl field, enter &lt;a href="http://xxxx.cloudapp.net:81/webauth-handler.aspx"&gt;http://xxxx.cloudapp.net:81/webauth-handler.aspx&lt;/a&gt; just while you do local machine testing. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureandLiveIDAuth_88AB/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/WindowsAzureandLiveIDAuth_88AB/image_thumb_1.png" width="444" height="132" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 4.&lt;/strong&gt; Now, while I tested it locally, I had to do a quick update to my hosts file to point my url (crmintegration.cloudapp.net) to 127.0.0.1 so I could test it locally. Just create a pointer to your url in your hosts file to point to 127.0.0.1 just while you test locally. This will enable the above &lt;a href="http://xxxx.cloudapp.net:81/webauth-handler.aspx"&gt;http://xxxx.cloudapp.net:81/webauth-handler.aspx&lt;/a&gt; returnUrl to work.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureandLiveIDAuth_88AB/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/WindowsAzureandLiveIDAuth_88AB/image_thumb_2.png" width="439" height="287" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 5. &lt;/strong&gt;Create a Web Role project, and import the WindowsLiveLogin.cs, webauth-handler.aspx and webauth-handler.aspx.cs files from the Windows Live SDK sample directory. You’ll need these to process the return details from Live ID.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureandLiveIDAuth_88AB/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/WindowsAzureandLiveIDAuth_88AB/image_thumb_3.png" width="233" height="352" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 6. &lt;/strong&gt;Run and test, and make sure it’s connecting to Live ID and returning a Id.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 7.&lt;/strong&gt; Deploy to the cloud, remove the local pointer from your hosts file, and update your Live Services returnUrl to not include the port 81 reference. (it should look like &lt;a href="http://xxxx.cloudapp.net/webauth-handler.aspx"&gt;http://xxxx.cloudapp.net/webauth-handler.aspx&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;To get everyone started, here is a &lt;a href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/Blog%20Samples/CRMIntegration.zip" target="_blank"&gt;quick sample project&lt;/a&gt; that has all the bits in there. You just need to update the web.config with your Application ID and secret from the Live Services page for your project in the Windows Azure portal.&lt;/p&gt;  &lt;p&gt;Ping me with questions/issues.&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:476f0600-ceb6-4fc2-bb4d-1ad23ce6322e" 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+ID+SDK" rel="tag"&gt;Live ID SDK&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9883849" width="1" height="1"&gt;</description></item><item><title>Tracing Windows Azure Apps to Storage</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/08/25/tracing-windows-azure-apps-to-storage.aspx</link><pubDate>Mon, 24 Aug 2009 23:05:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9882934</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9882934</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/08/25/tracing-windows-azure-apps-to-storage.aspx#comments</comments><description>&lt;p&gt;So one of the things I like to do, all of the time, is trace. It started when I was a little child, and the rest of the kids could draw really good and stuff, and I couldn’t, so I would get pictures of horses and trace around them…&lt;/p&gt;  &lt;p&gt;Now that I’m older, I still can’t draw, let alone code, very well, so I still trace.&lt;/p&gt;  &lt;p&gt;In my Windows Azure apps, I like to trace to my own log files, it’s not the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.writetolog.aspx"&gt;RoleManager.WriteToLog&lt;/a&gt; isn’t good, but I have code from other apps that already uses the trace infrastructure and pragma concepts, so having calls to &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.writeline.aspx"&gt;Trace.WriteLine&lt;/a&gt; simply work as normal is a big attraction. &lt;/p&gt;  &lt;p&gt;So how do you do this?&lt;/p&gt;  &lt;p&gt;First, simply create your own custom trace listener and have it write to Windows Azure Storage.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/TracingWindowsAzureAppstoStorage_85E1/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/TracingWindowsAzureAppstoStorage_85E1/image_thumb_2.png" width="432" height="314" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then load it into your role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/TracingWindowsAzureAppstoStorage_85E1/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/TracingWindowsAzureAppstoStorage_85E1/image_thumb_3.png" width="435" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And now when you call the Trace.WriteLine for example, it will call your custom trace handler too.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/TracingWindowsAzureAppstoStorage_85E1/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/TracingWindowsAzureAppstoStorage_85E1/image_thumb_4.png" width="442" height="157" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Also, the sample below also has a little UI web role so you can see what’s being logged!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/TracingWindowsAzureAppstoStorage_85E1/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/TracingWindowsAzureAppstoStorage_85E1/image_thumb.png" width="440" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find the zip archive of the project &lt;a href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/Blog%20Samples/TraceData.zip" target="_blank"&gt;here&lt;/a&gt;. I’ve scrubbed the .cscfg file so you can add your own links into it for your storage account and test URL for the pic it downloads.&lt;/p&gt;  &lt;p&gt;Enjoy :) &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9882934" width="1" height="1"&gt;</description></item><item><title>Save Your Word Docs to Windows Azure Blobs!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/07/20/save-your-word-docs-to-windows-azure-blobs.aspx</link><pubDate>Sun, 19 Jul 2009 22:10:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9840322</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9840322</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/07/20/save-your-word-docs-to-windows-azure-blobs.aspx#comments</comments><description>&lt;p&gt;So &lt;a href="http://faves.com/users/mohit" target="_blank"&gt;Mohit&lt;/a&gt; and I were at WPC last week, and while we were hanging in the booth, a customer came up with a very interesting problem.&lt;/p&gt;  &lt;p&gt;Essentially, the customer needed to be able to have their Word documents saved to Windows Azure, in a format that could be opened in Word, but also consumed by a legacy Java application.&lt;/p&gt;  &lt;p&gt;I promised I would see how hard it would be, and so while waiting for Yil to cook Sunday lunch, I had a quick crack at it.&lt;/p&gt;  &lt;p&gt;First step, I created my own ribbon in Office, using the new Office Add-in projects in VS 2010.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/SaveYourWordDocstoWindowsAzureBlobs_AB29/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/SaveYourWordDocstoWindowsAzureBlobs_AB29/image_thumb.png" width="415" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Added in a ribbon visual designer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/SaveYourWordDocstoWindowsAzureBlobs_AB29/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/SaveYourWordDocstoWindowsAzureBlobs_AB29/image_thumb_1.png" width="420" height="290" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Which ended up looking like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/SaveYourWordDocstoWindowsAzureBlobs_AB29/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/SaveYourWordDocstoWindowsAzureBlobs_AB29/image_thumb_2.png" width="427" height="208" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The code was very easy, essentially on the click event, I saved the contents of the doc to a blob.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/SaveYourWordDocstoWindowsAzureBlobs_AB29/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/SaveYourWordDocstoWindowsAzureBlobs_AB29/image_thumb_3.png" width="433" height="210" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The key part is to call the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.wordopenxml.aspx" target="_blank"&gt;WordOpenXML&lt;/a&gt; method on the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.content.aspx" target="_blank"&gt;ActiveDocument.Content&lt;/a&gt; property, to get the &lt;a href="http://openxmldeveloper.org/" target="_blank"&gt;OpenXML&lt;/a&gt; version of the doc.&lt;/p&gt;  &lt;p&gt;A quick test.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/SaveYourWordDocstoWindowsAzureBlobs_AB29/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/SaveYourWordDocstoWindowsAzureBlobs_AB29/image_thumb_4.png" width="437" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And… you little bewdy. Now, I’ve set the content-type to the docx content type for dramatic effect, as otherwise the XML would just load in my browser, and not let me save it. When I save it to my desktop, I save it as xxx.xml, and when I double click on it, it loads in Word. &lt;/p&gt;  &lt;p&gt;The next step for this would be to create a Web Role to list the documents that have been saved to the blob store, to make it nicer to view, but in terms of proving this little bit of functionality, I’m pretty happy.&lt;/p&gt;  &lt;p&gt;Here is a &lt;a href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/Blog%20Samples/SecureXStoreSave.zip" target="_blank"&gt;link to the code&lt;/a&gt; in case you’re interested.&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:80e3f705-f6a5-4c90-93f7-324a6d993029" 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/Blobs" rel="tag"&gt;Blobs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Office+2007" rel="tag"&gt;Office 2007&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VSTO" rel="tag"&gt;VSTO&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9840322" width="1" height="1"&gt;</description></item><item><title>WPC09 – My Windows Azure Session</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/07/17/wpc09-my-windows-azure-session.aspx</link><pubDate>Fri, 17 Jul 2009 04:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9836577</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9836577</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/07/17/wpc09-my-windows-azure-session.aspx#comments</comments><description>&lt;P&gt;Here is my session from the &lt;A href="http://www.digitalwpc.com/" target=_blank mce_href="http://www.digitalwpc.com/"&gt;WPC09&lt;/A&gt; in New Orleans:&lt;/P&gt;&lt;IFRAME height=326 src="http://www.microsoft.com/video/en/us/player/embed/f1bafdc8-61aa-4c7b-be68-1ddc8c31675f" frameBorder=0 width=430 allowTransparency scrolling=no&gt;&lt;/IFRAME&gt;&lt;BR&gt;&lt;A href="http://www.microsoft.com/video/en/us/details/f1bafdc8-61aa-4c7b-be68-1ddc8c31675f?vp_evt=eref&amp;amp;vp_video=Lap%20around%20Windows%20Azure%2c%20Business%20Edition"&gt;Lap around Windows Azure, Business Edition&lt;/A&gt; 
&lt;P&gt;Big thanks to Eilert Hanoa from Mamut ASA for his help with the session, and to everyone who attended. :)&lt;/P&gt;
&lt;P&gt;Hope everyone enjoyed WPC! :)&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:80eda363-346b-4cf1-a3ff-7353a2aac305 class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/WPC09" rel=tag mce_href="http://technorati.com/tags/WPC09"&gt;WPC09&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=9836577" width="1" height="1"&gt;</description></item><item><title>Windows Azure Project Attire!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/07/10/windows-azure-project-attire.aspx</link><pubDate>Thu, 09 Jul 2009 19:24:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9827068</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9827068</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/07/10/windows-azure-project-attire.aspx#comments</comments><description>&lt;p&gt;So one of my favorite parts of working in the &lt;a href="http://www.microsoft.com/azure/windowsazure.mspx" target="_blank"&gt;Windows Azure&lt;/a&gt; team is the camaraderie that grows when you take a bunch of really smart people and apply them to a big problem. I’m very fortunate to be part of three extremely interesting Windows Azure v-teams (teams assembled for a particular project or work stream); our &lt;a href="http://msdn.microsoft.com/en-us/isv/bb190413.aspx" target="_blank"&gt;TAP&lt;/a&gt; team (I’ll explain a little more about that in a later post), our &lt;a href="http://www.microsoft.com/azure/faq.mspx#pricing" target="_blank"&gt;billing&lt;/a&gt; team, and our &lt;a href="http://blogs.technet.com/msdatacenters/archive/2009/06/29/microsoft-brings-two-more-mega-data-centers-online-in-july.aspx" target="_blank"&gt;deployments&lt;/a&gt; team.&lt;/p&gt;  &lt;p&gt;One thing that I have noticed during the course of this year as we work towards &lt;a href="https://www.ustechsregister.com/pdc09mailinglist/main.aspx" target="_blank"&gt;PDC2009&lt;/a&gt;, is that each team has it’s own dynamic, it’s own challenges and issues, and most of all, it’s own in-jokes. Along the ship path, as the pressure increases, it’s easy to forget to have fun, so the other day, I jumped onto &lt;a href="http://www.zazzle.com/" target="_blank"&gt;Zazzle&lt;/a&gt;, and captured some of the more interesting moments on our road to PDC09 so far. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Filing Bugs Is Free!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My first one comes from what we call a &lt;a href="http://www.eweek.com/c/a/Application-Development/A-Peek-Inside-the-Microsoft-Whidbey-Ship-Room/" target="_blank"&gt;ship room&lt;/a&gt;, which essentially is a regular meeting (we hold ours twice a week for an hour) where everyone involved in shipping the next release (in our case, billing) attends to triage bugs from the previous release, and discuss blocking issues for the upcoming release. Everyone attends; developers, testers, program managers, release managers, everyone. As the billing team is relatively new, not everyone had worked together. Now, as every dev/test knows, filing bugs is not a trivial task, there is a tension between overfiling (carelessly filing bugs which adds work to the triage team and can cause wasted effort) and underfiling (not wanting to file bugs because it may make the developer look bad, however has the effect of giving an incorrect representation of how solid the codebase is). It’s a tension that exists in every project, and there is no right or wrong balance, you have to take a position that suits your objective. Entering billing ship room, there was definitely a tendency to underfile, but given the importance of billing, we decided that it was better to overfile, wear the cost of triage, to ensure we didn’t miss any bugs, than underfile to optimize for speed of delivery. Hence, the shirt below!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureProjectAttire_840A/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/WindowsAzureProjectAttire_840A/image_thumb.png" width="213" height="214" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureProjectAttire_840A/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/WindowsAzureProjectAttire_840A/image_thumb_1.png" width="213" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;My Rack’s Too Fat for Singapore!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The second one comes from my experience in our infrastructure deployments team. This team is responsible for deploying all new Windows Azure capacity to support the cloud, which includes selecting hardware/network gear, designing the deployment topology/config, rolling out and setting up the physical assets, and wiring it all up to the Windows Azure grid, both from a wire and software point of view. As you can imagine, it’s a pretty fast paced environment, and I can only imagine, is akin to landing planes; you need to get lots of iron and copper on the ground, in different countries, very very quickly, in quick succession. The other aspect is that we don’t use your standard enterprise configurations, which means are racks tend to be tall, heavy, and many. So it some times happens that a datacenter location may not be able to support our deployments, which was the case with a location we were looking at in Singapore. I couldn’t resist capturing that little moment, in a very literal way in the shirt I’m wearing today!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureProjectAttire_840A/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/WindowsAzureProjectAttire_840A/image_thumb_2.png" width="213" height="214" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WindowsAzureProjectAttire_840A/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/WindowsAzureProjectAttire_840A/image_thumb_3.png" width="213" height="214" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So keep this in mind, next time your sitting with your project crew, toiling through the hurdles and issues, and that little moment pops up that makes everyone have a laugh and relax, capture it in some way, shape or form. It’s a great way to remind everyone that we do this stuff because we love it, and it also helps keep those moments alive down the path, where trust me, you’ll need them! ;) &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:ab9c7e92-0902-44f5-b8f8-cdad103a77c4" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Work+Stuff" rel="tag"&gt;Work Stuff&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9827068" width="1" height="1"&gt;</description></item><item><title>Looking Inside Windows Azure!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx</link><pubDate>Mon, 06 Jul 2009 09:59:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9819015</guid><dc:creator>davidlem</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9819015</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx#comments</comments><description>&lt;p&gt;So I’ve been working on a proof of concept this past week, and one of the biggest issues I’ve had has been trying to see what has been going on with my “container” when I deploy my app to Windows Azure. It’s not that the logs aren’t good enough, but sometimes I need to try interactive commands to see the state of the environment or test something out.&lt;/p&gt;  &lt;p&gt;First, let’s recap a little Windows Azure 101; when you deploy your application, we spin up a VM and deploy your app into that VM. That VM has some policies set, which restrict what you’re able to do compared to your local machine or dev server.&lt;/p&gt;  &lt;p&gt;So how do you see what your VM is doing? Well, since we don’t really provide any option to TS (remote admin) into your VM instances, I had to come up with a slightly different approach. The first step was to flick on a little known setting, but very powerful one:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_thumb.png" width="428" height="175" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/Dd135736.aspx"&gt;Enabling Native Code Execution&lt;/a&gt; turns off the partial trust policy in Windows Azure, allowing you to run a bunch of functions that you were previously able to run in the old Nov CTP 2008 days.&lt;/p&gt;  &lt;p&gt;My next task was to code up a little page that would allow me to run commands in the VM environment, kind of like a remote console, so I could see what was happening when I was trying to run my app.&lt;/p&gt;  &lt;p&gt;The main bit of code is quite simple, and uses the &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx"&gt;System.Diagnostics.Process&lt;/a&gt; to create a new command window to run my commands, and capture the output back into my ASP.NET page. Here is the code to create the command process and get the return data:&lt;/p&gt;  &lt;div style="padding-bottom: 5px; padding-left: 5px; width: 429px; padding-right: 5px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 5px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0aa114f5-5517-4ce3-b294-8a840a4ea5bf" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #ddd; max-height: auto; overflow: scroll; padding: 0"&gt;
&lt;ol style="background: #a31515; margin: 0 0 0 35px; white-space: wrap"&gt;
&lt;li&gt;newProc.StartInfo.UseShellExecute = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;&lt;/li&gt;&lt;li style="background: #970909"&gt;newProc.StartInfo.RedirectStandardOutput = &lt;span style="color:#0000ff"&gt;true&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;newProc.StartInfo.FileName = &lt;span style="color:#a31515"&gt;"cmd"&lt;/span&gt;;&lt;/li&gt;&lt;li style="background: #970909"&gt;newProc.StartInfo.Arguments = &lt;span style="color:#a31515"&gt;"/c "&lt;/span&gt; + txtCommand.Text;&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li style="background: #970909"&gt;newProc.EnableRaisingEvents = &lt;span style="color:#0000ff"&gt;false&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;newProc.Start();&lt;/li&gt;&lt;li style="background: #970909"&gt;&lt;/li&gt;&lt;li&gt;sr = newProc.StandardOutput;&lt;/li&gt;&lt;li style="background: #970909"&gt;&lt;/li&gt;&lt;li&gt;txtStatus.Text += &lt;span style="color:#2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;"{0}&amp;#92;r&amp;#92;n"&lt;/span&gt;, sr.ReadToEnd());&lt;/li&gt;&lt;li style="background: #970909"&gt;&lt;/li&gt;&lt;li&gt;newProc.Close();&lt;/li&gt;&lt;li style="background: #970909"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;p&gt;So I have a simple page now, where I can enter commands, and see what is returned when run within the VM:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_thumb_1.png" width="428" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Oh the things one finds out about their VM! :) For example, I can run commands like:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SET&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_thumb_2.png" width="431" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NETSTAT&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_thumb_3.png" width="430" height="139" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TASKLIST&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/LookingInsideWindowsAzure_14C96/image_thumb_4.png" width="430" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This type of insight is really important, for example, in my task, I was trying to start a new process (&lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;), but couldn’t get a response from the default address that Tomcat binds to (&lt;a href="http://127.0.0.1:8080"&gt;http://127.0.0.1:8080&lt;/a&gt;), and couldn’t work out why it worked on my local dev fabric and not in the cloud. I then ran NETSTAT and saw that the 8080 port was already bound to a virtual address, hence why it wouldn’t work for me. &lt;/p&gt;  &lt;p&gt;Anyway, there is a wealth of information that can help you as a developer, when trying to debug/troubleshoot an issue, that can only be gleaned from the live environment, so tuck in!&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:c0482fa8-fad6-420a-9604-1900bcbf9436" 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=9819015" width="1" height="1"&gt;</description></item><item><title>Process Improvement Starts with a Blank Page!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/05/01/process-improvement-starts-with-a-blank-page.aspx</link><pubDate>Thu, 30 Apr 2009 21:08:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9580925</guid><dc:creator>davidlem</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9580925</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/05/01/process-improvement-starts-with-a-blank-page.aspx#comments</comments><description>&lt;p&gt;So anytime you’re doing something more than once, there is an opportunity to do it better every consecutive time. Over my career, I’ve worked in a number of different project teams; software teams, hardware teams, software/hardware teams, even a marketing team!&lt;/p&gt;  &lt;p&gt;One thing that has been consistent about my experience in teams though, is that if you are trying to get many people to work efficiently on one project, you need a process. Now, I know there are those who don’t favor process, and I agree with them that a bad process is just as destructive as no process, but a good process, that’s a different story. And also, sometimes, there isn’t any process in place whatsoever, and I don’t mean there isn’t any processes in existence, it just that the team and project you’re working on hasn’t adopted one.&lt;/p&gt;  &lt;p&gt;So where do you start? Well, I have some principles I’ve always used to guide me thinking.&lt;/p&gt;  &lt;p&gt;First, start with a blank sheet of paper. I have a philosophy that by even having a blank sheet of paper, that represents your process, you’re already off to a good start, because you now have a process to improve on. But if you don’t even have a blank piece of paper, you haven’t got anything to improve on, so you’re doomed to keep starting from scratch and feeling your way through every project, painful ad-hoc step by painful ad-hoc step.&lt;/p&gt;  &lt;p&gt;Second, think logically about the stages/phases of your process, and the functional groups involved. For example, let’s say your trying to build a new product, you can start simply by saying, what are the big steps we will go through as a team, and what are the functional roles that the team will play. This is important if you want to avoid having everyone involved in every part of the project. This kind of high contact leads to burnout and failure, as everyone is always on, even when they don’t need to be, and your project ends up looking like a rave party than a slow waltz. So an example process sheet would look like (I like to use &lt;a href="http://office.microsoft.com/en-us/visio/HP012076771033.aspx"&gt;Visio Cross Functional Flowcharts&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ProcessImprovementStartswithaBlankPage_9C7F/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/ProcessImprovementStartswithaBlankPage_9C7F/image_thumb.png" width="417" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next, you put a simple box in each intersection where a process activity needs to occur. Now, I never put more than a single box in an intersecting square. The purpose of the chart above is to highlight a work interaction between a functional team and a phase, you can drill down into the actual deliverables and steps later. So my process might look like this.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ProcessImprovementStartswithaBlankPage_9C7F/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/ProcessImprovementStartswithaBlankPage_9C7F/image_thumb_1.png" width="417" height="260" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So for example, in the Requirements phase, the business team are responsible for building the customer requirements. To start with, you may not have any steps, so at the project kickoff, you would start by defining the steps for this project to satisfy that part of the process. Next time around though, you could look back at the last project and say, “Wow, out of the 3 things we did, the focus groups worked really well, so let’s add that to the best practices list for Customer Requirements tasks”. Again, it’s not about forcing people to follow anything more than the high level process, but you also want to capture the prior learning, and express it in a way where someone can look over the task list for a process stage and say, “This was used to get this outcome, and I think I need that outcome for my project, so I’ll use that task”, but also enable people to add new tasks to the catalog.&lt;/p&gt;  &lt;p&gt;The next step is you have to have a basic communications plan. In too many projects, emails fly around between project members and other connected people, with everything from FYI’s to work items and change requests. It’s dangerous because the wrong people can affect the outcome of your project, and critical items get lost in the email explosion. Set up some basic email aliases for your project, at a basic level, have 3:&lt;/p&gt;  &lt;p&gt;1. A basic project comms alias for general FYI comms&lt;/p&gt;  &lt;p&gt;2. A change request alias where requests can be managed&lt;/p&gt;  &lt;p&gt;3. An oversight/stakeholder alias where critical decisions that need stakeholder approval/review can be sent&lt;/p&gt;  &lt;p&gt;You should also attach a contract to each alias, for example, for the oversight alias, you might say that all the people on that alias commit to responding to any email sent to that list within 24 hours. This way, the alias doesn’t just become an vacuum or black hole, and people don’t lose faith in the alias and start emailing people directly. &lt;/p&gt;  &lt;p&gt;And finally, you should have a clear accountability matrix. This ensures that the right people are involved in the right parts of the process, and more importantly, the wrong people are not involved. You matrix should map to your functional groups from your process chart, and should follow a model such as OARPi (Owner, Approver, Reviewer, Participant, Informed). This way, everyone knows when they are involved, and in what capacity. And also, they know who is not involved, so they can filter those people from the process. It really improves the signal:noise ratio for a project.&lt;/p&gt;  &lt;p&gt;And that’s pretty much it. Each time you runt he process for a project, take the time at the end of the project to reflect, then update the body of knowledge for the process, highlighting tasks that worked really well in a phase for a functional group, and also tasks that didn't’, and include enough information for the next person so they know what you were trying to achieve, and what the outcome was.&lt;/p&gt;  &lt;p&gt;Process is good, process is your friend! :)&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:c731bb9b-7a84-4f45-b398-ae516ba98722" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Stuff" rel="tag"&gt;Stuff&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9580925" width="1" height="1"&gt;</description></item><item><title>Build the right feature, build the feature right!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/04/26/build-the-right-feature-build-the-feature-right.aspx</link><pubDate>Sun, 26 Apr 2009 09:56:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9568935</guid><dc:creator>davidlem</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9568935</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/04/26/build-the-right-feature-build-the-feature-right.aspx#comments</comments><description>&lt;p&gt;So one of the key responsibilities of a Program Manager at Microsoft is to drive features. Features are the same as functions in some software nomenclature, and essentially, they map to something the software performs to satisfy a customer need.&lt;/p&gt;  &lt;p&gt;Now, over the course of my career as a software engineer, I’ve seen two major disconnects in product teams. The first is where product teams never seem to be able to pick the right features to build. They have great talent, amazingly smart people, lots of resources, but just no direction, so they end up with awesome software that no one wants. I’ve also seen the opposite, teams with great feature lists, but a lack of diligence and professionalism required to ship quality features, so they build a product everyone wants but no one can use or will pay money for. This has led me to distill a little saying which has always held me in good stead: &lt;em&gt;build the right feature, build the feature right&lt;/em&gt;. What does that even mean?&lt;/p&gt;  &lt;p&gt;Well, knowing what features to build is an art in itself. When building a global product, it’s not easy to simply ask your customers what features you should build. Instead you have to use different techniques to ascertain what features are valuable to them, and which are not. You need to take into account multiple inputs, such as focus groups, customer visits, user feedback, market movements and pressures, and insights into areas of possible innovation. By doing this, you make sure that all the hard work the developers will do to produce your feature, is worthwhile not only to the customer, but to the business too.&lt;/p&gt;  &lt;p&gt;Now once you’ve worked out the right features, you need to work out how to build those features right. See, this is where I’ve seen many a software group come unstuck. Picking a good feature is only half the battle, delivering it with quality and style is another. For example, in order to ship a great feature, many factors need to be considered, such as how the customer intends to use the feature, how the customer would like to use the feature, the best way to design the feature so the customer can be efficient and comfortable in using it, and can leverage existing skills and experience to be productive. It’s not good enough to simply cut some code, there needs to be a quality process from design through to deployment to ensure the feature is rock solid and appealing to the customer.&lt;/p&gt;  &lt;p&gt;Shipping great software is about embracing both of these aspects, not just one of the other. &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:54554226-a921-405a-8b8c-c765fbe24ee0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Building+Products" rel="tag"&gt;Building Products&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9568935" width="1" height="1"&gt;</description></item><item><title>What is Software + Services?</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/04/11/what-is-software-services.aspx</link><pubDate>Fri, 10 Apr 2009 19:02:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543441</guid><dc:creator>davidlem</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9543441</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/04/11/what-is-software-services.aspx#comments</comments><description>&lt;p&gt;I came across this video today and really found it simple yet powerful.&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:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:947acbbb-152e-4bbf-97e6-241f187e155d" class="wlWriterEditableSmartContent"&gt;&lt;div id="24016d99-c98d-4648-aff5-9f3c81bf32a7" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=0603a1bb-321f-4854-b57c-841a35e51803&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/WhatisSoftwareServices_7F05/video17a08879232a.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('24016d99-c98d-4648-aff5-9f3c81bf32a7'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=0603a1bb-321f-4854-b57c-841a35e51803&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;For me, the best part of this video is it puts a real context around the whole S+S story, which to date, has been pretty hard to decipher. &lt;/p&gt;  &lt;p&gt;The main takeaway as I see it, is that you can’t achieve everything you need from just desktop/server software or the cloud, you need a little bit of both. Why not have your cake and eat it too I say! ;)&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:8ef37ee8-368b-41a6-b2e3-8f0e7c4ea259" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/S%2bS" rel="tag"&gt;S+S&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9543441" width="1" height="1"&gt;</description></item><item><title>Design for Failure, Growth and Distribution!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/03/25/design-for-failure-growth-and-distribution.aspx</link><pubDate>Tue, 24 Mar 2009 17:06:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9504275</guid><dc:creator>davidlem</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9504275</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/03/25/design-for-failure-growth-and-distribution.aspx#comments</comments><description>&lt;p&gt;When designing any piece of software, there are always going to be design tenants that you practice based on the type of software being developed. &lt;/p&gt;  &lt;p&gt;For service software that is designed for a global, business critical audience, there are three key tenets in my opinion. In fact, there not so much tenets as they are assumptions. &lt;/p&gt;  &lt;p&gt;So when you start designing your service(s), you need to design with the assumption that your service is going to do the following, and do it on a regular basis:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fail      &lt;ul&gt;       &lt;li&gt;This does not only mean your service will fail during runtime execution, but also during upgrades, deployment of new functionality, bug fixes, configuration changes to the environment&lt;/li&gt;        &lt;li&gt;Your operating environment will fail. Power will go out, network appliances will die, hard disks will crash, CPU and Memory will fault, assume it will all happen, and probably all at once&lt;/li&gt;        &lt;li&gt;In a standard data center deployment, you need to work out what your minimum unit of failure is. Is it a rack? Is it a switch? The data center? Knowing this helps you work out how to distribute your service to counter failures.&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Grow &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Your application is going to need to serve lots and lots of requests, so think about the scale of your application. Not only scale out (as in, the ability to serve lots of incoming requests simultaneously) but also scale up (make sure your application can dole out capacity)&lt;/li&gt;      &lt;li&gt;Bandwidth and Ingress/Egress is also a concern, pipes in and out of your service are constrained by physical limitations, so you’re going to have to think about how to deal with heavy load on your network and how your application will deal with this during peak and off-peak periods&lt;/li&gt;      &lt;li&gt;At some point, you service is going to exceed the place its located, as in, there just won’t be any more machines to deploy your service to, and there won’t be any more space to deploy more machines, so you’re going to have to design your service with the goal that you can deploy it across many servers across many data centers &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Distribute      &lt;ul&gt;       &lt;li&gt;Your customers invariably will want your service closest to them, and they will invariably never be located closest to your primary deployment data center, so design your service in a way that it can serve your customers at the point that closest to them. It reduces latency and improves service quality and experience&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, designing a service involves thinking through the whole application lifecycle. Traditionally, we think about issues and bugs at the runtime level, but with services, because they are always on, living, breathing systems, you have to design them in a way that they can be changed (upgraded, configured differently, etc) at any time without interrupting its availability (the ability for customers to connect and use your service) and its consistency (the state maintained by the system must always be consistent and correct).&lt;/p&gt;  &lt;p&gt;Now, this is by no means the magna carta of service design, but as you start thinking about designing your always available, highly scalable, geo-distributable service, the tenets above should be good food for thought.&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:e02bb99d-3436-4020-80c1-e407e292c276" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Design" rel="tag"&gt;Design&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Services" rel="tag"&gt;Services&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9504275" width="1" height="1"&gt;</description></item><item><title>Windows Azure: March 2009 CTP!!!</title><link>http://blogs.msdn.com/b/davidlem/archive/2009/03/20/windows-azure-march-2009-ctp.aspx</link><pubDate>Thu, 19 Mar 2009 23:41:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9491091</guid><dc:creator>davidlem</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/davidlem/rsscomments.aspx?WeblogPostID=9491091</wfw:commentRss><comments>http://blogs.msdn.com/b/davidlem/archive/2009/03/20/windows-azure-march-2009-ctp.aspx#comments</comments><description>&lt;p&gt;OK folks, so all the &lt;a href="http://blogs.msdn.com/windowsazure/"&gt;announcements have been made for Mix&lt;/a&gt;, so it’s time to get cranking!&lt;/p&gt;  &lt;p&gt;We have a new release of tools and SDK bits.&lt;/p&gt;  &lt;p&gt;First, you’ll need to install some pre-reqs, &lt;strong&gt;&lt;u&gt;but only if you are going to exploit some of the new capabilities&lt;/u&gt;&lt;/strong&gt;:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=145526"&gt;Hotfix: Native Debugging Improvements&lt;/a&gt; (Tools only; and only if you intend to do native debugging) &lt;/li&gt;  &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/967131"&gt;Hotfix: Support for FastCGI on the Development Fabric&lt;/a&gt; (SDK and Tools; but only if you intend to use the FastCGI capabilities)&lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.iis.net/extensions/URLRewrite"&gt;IIS7.0 URL Rewrite Module&lt;/a&gt; (SDK Only; and only if you are using URL rewrite rules)&lt;/li&gt;  &lt;p&gt;If you don’t plan to use native code, FastCGI or URL rewriting, then don’t worry about the pre-reqs above.&lt;/p&gt;  &lt;p&gt;Then, the tools and/or SDK. One big thing to note about the March release is we now have two install options:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you don’t use Visual Studio, then you can download the standalone &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af10-3d2839a5a362&amp;amp;displaylang=en"&gt;Windows Azure SDK here&lt;/a&gt;, or&lt;/li&gt;    &lt;li&gt;If you use Visual Studio, then you can now get an all up &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59e8fc0c-c399-4ab7-8a93-882d8e74b67a&amp;amp;displaylang=en"&gt;VS Tools for Windows Azure and Windows Azure SDK installer here&lt;/a&gt;.&lt;/li&gt; &lt;/ul&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:effb47c9-5435-4f7a-8759-52b0f4f6eeaa" 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/SDK" rel="tag"&gt;SDK&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9491091" width="1" height="1"&gt;</description></item></channel></rss>
