<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">David L's Blog</title><subtitle type="html"> &amp;nbsp;</subtitle><id>http://blogs.msdn.com/davidlem/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/davidlem/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-05-01T05:08:02Z</updated><entry><title>Expression Blend 3 and SketchFlow! Wow!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/12/17/expression-blend-3-and-sketchflow-wow.aspx</id><published>2009-12-16T23:42:22Z</published><updated>2009-12-16T23:42:22Z</updated><content type="html">&lt;p&gt;So I’m doing some prototyping at the moment and one of the most frustrating aspects of getting started with any prototype is capturing the:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Flow&lt;/li&gt;    &lt;li&gt;Main Screens&lt;/li&gt;    &lt;li&gt;Specification&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I think in mind maps, so one of my biggest problems when starting a new project is setting up the high-level map of how everything is going to connect together. &lt;/p&gt;  &lt;p&gt;The second issue I have is I want to capture the essence and linkage of each screen, but not in painful detail, just enough so someone can infer the underlying data model and application behavior.&lt;/p&gt;  &lt;p&gt;So when I heard about &lt;a href="http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx" target="_blank"&gt;Sketchflow&lt;/a&gt; (jeez, I sound like one of the guys of those late night infomercials, I promise, no blanket that doubles as clothing) I was immediately intrigued. &lt;/p&gt;  &lt;p&gt;Four things that are awesome about Sketchflow with respect to my needs are:&lt;/p&gt;  &lt;p&gt;1. The Sketchflow Map&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb.png" width="444" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This wonderful little feature lets you define new screens by simply adding them to the map, then connect those to other screens. So building your high level flow is super simple and fast!&lt;/p&gt;  &lt;p&gt;2. Sketch Tools&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_1.png" width="448" height="343" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So building the above page, which was created by simply creating a new screen on the map was also dead easy. There is a wonderful little toolbox of controls that I can use to build out these pages quickly:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_2.png" width="221" height="496" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. The Run-time Experience&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_3.png" width="460" height="374" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So I just hit F5 and the project gets spun-up as a little web project in the player! Awesome, I can then try out the ergonomics of the sketch, provide feedback on what I like/don’t like, and navigate from page to page.&lt;/p&gt;  &lt;p&gt;4. Export to Word!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_4.png" width="255" height="352" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/ExpressionBlend3andSketchFlowWow_EBB8/image_thumb_5.png" width="456" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So this is awesome, I’ve built my flow, played around with the ergo and feel, and I’m ready to send it to my boss in a form he can consume so the cash flows out of his pocket into my “build it” budget!&lt;/p&gt;  &lt;p&gt;Now, there are a whole bunch of things Expression Blend 3 + Sketchflow does in addition to what I’ve captured above, but what is the most important aspect is how easy it is to use and how much you can achieve in a very short period of time. This is the key to me using for my initial needs, but also what will keep me using it to learn more about what else it does.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ec6101d3-acc6-4951-885e-43b77f9965f4" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Product+Development" rel="tag"&gt;Product Development&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Expression+Blend" rel="tag"&gt;Expression Blend&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Sketchflow" rel="tag"&gt;Sketchflow&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937933" width="1" height="1"&gt;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Remote Command Service for Windows Azure!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/12/12/remote-command-service-for-windows-azure.aspx</id><published>2009-12-12T00:56:48Z</published><updated>2009-12-12T00:56:48Z</updated><content type="html">&lt;p&gt;So a while back I blogged a little sample code on how to get some info about what’s happening inside your instance using a simple process within a web page.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Looking Inside Windows Azure!" href="http://blogs.msdn.com/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx" target="_blank"&gt;Looking Inside Windows Azure!&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Well, I decided to refresh this code sample using one of my favorite features, &lt;a href="http://msdn.microsoft.com/en-us/library/ee758711.aspx#InputEndpoint" target="_blank"&gt;InputEndpoints&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;So let’s take a quick tour of the sample. At a high level, this is what’s going on:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_thumb_2.png" width="435" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s dig deeper. The client is a simple console app, and the service is a worker role that exposes a TCP InputEndpoint, connected to a socket. The socket accepts a single inbound client connection, and then executes commands on the local instance and returns the results to the client. &lt;/p&gt;  &lt;p&gt;So, I can fire up my client and connect to my service like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/RemoteCommandServiceforWindowsAzure_EE4A/image_thumb.png" width="438" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And execute commands such as DIR or NETSTAT (&lt;a href="http://technet.microsoft.com/en-us/magazine/dd630943.aspx" target="_blank"&gt;or others you could try&lt;/a&gt;), against the local VM. This is very handy when trying to debug local instance issues.&lt;/p&gt;  &lt;p&gt;You can download the code &lt;a href="http://cid-e4d160b012d97011.skydrive.live.com/self.aspx/.Public/BossProd.zip" target="_blank"&gt;here&lt;/a&gt;. It contains the code for the VS2010 Worker Role cloud service project and the simple console client.&lt;/p&gt;  &lt;p&gt;Also, you’ll need to update the diagnostics connection string before deploying it to the cloud, and I’d suggest deploying the worker role with a single instance to avoid any load balanced strangeness.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a9d3d7aa-56b4-4448-a84b-2feebabd53bf" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935971" width="1" height="1"&gt;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>My PDC09 Session – Code and Clip!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/12/11/my-pdc09-session-code-and-clip.aspx</id><published>2009-12-10T23:20:00Z</published><updated>2009-12-10T23:20:00Z</updated><content type="html">&lt;P&gt;So one thing I’ve been terribly slack about since returning from PDC09 has been posting my session clip and code snippets for folks to download/reference, so my sincerest apologies, and without further ado:&lt;/P&gt;
&lt;P&gt;1. &lt;A href="http://microsoftpdc.com/Sessions/SVC37" target=_blank mce_href="http://microsoftpdc.com/Sessions/SVC37"&gt;My session&lt;/A&gt; &lt;/P&gt;
&lt;OBJECT data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAIAADYEwAA2BMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" width=800 height=450 type=application/x-silverlight-2&gt;
    &lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" mce_href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" mce_src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"&gt; &lt;/a&gt; &lt;/OBJECT&gt;
