One of the things that we have heard in feedback is the need to surface more end-to-end samples.  While the atomic learning videos/samples are great as are more in-depth tutorials, there is still a desire to see how to package all these things up into a single application.  Seeing from start to finish helps absorb the learning process and see how these atomic things fit together and interoperate.

Today we added the “application corner” to the Silverlight community site.  Yes, I know the name is less than exciting, but hey I’m not a super cool marketing person with unlimited imagination!  The goal here is to provide an area with samples of more full-featured applications that put these different practices in implementation as applications.  No, this will not be an area for a multitude of media-only applications, although I think we will show some more full-featured media solutions as some examples.  This is something that I had talked about before in the forums and had been promising to people for a while and what got some people angry at me.  I could expand on the reasons for delays, but won’t as that doesn’t matter.  What matters to me is the initiative has started.

The goal of the Application Corner is to demonstrate various different types of line-of-business applications and techniques.

NOTE: I hate the term “line of business” – isn’t any application to any organization their line-of-business application?

Here’s my plan over the next short-term.  Ideally your feedback will help iterate the longer term:

    • AdventureOps – yes, people hate sample databases.  I’m not sure why.  They are full of data, have good relationships defined, etc.  I’m going to use AdventureWorks as the base for the first application (and perhaps more) as it has a good base of data and scenarios.  This first iteration of this application will be an attempt to create a Silverlight front-end dashboard for managing certain data (first just the HR system).  We’ll examine integrating with ASP.NET application services (part 1) and then look at techniques we can do today for page navigation and working with data services (part 2)
    • M-V-VM (and other patterns) – seems to be a popular pattern these days and we’ll explore writing an application that uses this pattern in Silverlight and what we can learn from it.  We’ll pull in experts from the community to demonstrate what they’ve done and provide samples.
    • Gaming – not on the gambling sense, but in the casual games sense.  What is a game loop, best practices for animation, etc.
    • Media – we’ve seen the Olympics, we’ve seen the original “Top Banana” site – how were these done, how can we use media in our applications effectively?
    • Continuum – how can you provide some application capabilities for Silverlight and bring them forward to a more full/rich client application?

So that’s the plan.  I know the part 1 of AdventureOps may be old hat to some of you Silverlight pros, but stick with me (and leave feedback).  I look forward to iterating on this section of the site for your benefit.  What do you want to see?

Be sure to subscribe to this blog for updates as the applications get added to the site!

First a word on the “continuum” I keep hearing about for applications.  I’d like to apply it to my digital lifestyle.  You know that vision where you only have one place to keep your music, but can access it anywhere, etc., etc.  I still haven’t hit nirvana like that yet, but for movie watching it’s getting close.

I used to be a customer of Netflix when they first launched.  To be honest, at that time their pricing was singular and I just wasn’t watching enough movies at home to warrant the cost, so I ended my relationship.  Now I have kids, travel a bit, have an XBOX, etc.  For me, Netflix has become more relevant as a matter of convenience…oh and the fact they have a pricing model that totally fits in line with my use.  The thing that is great about Netflix for me now is that they “get it” with regard to how digital and old-school movie rentals can/should occur.  Why? Simple, it’s everywhere for my lifestyle now.  My Netflix account enables me to get DVDs the traditional way (even with Blu-Ray even though I don’t have a player, but nice to know the option is there) as well as digitally.  Recently they changed their Watch Instantly capabilities to use Silverlight.  But that wasn’t all.  With the launch of the XBOX next generation experience, Netflix now has an application for the XBOX.  So now I can get DVDs, watch on my computer(s) and watch on my home theater system.  All with one account, one place, etc.  The only missing piece is a supported/legal way to download to my portable media player (iPod, Zune, etc.).

The one thing that I really like about the instant watch capability is the fact that it remembers where you were.  So if I am traveling and start watching a video but couldn’t finish, when I get home to my XBOX, it starts where I left off.  Nice polish on that feature.  I can still start over if I want, but it is great to see that added value of watching where I left off.  For me, Netflix truly has figured out fast how I want to watch movies and innovates to offer the options for me.

I was showing my family these features and went to a PC in my house to show them the instant watch capabilities as an example.  It just so happened to be a machine that didn’t have Silverlight installed on it yet for some reason.  After logging in to my Netflix account and picking the first movie to demonstrate to them, I was greeted with this images:

It was a reminder of two things for me: 1) that I didn’t have Silverlight installed and 2) what paying attention to the install experience of your web application features can do to enhance the experience and loyalty of your customers.  You see in reality Netflix could have just left the default Silverlight install experience:

