TechDays 2010: Real-World Patterns for Cloud Computing

Tech Days 2010If it’s Autumn, it must be time for TechDays again here in Canada. This year  I was Microsoft Canada’s Content Lead for the “Real-World Patterns for Cloud Computing” session.

The Toronto flavour of the event has been taking place yesterday and today.

Compute, Store, Scale

The Cloud Computing presentation focused on scenarios involving where we use the cloud for compute, storage, and scaling (of both compute power and storage). It looked at a real-world case study using Windows Azure Worker Roles, and multiple Azure Storage account (leveraging Blobs and Queues – Azure Table Storage and SQL Azure are other stories for other presentations).

Demo Path

"Real World Patterns for Cloud Computing" Demo Path (click to enlarge)
"Real World Patterns for Cloud Computing" Demo Path (click to embiggen)

Here’s the basic demo path (as pictured above):

1. Efficiently upload content to the cloud

2. After upload, add message(s) to Azure Queue indicating to a Worker Role there’s content to process

3. Use a Worker Role to read messages from the Queue and process the uploaded content

4. Show how to scale the whole thing – both storage (if it exceeds 100TB, the limit of an Azure Storage Account), and compute (if there is too much content to process by a single Worker Role).

The focus of the talk was on incorporating good practices (and avoiding gotchas) throughout this process. We started with some simple code that uploaded content to the cloud and processed it using a worker role, and then modified the solution to incorporate a number of improvements. Then we slammed the whole thing with a heavy load and used the Windows Azure Dynamic Scaling Sample to monitor the growth of the queue and scale up and down accordingly.

(This last part addresses what is certainly one of the most frequently asked questions I get about Azure – does it scale its computing automatically, and if not, how do I do so? The Dynamic Scaling Sample provides one very configurable and suitable solution for automated scaling of Azure computing.)

If you were at TechDays and are interested in the sample code, please contact me and I’ll send a link. You may also be interested in Microsoft Evangelist Wade Wegner’s presentation from TechEd2010, which he delivered with Jerry Schulist from the Tribune Company. I’m indebted to Wade and Jerry for their excellent presentation and their pioneering work with Azure.

Today: More TechDays + streaming PDC 2010

If you’re interested in Azure and cloud computing, you almost certainly will be interested in following what’s going on this week in Redmond at Microsoft PDC 2010. The entire conference will be streamed online – follow that link for a slick schedule and some nice .ics links so you can add talks of interest to your calendar.

[Update, 29 Oct 2010: There were indeed quite a few announcements related to Azure at PDC2010 – check them out!]

Thanks Again

Thanks to everyone who came out – I really enjoyed the day and that was probably the best post-presentation Q&A session I’ve ever had, even if Joey had to “Kanye” me off stage again when question time ran out! My compliments to the MS Canada team – they have the choreography of these large-scale tech events down to an art.

Next stop: Ottawa!

I’m looking forward to presenting this talk again in Ottawa on November 9th for the TechDays Ottawa event.

TechDays 2009: ‘Optimizing Your Apps for Windows 7’ Follow-up

This is a belated follow-up to my TechDays 2009 presentation about Optimizing your Applications for the Windows 7 User Experience.

Included are all the links you need with information about how to get compatible, optimize, and differentiate.

TechDays 2009This is a belated follow-up to my TechDays presentation last week about Optimizing your Applications for the Windows 7 User Experience.

The presentation was in “good, better, best” format, and followed this three-step progression:

1. Get Compatible.
Focus on quality by reviewing the available guidance, documents and training. Download tools for testing and verification. Strive to meet Logo Requirements. Ensure you’re using features (like the common dialogs and Most Recently Used list) that give you new functionality “for free” on Windows 7.

2. Optimize.
Employ the new UI features (Taskbar, Libraries, Federated Search, etc.) to make your app look and feel “at home” on Windows 7. Also consider employing the Performance and Robustness features (Trigger Start Services, Restart Manager, etc.)

3. Differentiate.
If it suits your application, consider the use of “natural user experiences” (Multi-touch, the Sensor and Location platform, the “Scenic” Ribbon, and new DirectX capabilities).

For more follow-up info, please see all the links above, or send me a note.

Windows 7 JumpLists
Windows 7 Jump Lists are a new Taskbar feature

Taskbar bonus link: If you’re interested in the new Taskbar, including the JumpLists functionality shown above, Rudi Grobler’s newly-minted series Anatomy of the Windows 7 Taskbar will be relevant to your interests.

