Sunday, May 30, 2010

CMAP Code Camp May 2010 Materials: Azure

On May 8, I presented two Azure talks: “The Essential Setup Guide” and “Taking Advantage of the Platform.” Here’s the slide deck and sample code I used for these talks:

Thanks to all who attended. As most of you will recall, nearly everyone from the first session stayed around for the second session, so it ended up being like a double-length talk. Here are a few takeaways from the talks:

  • We went over some of the basics of Azure, and the fact that it offers everything except the app: network, computers, operating systems, failover, storage, monitoring… the works.
  • We went over some of the terms. Remember that every “role” you create for Azure is nothing more than a definition for a virtual machine. You can then deploy that role to Azure, and you can have any number of instances (essentially copies) of a given role. You pay for the number of roles you deploy, and you can scale the number up or down depending on your needs.
  • To get started, visit – from here, you can select Get Tools & SDK, which will have you on your way. You’ll also need to enable a few things on your local development machine. See here for more details.
  • We built and deployed a very simple Hello Azure demo, with nothing more than a web page. This demonstrated how easy it is to set up a new Hosted Service through the Azure Portal ( From Visual Studio, we right-clicked the cloud project and selected Publish. This packaged our entire cloud application into a single cspkg file that could then be selected through the portal.
  • During the second session, we continued on our journey by looking at an application with tables and queues. We saw how straightforward it was to use both a local (dev fabric) queue and a real-life Azure-hosted queue. The SMS demo code (provided in the link above) has comments describing how to switch between the two. The same case is for the storage table: you may choose local (dev fabric) storage or Azure-hosted storage (you’ll have to set up a storage account in your Azure account).
  • I briefly mentioned affinity. Azure has 6 data centers throughout the world, two being in the United States. When you deploy a service, you can choose where it goes (or not choose at all). Here’s the key thing: you want your service and your storage located in the same data center. By placing everything in the same data center, data transfer is super-speedy, and you won’t incur any bandwidth charges when reading and writing data with your Azure-hosted services. This is what affinity is all about, and when you create each service or storage, you’ll be able to specify its affinity.

If anyone’s interested in a 2-day Azure Deep Dive, I’ll be teaching a free 2-day Azure Bootcamp July 7-8 in Virginia Beach. Register here. If you can’t make it to my bootcamp, check out additional dates and venues here.

Saturday, May 22, 2010

Richmond Code Camp May 2010 Materials: Azure talk

On May 22, I presented “Azure: Taking Advantage of the Platform.” Here’s the slide deck, sample code, and sample PowerShell script from the talk:

Thanks to everyone who attended, and for all the great questions! Here are a few takeaways from the talk:

  • The Azure portal is Here’s where you’ll be able to administer your account. You’ll also see a link to download the latest SDK.
  • To set up an MSDN Premium account, visit my blog post here for a detailed walkthrough.
  • Download the SDK here. Then grab the Azure PowerShell cmdlets here.
  • To understand the true cost of web and worker roles, visit my blog post here, and the follow-up regarding staging here.
  • The official pricing plan is here. MSDN Premium pricing details are here.
  • The Azure teams have several blogs, as well as voting sites for future features. I compiled a list of the blogs and voting sites here.
  • Remember to configure your service and storage to be co-located in the same data center. This is done by setting affinity when creating your services.
  • While all storage access is REST-based, the Azure SDK has a complete set of classes that insulate you from having to construct properly-formed REST-based calls.
  • We talked about the limited indexing available with table storage (partition key + row key). Don’t let this be a deterrent: Tables are scalable up to 100TB, where SQL Azure is limited to 50GB. Consider using SQL Azure for relational data, and offload content to table storage, creating a hybrid approach that offers both flexible indexing and massive scalability. You can reference partition keys in a relational table, for instance.
  • Clarifying timestamps across different data centers and time zones (a question brought up in Brian Lanham’s Azure Intro talk): Timestamps are stored as UTC.
  • Don’t forget about queue names: they must be all lower-case letters, numbers, or dash (and must start and end with letter or number)

If anyone’s interested in a 2-day Azure Deep Dive, I’ll be teaching a free 2-day Azure Bootcamp July 7-8 in Virginia Beach. Register here.

Friday, May 21, 2010

AzureUG May 2010 Materials: Azure Intro

On May 12, I presented an introduction to Azure. here’s the source code and slides from the talk.

The code includes a simple hello-world app, along with the SMS app that takes advantage of a web role, worker role, queue, and table storage.

Saturday, May 15, 2010

.Net Rocks! in Richmond, VA

Carl Franklin and Richard Campbell, hosts of the .NET Rocks talk show, decided to take their show on the road.

They rented an RV, nerded it up with some serious GPS tracking hardware (see their complete trip), and drove it across the US, visiting a bunch of cities, recording live shows, and demonstrating some cool Visual Studio 2010 tech.

On May 5, the DotNetMobile rolled into Richmond, VA (thanks to Kevin Hazzard and the Richmond .NET User Group for getting this venue on the map!). I hitched a ride with Rusty Romaine and drove down from Maryland to see the show. Our guest host was Mark Miller, creator of CodeRush. He and his wife Karen Mangiacotti bantered back & forth onstage, covering everything from animated commas to an over-engineered Viking Ship school project (note to self: never bake vinegar-soaked wood in my oven). The recorded show can be heard here.

After the show, I snagged a group shot with Carl and Richard, along with Mark and Karen,  ride-along winner Ben Dewey, and newly-annointed ride-along winner and HRNUG founder Kevin Griffin.

More photos are posted here. Enjoy!

Wednesday, May 5, 2010

Blackbird Pie: First Thoughts

Yesterday I heard about Blackbird Pie, a new tool from Twitter to create embeddable tweets. This actually sounded like a useful tool, as there are times I embed screenshots in my posts, some of those being twitter captures. My hope was that with embedded tweets, they’d be interactive (e.g. clickable if there was a link).

So off I went to The claim was that it was faster and easier to embed a tweet.

My initial experience was, um, slower and impossible to embed a tweet. Regardless of which tweet URL I inserted into the UI, I received notice that the tweet did not exist when, in fact, it did (sorry, no screenshot for that). And after only 3 or 4 attempts, I was told that I exceeded some limit. Eventually, the site slowed to a crawl and showed me this:


At this point, I gave up for the day.  And I was all set to move on, until I saw a bit more positive traffic about Blackbird Pie this morning. So I gave it one more attempt.  This time it loaded extremely fast and worked on a tweet that failed to render yesterday. The UI generated an embeddable chunk of html/css:


Pasting this in to this blog post, “magic happens” my tweet gets embedded, though not rendered the way I expected:

Just looked at my dev calendar: 7 #Azure talks scheduled between now and Sept, including a 2-day bootcamp. than a minute ago via web

Just as advertised, my tweet is embedded, and it was incredibly easy. It included my twitter page background. And… all links are preserved: twitter search, site URL, and my profile. Sweet!

UPDATE: Once I published the post, I noticed that the embedded tweet looked nothing like it did inside Windows Live Writer. This is what it looked like prior to publishing, which is not how the actual embedded tweet appears:


There might be special tweaks required for embedding in Blogger posts…

Twitter added some disclaimers, so I suspect this tool will be going through revisions pretty quickly as it rises in popularity. For instance, here’s the disclaimer when adding a URL to bake:


And here’s the disclaimer just following your baked tweet:


Disclaimers aside, this is very cool! I like the idea of an interactive tweet, rather than an unclickable static image (or a static image that I have to wrap a hyperlink around). However, this is not yet ready for prime time, as my embedded tweets are not rendering properly on Blogger.