on a blank screen.  For me, I would have known what that meant and still been reminder.  But I’ve ranted about providing a great Silverlight deployment experience, about some easy ways of implementing it and how important it is not to assume and to optimize your rich client experiences for your users.  Netflix nails it and is the best example I’ve seen yet.  Period.  Let’s examine the key areas here (numbering mine):

Netflix focused on the main tenants of first impressions with new technology:

Maintain Visual Cues

Netflix keeps the user engaged, not by using the default Silverlight install image, but by maintaining a consistent user experience in the design.  Although the user has chosen to “watch instantly” and they are not there yet, this design helps keep a consistent brand recognition and even shows a player in the background a little bit.  This tells the user that they are still starting along the same action they desired.

Focus on the Content

Content is king.  Content is king.  Nobody will install anything if they don’t believe the content is relevant.  Look at how Netflix uses some personalization in this experience.  In section 1 you can see that they’ve alerted you about the content you chose…they haven’t forgotten about your desire.  They also put the DVD cover as a part of this experience to remind you of the content you wanted to watch.  This is HUGE to the experience.

Reduce Barriers to Entry

Some people might be apprehensive about installing new things.  In section 4 Netflix helps alleviate some concerns by showing the value of the action, and assurance that this is not something that has to do with advertising, etc.  They are providing you with additional information to help you make a decision and help you feel that the process is relative only to the task you requested (watch instantly).

Set Reasonable Expectations

In section 2, the authors of this experience help give some reasonable expectations to the user with “it only takes a minute” instructions.  This gives the user a reasonable expectation of time.  They have a reasonable assumption now that they aren’t downloading the entire movie, or something huge that will take 20 more minutes before they can watch their selected video.

Minimize Decisions

They haven’t given you any other offers here.  No option to create a new account, or sign up for other methods.  You’ve asked to watch instantly and that’s what they are presenting here…the option to do that.  They are making that decision clear in section 3 as well – this is the call to action…no other.

You may also notice the absence of giant Silverlight logos.  To me, this is a good thing.  It is important that you provide some context to your users about what they are installing if it isn’t directly from you though, whether it be from Microsoft, Adobe, wherever.  Here Netflix points out “Install Microsoft Silverlight” which puts in your mind the brand of Microsoft.  This way when the installer shows up it isn’t a surprise it isn’t from Netflix.  Perhaps adding the Silverlight brand/logo in a subtle way wouldn’t be a bad touch here to have some visual recognition and continuity from this screen to the installer.

Summary

Creating these experiences is an important step in managing first impressions.  It isn’t difficult to do either.  We provide some tools and support scripts (Silverlight.js) for you to understand the different scenarios.  Over time as more and more get Silverlight installed this will be less of an issue, but still shouldn’t be ignored.  I’ve seen many Flash sites that use the default “Get Adobe Flash” small icon and wish they would concentrate just as much on the experience as well.

I mentioned that the Silverlight.js file can help aid in detection/installation of Silverlight.  I’m curious your thoughts on it.  If you have a few minutes to spare, I’d love for you to take this very quick survey of your impressions of this technique and using the Silverlight.js script.  No personal information is required.

Bravo to the Netflix team…very well done.  Oh, and the experience isn’t that bad either ;-) -- Seriously though the player and bandwidth/quality detection is great.  Overall Netflix has won me back as a customer for sure!

If you want some great Silverlight information, be sure to subscribe to at least two feeds: Microsoft Silverlight Bloggers and Silverlight community feeds.  I’ve recently just added a bunch of great feeds to both of these including all the members of the Silverlight Toolkit team and some Silverlight MVPs such as John Papa.

There are also a bunch of resources being added to the Silverlight community site over the next month.  We also added 27 new showcase entries to the Silverlight Showcase on the site.  One in particular that I think is interesting is a project Gantt representation done in Silverlight with complete capabilities for moving the timeline, etc.

This example, created by iLog, demonstrates some creative uses of Silverlight for line of business applications.  Check out the other 27 new showcase entries on the site and subscribe to the feeds to stay up-to-date on what is happening on the Silverlight community.

FeedReader is a web part for Microsoft SharePoint server products (MOSS and WSS).  It’s purpose is to aggregate more than one feed in a single web part.  The built-in XML and RSS web parts for SharePoint only allow one feed by default.  feedreader can support Atom or RSS feeds.  Please report any issues as a Work Item on the project.  Source code is also available on the project site under a very permissive license.

