“What is Windows Azure?” (a Hand-Drawn Video)
Restrict, Focus, Simplify
Today I drew and narrating a video called “What is Windows Azure?”
The restrictions of the medium (hand-drawn at the same time as the voiceover) really helped me to focus on really simple visual metaphors.
Below is the embedded video. I’m really disappointed that I couldn’t find a way to control the frame that shows up as the preview. (Is that a sheep labeled “fat”?) In any case, I hope you enjoy the video. Details about how I made it are below.
Video: What is Windows Azure?
How I Made It
The Technology
The screen capture was done with Community Clips, and believe it or not, I recorded the entire video in PowerPoint! I had first played a bit with ArtRage and Journal, but PowerPoint proved to be just as good of an art tool for my purposes. In addition it had one nice bonus: I made each drawing on a new slide, so now, I have a slide deck that captures the drawings I made (in ink). I plan to turn that deck into an offline version of the video (shrink and maybe edit the graphics, and add text in lieu of the voiceover narration).
The Methodology
I’ve never been much of an artist, so it took me quite a bit of work to figure out how to draw some of the more complex images in the video. By far the most complicated image (in terms of realism) was the developer sitting at the computer, and the most difficult feeling to capture was the guy trying to hold up the box of concerns.
I did the voiceover in real time while drawing the pictures. This was partially because I don’t really know how to edit videos and partially because I wanted to make sure the timing was right. There was also something cool about knowing I could do this live in front of an audience (maybe I will some day!) or at a whiteboard for a customer.
Overall, I’d say I spent about two hours earlier in the week practicing various drawings and five hours today recording and publishing the video. I hope the time was well spent. Let me know what you think of the video!
Some Inspiration
If you liked this video, I’d encourage you to take a look at the work of Common Craft as well as “The Way of the Whiteboard,” a MIX ‘09 presentation by Dan Roam, author of “The Back of the Napkin.”
Update to The CIA Pickup Source
Since my blog post about it, there’s been a lot of interest in The CIA Pickup. Thank you all for your emails and tweets, and big thanks to Twilio for featuring the application (with a video demonstration) on their blog, and “This Week On Channel 9” for doing the same!
I’m not sure how many people downloaded the code and played with it, but Erwyn van der Meer is one. He made a few valuable contributions and suggestions, so I’m publishing a new version of the source code (at the same URL), with the following additions:
- A global error handler in
global.asax.csthat logs errors via Windows Azure logging. - A setting called
SmtpPortinServiceDefinition.csdefandServiceConfiguration.cscfg, to support SMTP servers on different ports. - A comment in
ServiceDefinition.csdefinforming developers that they will need to addenableNativeCodeExecution="true"to the worker role definition if they use an SMTP port other than 25. - A setting called
TwilioAccountSidinServiceDefinition.csdefandServiceConfiguration.cscfgto enable some simple validation that the calling entity is in fact Twilio (and corresponding validation code inTwilioController.cs). - HTML encoding of the callers in
Calls.aspxto avoid cross-site scripting attacks (should the above validation not be sufficient). - A Python script called
createcia.pyin the root of the project. This script creates the necessary tables and queue in the cloud before you run the application (in the spirit of “Try to Create Tables Only Once”).
The new code is already live at www.theciapickup.com. Please download the source again to pick up the changes, and keep the feedback coming!
Taste of Chicago Chooses Windows Azure
If you had only two weeks to build and deploy an interactive map for the annual “Taste of Chicago” event, and you knew it would have to scale up to a city’s worth of traffic, what technology would you choose?