And the One Link To Rule Them All for those of us writing in Managed Code is the Windows API Code Pack for .NET. The Windows 7 Training Kit for Developers link was the close runner-up in the “One Link to Rule Them All” competition.

Two links to rule them all? Well, you know what they say: one does not simply code into Mordor.

TechDays 2009: ‘What’s New in Silverlight 3’ Follow-up

TechDays 2009Thanks to everyone who came to my “What’s New in Silverlight 3” presentation this morning at Microsoft Canada’s TechDays 2009 event in Halifax.

A few months ago, I delivered a Silverlight 3 presentation at a Toronto usergroup event. The follow-up resources I referenced after that presentation are thorough, and still relevant today, so please visit that page for links to online Silverlight 3 resources.

The screenshot below is from one of today’s demos: a Silverlight 3 app, running in Google Chrome, capturing stills from a stream of HD video that I shot at dusk last night with my trusty Nikon D90.

If you’re looking for evidence that Silverlight runs in Chrome, you can point it (or, for that matter, any browser with Silverlight installed) at the much cooler Silverlight demo running here – it’s mai FractLOL.

Capturing frames from video: the WriteableBitmap Silverlight 3 sample, running in Google Chrome!
It's today's Silverlight 3 WriteableBitmap sample, running in Google Chrome!

If you have more Silverlight questions or follow-up, please don’t hesitate to contact me through the blog [or just mail rob at rob burke dot net].

p.s. A few weeks ago I presented “Building Modular Applications in Silverlight and WPF” at TechDays Toronto, so if you’re interested in line-of-business apps in Silverlight, you might also find that follow-up helpful.

TechDays 2009: ‘Building Modular Applications using Silverlight and WPF’ Follow-up

TechDays 2009I’ve just finished delivering the “Building Modular Applications using Silverlight and WPF” session at Microsoft Canada’s TechDays 2009 event in Toronto.

What a difference a year makes! At last year’s TechDays, my presentation was all: “Silverlight is new and awesome! Let’s lap around some awesome Silverlight features!”

But this year, as Silverlight and WPF have gained some maturity, many of us are now working on more complex projects enabled by these frameworks.

So this year’s theme, appropriately, was designing for change. It was about taming complexity in real-world Silverlight and WPF apps with patterns, conventions, examples, and a little glue code.

What we covered

After a brief primer on the MVVM pattern, the core of the presentation was a lap around Prism, a.k.a. the Composite Application Guidance for Silverlight and WPF released by Microsoft’s Patterns and Practices group.

We looked at the structure provided by Prism’s Shell and Bootstrapper, demystified Dependency Injection (over breakfast), and then explored the Region Manager, Modules, the Event Aggregator, and Commanding.

Taming Complexity and Designing for Change

Prism's Stock Trader Referencec Implementation
Prism's Stock Trader Reference Implementation

Complexity in the software development lifecycle comes in many forms, including but not limited to:

  • integrating multiple disparate sources of data,
  • dealing with changing requirements,
  • managing features delivered by distributed dev teams,
  • creating complex interactive views,
  • rapidly skilling up new resources on a project,
  • cleanly separating concerns for different roles (like designer and developer), and…
  • well, I could go on.

It seems to me like a good way to tame complexities like these is to design for change. Prism helps you do this. So does MVVM.

I’ve worked with WPF since it was called Avalon, but only recently started using Prism.

When I go back now and look at my pre-Prism code, it looks fine in parts, but organizationally, it reeks of uninformed, trainwreck stuff. If I could speak to Rob vPrevious, I would insist that he take the time to learn Prism.

Do your time in Prism

I did my time in Prism
I did my time in Prism, so I did

So my call to action for all serious WPF and Silverlight devs is:

Finally – if you are a Silverlight or WPF developer, and are looking for a place to work on interesting projects on a scale that demands you plan for change, please contact me.

For those of you who came out today, thanks for the engaging conversations afterwards, and I hope you found the presentation a helpful primer on Prism. May it help you get up the learning curve and start using the P&P guidance in your own applications!

Please write me with your own Prism thoughts and stories.

This year, the theme was designing for change. It was about taming complexity with patterns, conventions, examples, and glue code.

it was a deeper Senior Dev / Architect level discussion that discussed the MVVM pattern and Prism, the Composite Application Guidance for Silverlight and WPF.