Thanks for using feedreader!


This work is licensed under a Creative Commons Attribution By license.

Sharing Knowledge.  That was the theme of the Øredev conference held this past week in Malmö, Sweden.  I was invited this year to participate in this conference in the Scandanavian area to speak on Silverlight technologies.  I am very humbled to have been invited.  This was truly a great conference and let me tell you my impressions.

I’ve attended Microsoft’s PDC, TechEd, VSLive, DevConnections, etc.  I’ve got most of them all under my belt (as an attendee).  They are all good in their own regard.  The ones that are most interesting, however, are those that have an intensity about them and a collaboration among the other attendees who may or may not know each other.  That is what I felt at Øredev this past week.  This was the ultimate “code camp” which brought together a ton of different technology conversations in the setting of a large conference.  There was representation from both technology and practices: .NET, Java, project management, user experience, Agile/Scrum methodologies, mobile development, etc., etc.  You name it, it was there.

Along with Beatriz Stollnitz (Costa), I spoke on Silverlight, specifically accessing data and writing custom controls.  After each session we were invited to dig deeper with any attendees who wanted in a “chalk talk” setting, which I did and was able to get some good feedback to take back to a few teams at Microsoft.  After each time I presented, I was presented with a “thank you” certificate on behalf of the conference, which represented a donation to UNICEF.  The conference decided to ensure that the technical community in that area give back to a cause that needed assistance.  At the end of the conference, representatives of UNICEF were presented with a donation of around 200,000 SEK from the Øredev conference.  Very nice.

At the beginning of the conference, the city hosting us, Malmö, invited the speakers to attend a nice dinner at the city hall with the deputy mayor.  I personally thought it was very cool of the city to be involved and a classy act on their behalf (and the conference organizers).

What made Øredev special to me was the sincerity of learning and diversity in attendees.  Generally, even at the local code camps I’ve attended, there always seems to be this animosity between technology experts.  Not here.  In fact I spent an hour talking with an engineer from the JavaFX team about what they are doing, seeing some of their thoughts and learning about what essentially amounts to a competitive platform for the area I work in.  There was no “ours is better” moments in that conversation.  In fact he also mentioned that he’d not really paid attention to Silverlight until this week and is impressed with some of what he saw.  People from Google were there showing Android and getting people excited about that (and they brought it on a few different devices other than what I think is the ugly G1 form factor).  It was a perfect environment for learning together about different things and having open conversations about the technology, and as well as what we as software engineers can do to help create better software and innovate more in what we are already doing.

One cool logistic thing I liked about the conference was removing the long form evaluation concept for speakers.  Instead of relying on people to go to a web site after the fact and enter in an evaluation (which is very hard to collect and usually yields an incredibly low ratio of those who attend sessions actually filling out feedback), each attendee of every session was asked to “vote” on their way out of the room.  There were 3 stacks of cards: Red, Yellow, Green.  You pick the one that fit your impression of the session and put it in the bucket.  This removes the negative marks from the speaker for things like “couldn’t hear, chairs squeeky (which they were), too cold” and so on.  Those type of feedback are needed and still collected by the various delegates that are mingling with the crowd throughout the week.  I wish every conference I went to simplified down to this!

Of the other cool things, I was able to get a demonstration of Strangeloop Network’s AS1000 appliance for ASP.NET applications.  I spent time talking with Richard Campbell and understanding what it does and then proceeded to actually see the effective results in action.  Holy crap it was cool.  If you want better overall performance of your site to our users, you owe it to yourself to check it out.  I’m trying to convince my manager now that we need one!

It was also very fun to meet Linus, Chris, George, Magnus and Michael who all had a part in organizing the conference either as a speaker, track lead, and Michael as one of the main organizers with Emily.  Magnus had invited some people to his flat at the beginning of the conference, but jetlag was evil on me and I didn’t make it…I heard it was a blast as well.  Having dinner with Ted “The Dude” Neward watching him trying to survive a 600gr steak was also a great night in Sweden.  I was able to stay through the weekend and hang out with Richard and Carl and Glenn Block in Copenhagen touring the city and having some great conversations (or at least I think they were).

Overall, hanging out with smart and fun people and participating in this conference was a really exciting time.  If you are close to the area, it is a not-miss conference in my opinion, so mark your calendars for next year.  I hope that I might be invited back in the future.

So thank you to Linus, Magnus, Emily and Michael for inviting me to participate and making it special.  I think the show was a success and your region should be very proud of this conference!  Great job to all!