Presentation Notes from Tech Days 2010 Toronto

On Wednesday October 26th, I will be presenting the Windows Azure Session at Tech Days 2010 in Toronto, Canada. As a summary to my presentation, I am providing the links to not only the resources for my talk, but some of the concepts that I elude to in my presentation.

Act 1: The Brownfield

I can’t wait to see the glowing smiles in the audience when I announce that it is possible to Migrate your legacy applications to the Cloud.

However to take advantage of the benefits of Cloud Infrastructure, some code changes may be necessary. Not to worry, here are a few links that will help you along the way:

Known issue in Development Fabric

During the initial creating of the Nerd Dinner Demo, I ran into a known issue with Development Fabric, where the DotNetOpenAuth Library would cause the DevFabric Load Balancer to crash. This was due to the actions of an extension method in the ASP.NET MVC Framework, luckily there is a work-around.

Guidance on Migrating Legacy Applications

Act 2: The Greenfield

Whether you’re working on a brand new Application, or retro fitting your existing Application with some new practices there are a few things that you’ll want to be aware of.

Using Storage Services

Making Storage Thread Safe with SyncLock

When using Managed code to access Storage Services, it is a Best Practice to use a Sync Lock to surround the code which is attempting to Create a Blob, Table or Queue. Here’s a small sample from Building your first Windows Azure Application on Channel 9 Windows Azure Platform Training Course.

static bool _isInitialized = false;
static object _gate = new object();
static CloudBlobClient _blobClient;

private void InitializeStorage()
	if(_isInitialized) return;

		// Initialize Storage
		_isInitialized = true;

Enforcing Access Rights on Blobs

Depending on your application it may be necessary to Set Access Control for Containers.

_blobContainer.SetPermissions(new BlobContainerPermissions()
	PublicAccess = BlogContainerPublicAccessType.Blob
}); // Set the Blob Container to Allow Public Access to Blobs

Act 3: Deployment

Intellitrace on 32-Bit Operating Systems

If you’re still running a 32-Bit Version of your Operating System, the Intellitrace tools are disabled by Default for the Cloud. In order to be able to benefit from Intellitrace on your machine you will need to download and install Hotfix: KB983301.

Next Steps

Windows Azure Platform Book by Apress Programming Windows Azure by O'Reilly Cloud Computing with the Windows Azure Platform - Wrox Publishing CoDe Magazine MSDN Magazine

If you’re interested in Getting Started with Windows Azure, These Links can get you going:


For Best Practices and other Training review these links:

Cloud Camp Toronto – October 26

Photo Credit: Office Space Toronto

If you’re interested in the Cloud Computing and would like to get an a good idea of what Cloud Providers there are out there (I’d suggest Windows Azure) and how people are Architecting their Cloud Applications, Cloud Camp Toronto is the place for you.

CloudCamp is an unconference where early adopters of Cloud Computing technologies exchange ideas. With the rapid change occurring in the industry, we need a place where we can meet to share our experiences, challenges and solutions. At CloudCamp, you are encouraged to share your thoughts in several open discussions, as we strive for the advancement of Cloud Computing. End users, IT professionals and vendors are all encouraged to participate.

Be sure to Register for the Event and I look forward to seeing you there!

Super Secret WP7 App Details Released

In a shroud of darkness, I brewed up an App that even the true owner had no details about.

Today, I introduced Craig Shoemaker to the Polymorphic Podcast App for Windows Phone 7.

If you’ve been an avid reader of my blog you know that I’m a HUGE fan of the Polymorphic Podcast, it just seemed fitting that I should create an App for it! May I introduce, The Polymorphic Podcast App!


Craig and I are working out a few details, but I am hopeful that this will be one of the Apps in the Windows Phone Marketplace for the Retail Launch!

140 Characters Sparks Outrage in Technologists

Earlier today, I caused some commotion on twitter when it was announced that Ray Ozzie has stepped down as Microsoft’s Chief Software Architect (CSA). It’s not hard for a message which is constrained to 140 characters or less to create such controversy especially when keywords are taking out of context. The keyword in this such tweet was innovation.

The Achievements

Obviously, if you review my blog and look at all of my posts on Windows Azure and SQL Azure you can’t contest that Ozzie did an excellent job at an incredibly hard task of choosing a winning team for Microsoft’s venture into Cloud Computing.  Windows Azure is a great success and creates a rather unique offering for .NET and Open Source Developers for a fully integrated cloud solution.

Other than Windows Azure, Ozzie was responsible for FUSE Labs which is supposed to be an outlet for Innovation. Out of which came Kodu which is basically a simple game level builder, which could be compared to level builders such as the ones shipped with the original version of Star Craft.

Last but not least is Windows Live Sync, a cross platform synchronization tool. I’m sure you don’t need me to tell you the different types of synchronization tools have been developed over the years.


I’m sure Ozzie may have had his hand in other things in Microsoft over the past 5 years, I have outlined three achievements, none of which are truly innovative per say. Innovation aside, I am glad that Ray Ozzie has stepped down, with the success of Windows Azure in the past 2 years, it is great to see Ozzie leave on a high note.

Behind the Curtain of Cloud Computing

Wizard of Oz - Man behind the Curtain

Cloud Computing” is a Buzz word… Servers are still “The Man behind the Curtain”.

How To Create Custom MVC Extension Methods


My good friend John MacIntyre [@JohnMacIntyre] was curious about how to add additional mark-up to an MVC Helper Method. This can be achieved by using Extension methods.

There are a few namespaces or classes that you will want to keep in mind when creating new HtmlHelper Methods of your own.

For this example I will be showing how to create the following mark-up in an extension:

<a href="[action-link]"><span>[action-link text]</span></a>

To get this started I’ll make a static class called HtmlExtensions, this is where I will build my library of ASP.NET MVC Extensions. I’ll be creating an extension method called ActionLinkWithSpan which will Extend the HtmlHelper Class. Let’s take a look:

I used the TagBuilder Class to help create the html elements I wanted to output. The UrlHelper class (which in a MVC View is the Url Property) quite easily creates the link we need based on the input parameters provided.

To use this in our View to generate our link we simply import the namespace it was placed in (or add it to the pages/namespaces section in the web.config) then select it from the intellisense (or type out the Method name) using the Html Property.

<%: Html.ActionLinkWithSpan("Navigate Here", "Index", "Home", new { id="myLink", @class="link" })%>

Well John, I hope this is very helpful.

Happy Coding!