&lt;P&gt;2. &lt;A href="http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVC37.pptx" target=_blank mce_href="http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVC37.pptx"&gt;My slide deck&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;3. &lt;A href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/PDC09%20Code%20Snippets/CodeSnippets.zip" target=_blank mce_href="http://cid-2acaee0f398245b2.skydrive.live.com/self.aspx/PDC09%20Code%20Snippets/CodeSnippets.zip"&gt;My code&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;4. My banner (picture care of &lt;A href="http://www.flickr.com/photos/jldavid/" target=_blank mce_href="http://www.flickr.com/photos/jldavid/"&gt;JLD&lt;/A&gt;)!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/jldavid/4107952369/in/set-72157622658417519/" target=_blank mce_href="http://www.flickr.com/photos/jldavid/4107952369/in/set-72157622658417519/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=MyPDCBanner border=0 alt=MyPDCBanner src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/MyPDC09SessionCodeandClip_D7C9/MyPDCBanner_3.jpg" width=416 height=278 mce_src="http://blogs.msdn.com/blogfiles/davidlem/WindowsLiveWriter/MyPDC09SessionCodeandClip_D7C9/MyPDCBanner_3.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Let me know if you have any issues, otherwise, enjoy! :)&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:93c879d1-8271-434a-8ef8-9402b9b848f0 class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/PDC09" rel=tag mce_href="http://technorati.com/tags/PDC09"&gt;PDC09&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Windows+Azure" rel=tag mce_href="http://technorati.com/tags/Windows+Azure"&gt;Windows Azure&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9935427" width="1" height="1"&gt;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Guy Shahine from the Windows Azure Dev Team!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/11/24/guy-shahine-from-the-windows-azure-dev-team.aspx</id><published>2009-11-24T02:44:28Z</published><updated>2009-11-24T02:44:28Z</updated><content type="html">&lt;p&gt;Guy has started blogging!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/gshahine/WindowsLiveWriter/ThreeDaysatMicrosoftsPDC_1014E/Guy%20Shahine.jpg"&gt;&lt;img title="Guy Shahine" border="0" alt="Guy Shahine" src="http://blogs.msdn.com/blogfiles/gshahine/WindowsLiveWriter/ThreeDaysatMicrosoftsPDC_1014E/Guy%20Shahine_thumb.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://blogs.msdn.com/gshahine/" href="http://blogs.msdn.com/gshahine/"&gt;http://blogs.msdn.com/gshahine/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Go check out his &lt;a href="http://blogs.msdn.com/gshahine/archive/2009/11/22/3-days-at-microsoft-s-pdc-09.aspx" target="_blank"&gt;first post&lt;/a&gt;, and stay tuned for more information from the belly of the beast!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:88b7b646-c75e-4cbc-8493-c77f40ddd189" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dev+Team" rel="tag"&gt;Dev Team&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9927692" width="1" height="1"&gt;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Windows Azure, MSBuild, and Lotsa Files!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/11/04/windows-azure-msbuild-and-lotsa-files.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/11/04/windows-azure-msbuild-and-lotsa-files.aspx</id><published>2009-11-04T00:10:46Z</published><updated>2009-11-04T00:10:46Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Documentation Driven Development!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/09/24/documentation-driven-development.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/09/24/documentation-driven-development.aspx</id><published>2009-09-23T20:03:04Z</published><updated>2009-09-23T20:03:04Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>What’s Your Cloud Address?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/09/02/what-s-your-cloud-address.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/09/02/what-s-your-cloud-address.aspx</id><published>2009-09-01T19:20:16Z</published><updated>2009-09-01T19:20:16Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Cloud Apprenticeship!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/08/27/cloud-apprenticeship.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/08/27/cloud-apprenticeship.aspx</id><published>2009-08-26T19:54:53Z</published><updated>2009-08-26T19:54:53Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Windows Azure and Live ID Auth!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/08/26/windows-azure-and-live-id-auth.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/08/26/windows-azure-and-live-id-auth.aspx</id><published>2009-08-25T19:43:25Z</published><updated>2009-08-25T19:43:25Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Tracing Windows Azure Apps to Storage</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/08/25/tracing-windows-azure-apps-to-storage.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/08/25/tracing-windows-azure-apps-to-storage.aspx</id><published>2009-08-24T23:05:10Z</published><updated>2009-08-24T23:05:10Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Save Your Word Docs to Windows Azure Blobs!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/07/20/save-your-word-docs-to-windows-azure-blobs.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/07/20/save-your-word-docs-to-windows-azure-blobs.aspx</id><published>2009-07-19T22:10:40Z</published><updated>2009-07-19T22:10:40Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>WPC09 – My Windows Azure Session</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/07/17/wpc09-my-windows-azure-session.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/07/17/wpc09-my-windows-azure-session.aspx</id><published>2009-07-17T04:50:00Z</published><updated>2009-07-17T04:50:00Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Windows Azure Project Attire!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/07/10/windows-azure-project-attire.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/07/10/windows-azure-project-attire.aspx</id><published>2009-07-09T19:24:19Z</published><updated>2009-07-09T19:24:19Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Looking Inside Windows Azure!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/07/06/looking-inside-windows-azure.aspx</id><published>2009-07-06T09:59:42Z</published><updated>2009-07-06T09:59:42Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry><entry><title>Process Improvement Starts with a Blank Page!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/davidlem/archive/2009/05/01/process-improvement-starts-with-a-blank-page.aspx" /><id>http://blogs.msdn.com/davidlem/archive/2009/05/01/process-improvement-starts-with-a-blank-page.aspx</id><published>2009-04-30T21:08:02Z</published><updated>2009-04-30T21:08:02Z</updated><content type="html">&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;</content><author><name>davidlem</name><uri>http://blogs.msdn.com/members/davidlem.aspx</uri></author></entry></feed>