Faced with this challenge, West Monroe Partners built the map experience itself using Silverlight and Deep Zoom, created an alerts system using Windows Live Alerts, and deployed the entire application to Windows Azure. You can play with the interactive map at http://tasteofchicago09.cloudapp.net/. (Try searching for “pub” as an example of the interactivity.)
This is a great example of two of the fundamental advantages of Windows Azure: effortless scale, and rapid development/deployment. That second point is often overlooked, but it’s an important advantage of an application-centric cloud offering like Windows Azure. All the infrastructure in the world won’t help if you can’t meet deadlines.
Actually, I’m a CIA Agent
I’m in the CIA
Don’t believe me? Well call (866) 961-1673 and enter my Agent Identification Number: 12345. (I know, that’s the kind of combination an idiot would have on his luggage.)
The CIA Pickup
The above demonstration of my secret identity was made possible by my latest demo: The CIA Pickup. There’s a funny story behind this demo, but if you’re impatient, you can try out the demo now or watch this screencast (download the wmv for higher quality):
Video: The CIA Pickup - a Windows Azure Sample
The Technology
Here’s a diagram of the architecture of www.theciapickup.com:
The core web application is running on Windows Azure. The code is written in C# as an ASP.NET MVC web role and a worker role that records incoming calls and sends outgoing email. Twilio is handling the telephony, Windows Live ID is handling authentication, and Windows Live Mail is handling the outgoing mail for the domain theciapickup.com.
It took about three hours to get the basic functionality working (including buying the domain, signing up for Twilio, getting Windows Live Mail set up, writing the initial web page, and publishing everything to Windows Azure). It took another five hours to add a worker role, incorporate Windows Live ID authentication, polish the UI, and clean up the code to the point where I was willing to share it. Eight hours total… not too bad to get an idea like this off the ground!
The (True) Story
A coworker of mine, Annie (not her real name), was flying on an airplane and chatting with the guy in the seat next to her. It was a typical airplane conversation… they were talking about work (he works in real estate), they were talking about travel (Annie has traveled the world and speaks several languages fluently), and generally making small-talk.
At some point in the conversation, the guy stopped, turned to Annie, and said, “You know, I’m not really in real estate.”
“Oh,” she replied, “Then what do you do?”
“I’m actually a CIA Agent,” he said quietly, “and I’m wondering if you’d be interested in a career with the CIA.”
Fast forward a number of years to when Annie comes to work and tells the story of how she was recruited to the CIA. We’re in my manager’s office, and when Annie reaches this point in her story, he and I look at each other and start to laugh. To us, it’s obvious that the guy was hitting on her, and not really a CIA agent.
This gave me the idea for www.theciapickup.com, and I hope you find it as entertaining as I did.
Download the Code
Download the source code: http://smarxblogstorage.blob.core.windows.net/files/TheCIAPickup_source.zip
Note that to run the sample you’ll need to get your own storage account, Twilio account, Windows Live Application ID, etc. All the configuration settings you need to fill in are located in ServiceConfiguration.cscfg.
Enjoy the Demo
Have fun, and tell your friends. Just don’t be too upset when my Twilio account runs dry and the phone calls stop working! :)
Play with the sample: http://www.theciapickup.com
Type Coercion with Windows Azure Tables, and the Twitpocalypse
Today I read some news about the pending Twitpocalypse. If you haven’t heard, Twitter is rapidly approaching a rollover point (much like the Y2K scare) where status IDs will reach values higher than what can be stored in a 32-bit signed integer. The worry is that Twitter clients are storing status IDs in 32-bit integers and will malfunction when the rollover happens.
One of my projects, Botomatic, is actually broken in this way. I rolled my own Twitter API client, and I parsed the status IDs into 32-bit integers. For the most part, the fix was trivial; just replace int with long. There was one part of the fix, however, that worried me. I was storing some of those 32-bit integers in Windows Azure Table storage. What would happen when I updated the code to use 64-bit integers instead?
As you probably know, Windows Azure stores entities as a collection of properties and typed values. That means that going from a 32-bit integer to a 64-bit integer is a real change. Fortunately, the ADO.NET Data Services client library handles this type coercion quite nicely. All I did was modify my classes to use longs instead of ints. When I store a new entity, the numeric value gets stored as a 64-bit integer. When I retrieve an old entity, the value comes back as a 32-bit integer but gets nicely coerced into a 64-bit integer on the client.
In the end, the conversion turned into a complete non-event. Twitpocalypse averted (at least for Botomatic)!
Steve Marx works for Microsoft on Windows Azure.