robburke.NET
© 2010 Robert Burke
All Rights Reserved.

Legend of the Greasepole Title Screen

Legend of the Greasepole has been ported to Silverlight 4 and reincarnated on http://greasepole.net.

Greasepole is the long-suffering game about multimedia tribute to the inexplicable Engineering traditions at Queen’s University in Canada. Over 50 students contributed to the project back in the day.

There’s a significant AI component to Greasepole – the autonomous “frosh” characters have models for learning and communicating with one another.

A couple of years ago I ported it from C++ to C# and XNA. I abstracted out a series of services (graphics, sound, input, timer, persistence) so that it might ultimately be ported again to a platform like, say, Silverlight or something. Why? I don’t know, maybe I’m a little obsessed with the illusion of preservation.

The Silverlight 2 version was a bit shaky. Silverlight 4′s hardware acceleration and bitmap caching make it pretty solid. It is also awesome to hear from friends that it apparently works on the Mac.

Analyze These… Shenanigans

I also added a little analytics. Although it should probably be said that the Greasepole event largely defies analysis, the game itself does not, and so this is the first time I can let someone poke their head in and see how the froshies are doing all around the world.

Back in the day, the worldwide best time was in excess of a mere 53 minutes. But I had to learn that by way of Sean Murray (class of ’05; wonder where he is now) sending me a screenshot. Now the interwebs will tell us immediately. (Admittedly, it’s not a fair fight against Sean, because the frosh are now permanently in “keener” mode, and the Options screen has been replaced by a dozen trendy Achievements for you to “unlock”).

So get going stalling those frosh, and my question for you is – what statistics would you like to see?

“Number of pints Al ‘Pop Boy’ Burchell has quaffed?”

“Number of hippos fed”?

“Height of human pyramid vs time”?

I am going to enjoy cooking up visualizations for some of those.

(Coding notes: A few new VS2010 things helped with this update: Web.config transformation (rocks), improvements to Web Publish functionality, XAML designer, Entity Framework experience… and more.)

Play Legend of the Greasepole Online Edition.

Windows AzureThe death of Silverlight Streaming (a free hosting service provided by Microsoft) made me think through the cost of hosting small apps and sites on Windows Azure. [edit 25 Feb - and it turns out I'm not alone]

Although Azure’s pricing model might make sense for Enterprise scenarios, the math doesn’t seem to add up for smaller-scale applications.

The problem for Microsoft, as I see it, is that these smaller-scale apps could drive breadth adoption of Azure by developers and SMBs.

The Cost of a Simple Media-Driven Azure Site

Azure compute time is 12 cents an hour, and by compute time, Azure means “up-time,” not compute cycles used. Storage is an additional 15 cents per gigabyte [edit 25 Feb - turns out this rate is per month as per comments and this MSDN article - edits and changes inline and my thoughts remain largely the same about the TCO].

So we’re talking just shy of $7.00 $3.00 per day just to keep any app up on Azure. That’s almost $200 $70 a month!

The FractLOL is a simple media app

The FractLOL is a simple streaming app that would be prohibitively expensive if hosted on Azure

Let’s take a simple and illustrative example: the FractLOL, a Silverlight+DeepZoom app. I needed to move it from Silverlight Streaming before it dies on the 31st.

I say it is an “illustrative” example because:

  • For a small website, the inclusion of rich media content like a Silverlight Deep Zoom might be exactly the sort of differentiating feature that would make Azure or some other cloud computing solution appealing.
  • When I first posted it, it got slammed with thousands of hits a day, and experienced the sort of brief spikes in traffic that a cloud data centre could gracefully support, but a shared hosting scenario could not.

But I ran this app through the Windows Azure TCO Calculator and it came back with an estimated cost for the app of $12,334/year. Umm.. ok.

Unfortunately, Azure wasn’t even remotely a contender.

And Then There’s Developers

Starving Developers want to learn Azure!

Starving Developers want to explore Azure!

Not only does this pricing model make a small Azure site prohibitively expensive for its owners, but for prospective Azure developers, the “Developer Accelerator” package clocks in at a considerable $59.95 per month.

Honestly, sometimes I feel like I am being actively discouraged from experimenting with Azure.

Turns Out I’m Not Alone…

No wonder, as Mary Jo Foley reports, the number one request for Azure is to change the pricing model for small-scale apps, and the number two request is to continue to make Azure free for developers.

For now, my FractLOL has been moved over to hoster Godaddy where it’s hanging out on a shared IIS server where, admittedly, it doesn’t scale.

But it’s costing me – wait for it – $0/month.

I wait in hope…

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 2009I’m by no means a native REST-afarian: I was a Microsoftie during the time when SOAP and WS-* were really taking off, and the first version of WCF was released (all lathered up in SOAP) to unify communications in .NET.

But as I do more client-side development – particularly with Silverlight and ASP.NET AJAX – I’ve encountered more and more service scenarios where the REST architecture, and lightweight data formats like JSON, make a lot of sense.

So it’s a case of horses for courses, and very good news that the ultra-extensible WCF now has strong built-in support for both SOAP and REST… and JSON and ATOM/RSS syndication and more.

The verbs that make up the uniform REST-ful interface

The verbs that make up the uniform REST-ful interface

Get the REST Starter Kit

If you’re interested in WCF’s support for REST, please download the WCF REST Starter Kit, and check out the resources for REST in Windows Communication Foundation linked here.

Paste XML as Types

Paste XML as Types

The REST Starter Kit gives Visual Studio 2008 SP1 a lot of additional helpful functionality for consuming REST services from a client, including the “Paste XML as Types” functionality that got an audible “oooh!” today.

Here’s how it works: You copy some XML into your clipboard, and then use this menu item to paste it into your code as C# classes. Then, you can use the HttpClient classes (found in the Microsoft.Http and Microsoft.Http.Extensions assemblies, also part of the Starter Kit) to load your data into a client app without munging the XML. Very nice, and no “Add Service Reference” magic needed.

More on WCF+REST:

I am immensely indebted to Jon Flanders, a true REST-afarian, for the foundation of today’s presentation. He literally wrote the book on REST-ful .NET.

He’s presented on this subject at the past two TechEd conferences. You can watch his TechEd2009 presentation here and download that presentation’s sample code here.

Hope that helps, and happy service building!

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.

Previous Articles »