DigiGirlz, Deep Zoom and Azure

A few weeks ago I was tasked with coming up with something for the attendees at the first ever DigiGirlz event in Australia to play with. Something to get them a little excited about technology. Catherine Eibner came to me with some ideas that she thought would make for a compelling exercise and we came up with a cool Azure based Deep Zoom app!

We decided to take the Eventr (Codeplex | Blog | Blog) open source project I worked on last year for ReMIX Australia 09 and make it more accessible and dynamic (and brand it a little for the event).

What came out the other side was a dynamic Azure based DeepZoom creation application with auto updating Silverlight front end!

What does it do?

Firstly, check out the running application here!.

The Silverlight application shows a DeepZoom composition of all the photos that were taken at the DigiGirlz event.

The photos were all added to a Flickr Group which the Eventr application automatically scans. When new photos are added, the photos are downloaded in to Azure and processed in to a new DeepZoom composition.

The Silverlight client is notified that new images are available – it then highlights the new images and automatically reloads the DeepZoom composition from the server.

The system is configurable to scan a Flickr Group, perform a Flickr full text search or perform a Flickr tag search (or a combination of these).

The system has been designed to be “multi-tenanted” which means it can host more than one group of images… I.e. it could do DigiGirlz and another collection – all the images would be separated depending on the URL entered.

How does it work?

The application is hosted in Windows Azure and utilises a lot of what Azure has to offer.

  • It uses a WebRole to host the Silverlight application and services (which read from the DataBase).
  • All data is stored in a SQL Azure database. The data stored includes information about which images have been downloaded from Flickr, their metadata (title, description etc.) and their processed state (have they been included in the DeepZoom composition yet?).
  • Linq to SQL is used to access the SQL Azure database. You can access SQL Azure in the exact same way that you would access a normal SQL database. In fact when in development mode (local) I used SQL Express, and during deployment I changed my config to point to a SQL Azure instance… too easy.
  • WCF RIA Services was used to communicate from Silverlight to the server (where Linq to SQL is used to then go up to SQL Azure). The Silverlight client is very easily then able to get the metadata (title, description) from the database, as well as send data back (like view counts etc). All in all, it was a very simple task to get data from SQL Azure into Silverlight.
  • Azure Blob Storage is used to store the generated DeepZoom files. Blob storage is great because you can access the files directly using a URL, as well as get programmatic access to them to CRUD(create read update and delete) them.
  • To fire commands based on events from the user, the system uses Azure Queue Storage. Queues allow you to add an item in one place, and read it in another (only one thing can read an item)… so it’s great to fire a command once, and pick it up once to execute it. An example command in this system is “Clear”. Admins can clear out all the images/collections and data and start again.
  • To build the Deep Zoom collection, the system utilises an Azure Worker Role. The worker role polls the database every few seconds to get out the Flickr search configuration (i.e. which group or text search to scan). It then performs this search against Flickr. New images are downloaded and added to the SQL Azure database for later processing.
  • When the Azure Worker Role downloads an image, it is stored in a Windows Azure Drive. Once stored, it is processed using DeepZoomTools (a part of Deep Zoom Composer.

    Windows Azure Drive is important as DeepZoomComposer doesn’t work with streams (which is how Azure Blobs work)… it needs a drive letter. Azure Drive is great as it provides drive letter access to a special type of blob storage – meaning it will work in Azure!

    Once the composition has been built it is uploaded to Azure Blob storage for access from Silverlight (you cannot access Azure Drive files from outside the Windows Azure hosting platform – they are a special type of storage).

  • Can I test it out??

    Unfortunately at this stage I cannot release the code for this stuff, but – you can have a go at using this project yourself…

    Head over to the test Flickr group here. Add a photo the the group (KEEP IT CLEAN PLEASE!!).

    Then head over to the test URL and keep watching… your new images will show up in no time (under 2 mins)!

    Resources

    Azure Team Blog: http://blogs.msdn.com/windowsazure/
    Azure Storage Intro: http://msdn.microsoft.com/en-us/azure/cc994380.aspx
    SQL Azure Overview: http://www.microsoft.com/windowsazure/sqlazure/
    Windows Azure Overview: http://www.microsoft.com/windowsazure/windowsazure/
    WCF RIA Services Overview: http://www.silverlight.net/getstarted/riaservices/
    Get Started with Silverlight: http://www.silverlight.net/getstarted/
    Eventr DigiGirlz Demo: http://jak.cloudapp.net/Default.aspx?guid=764fbcd0-c15f-45f3-bda5-de3ed9081ce8

    Eventr Codeplex project: http://eventr.clodeplex.com

Tech.Ed 2009 – Gold Coast and Auckland

Well it’s that time of year again when we get the chance to hang out with like minded geeks in conference mode!

I was very lucky this year to be selected to present a couple of break out session in both Gold Coast and Auckland – WOOT!

My sessions are:

Australia

ARC401 Architectural considerations for creating Silverlight Applications
Thu 9/10 | 17:00-18:15 | Arena 1B

This session has actually been dropped to level 300 now, but it’s still awesome ๐Ÿ™‚

– and –

WEB309 Going deeper in Silverlight 3
Fri 9/11 | 13:45-15:00 | Meeting Room 5

New Zealand

ARC301 Architectural considerations for creating Silverlight Applications
Tue 9/15 | 14:20-15:35 | New Zealand Room 2

– and –

WUX301 Going Deeper in Silverlight 3
Wed 9/16 | 9:00-10:15 | Ballroom 2

Also cool is that we are holding a special lunch for Silverlight geeks on Wednesday (Gold Coast) from 12:45 – 1:45 in Meeting Room 6. You can add it to your session planners via session code BOF001. The topic: “Smash lunch -> talk Silverlight. Join moi and other members of the local community for an hour of Silverlight discussion. You drive – no slides welcome.”

Come along to the lunch so we can all identify each other as Silverlight geeks throughout the conference!

Last year was my first taste of Tech.Ed and boy I didn’t know what I was missing! Suffice it to say I’m looking forward very much to Tech.Ed this year – perhaps ever have a beer or two here or there ๐Ÿ™‚

Make sure you come and say hello!

Artists in Residence Down Under

Last week Microsoft ran the first Artists in Residence program outside of Redmond. Seven designer and developer pairs from various companies gathered at the Microsoft offices in Melbourne to learn to use Silverlight and related tools like Expression Blend and Visual Studio. Importantly there was also a large focus on designer developer workflows that Silverlight offers in spades.

Microsoft was nice enough ask me to help out and boy did I have fun! With me were Shane Morris and Michael Kordahi – there’s always action going on when you get these two in the same room.

The training was structured differently from a usual boring old course – we kicked off with a day and half of lab based work. Each attendee received a copy of the course material including labs and sample projects, links and a cheat sheet. Each of the labs where stepped through on the big screen by the instructor (that would be me). This was a great way to process the large amount of work and we had some fun with it – I am the worst for getting bored in a course and there was no way in hell that was going to happen on my watch.

Once the attendees had been blasted with a day and a half of hard core Silverlight training they where given half a day to come up with an idea to work on for the rest of the week… during this time they where asked to produce a wire frame and prototype. They then presented their fledgling projects to the group.

The presentations where fantastic and got the group really engaged – the ideas where really flowing now. Ideas, techniques, tool kits and discoveries where shared for all to see. Some groups even altered their plans based on what they saw (e.g. integrating the Silverlight Toolkit and other things).

For the rest of the week they would work on their own projects with the three of us lurking around in the background to provide guidance as needed. I ran a couple of deep dive session on topics like binding, Model-View-ViewModel and some Dependency Injection. A couple of the groups actually went down the path of M-V-VM which was really cool!

On the final day the groups where shepherded in to the meeting room to present their final work. A couple of beers where consumed as the last minute changes where made.

As the presentations where being made I was hit with a huge sense of pride… earlier in the week these guys didn’t know a thing about Silverlight and now they had made some awesome projects! A testament to the Silverlight platform and tools probably more so than my training excellence ๐Ÿ™‚

After all said and done some of the feedback from the attendees was that they didn’t realise just what Silverlight had going for it. Before enlightenment it was just another way to make “Flash like content”. However this view dramatically changed once they saw that Silverlight is far more than just another Flash competitor… it’s designer/developer work flows are far superior to anything else available at this time – the attendees where rather impressed with the separation of concerns and clear cut work flows which was great to see. This was evidenced by the projects they where able to produce in under a week (from scratch, with no prior Silverlight knowledge!!!).

I’d like to finish up by sending out a huge thanks to the attendees and also to Shane and Michael – together we all made the week rock!

John and Bronwen from Soul Solutions have a great writeup and some fantastic imagery from the week (including a great DeepZoom composition). http://www.soulsolutions.com.au/Blog/tabid/73/EntryID/537/Default.aspx.

Cheers!