<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The MossyBlog Times Archives 2007 - 2009 : RIA Handbook</title><link>http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx</link><description>Tags: RIA Handbook</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The Wow Effect (10secs vs. 10mins)</title><link>http://blogs.msdn.com/msmossyblog/archive/2009/03/28/the-wow-effect-10secs-vs-10mins.aspx</link><pubDate>Sat, 28 Mar 2009 01:37:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9515164</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/9515164.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=9515164</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=9515164</wfw:comment><description>&lt;p&gt;The explosions of plug-ins today have brought innovative ways to visual experience online in ways that are both exciting and dangerous. I say dangerous, as on one hand they are visually appealing they are at times useless and typically can end up becoming a trend.&lt;/p&gt;  &lt;h3&gt;The Muse.&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/TheWowEffect10secsvs.10mins_DB82/image_6.png" width="430" height="220" /&gt; &lt;/p&gt;  &lt;p&gt;I had the pleasure of being a part of a workshop at MIX09 with &lt;a href="http://www.cynergysystems.com/blogs/page/rickbarraza" target="_blank"&gt;Rick Barazza&lt;/a&gt; in which he highlighted a point called the 10second vs. 10minute wow. I must admit I didn’t pay all that much attention as I was in/out with customers, but I felt I understood his point he was attempting to make. In my own words I’ll echo where I think this point could go?&lt;/p&gt;  &lt;p&gt;If you see a solution and in the first 10seconds, you get immediate feedback of emotion (meaning wow, this rocks) it’s easy to then grade that as “this is the best of the web”. If after 10mins however your feedback with the said experience begins to degrade and it’s simply this cool effect that has little or no functional purpose, it’s not past the crucial 10minute wow.&lt;/p&gt;  &lt;p&gt;Essentially you have 10seconds to make an impact, you then have the next 9mins 50 to retain that impact and should you still score high post the 10minute mark, your ability to produce an effective experience has greater potential.&lt;/p&gt;  &lt;h3&gt;Let’s look at a WoW Effect Matrix. &lt;/h3&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/TheWowEffect10secsvs.10mins_DB82/image_14.png" width="430" height="108" /&gt; &lt;/p&gt;  &lt;p&gt;Got to a site on &lt;a href="http://www.thefwa.com" target="_blank"&gt;FWA&lt;/a&gt; and pick 10 sites. Now grab a pen and paper, and rate your experience after 10 seconds of usage (allow for loading etc). &lt;/p&gt;  &lt;p&gt;At the 10second interval, I want you to then rate the experience in two categories. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Form (0= Average and 5=Outstanding).        &lt;br /&gt;&lt;/b&gt;Form is about the user experience, was it fun to use, did you find it easy to navigate, was it rewarding etc, all emotive feedback you can muster and allocate a score against that connects via UI.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Function(0=Average and 5=Outsanding)&lt;/b&gt;       &lt;br /&gt;Did this experience have a purpose, did you retain any information that helped you? Was it able to provide you with anything beyond a visual connection? &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;   &lt;br /&gt;Write down your score for both. Now proceed to repeat this again after 10mins of using the said solution (should you even feel compelled to stay for the full 10mins. If you don’t then they automatically are rated 0).&lt;/p&gt;  &lt;p&gt;Now using the &lt;strong&gt;WoW Effect Matrix&lt;/strong&gt; below for each score per category, you’ll see what WoW effect you potentially could have per category.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/TheWowEffect10secsvs.10mins_DB82/image_3.png" width="430" height="456" /&gt; &lt;/p&gt;  &lt;p&gt;If you score high meaning the &lt;font color="#004364"&gt;&lt;strong&gt;darkest blues&lt;/strong&gt;&lt;/font&gt;, you’ve done a great job in each category and stand to retain your audience beyond the initial viewing. If however you &lt;strong&gt;&lt;font color="#62b0ff"&gt;score low&lt;/font&gt;&lt;/strong&gt;, your ability to retain the audience maybe high risk and consider balancing out the Function vs. Form aspect of your experience.&lt;/p&gt;  &lt;p&gt;If you score in &lt;font color="#c6e2ff"&gt;&lt;strong&gt;the middle&lt;/strong&gt;&lt;/font&gt;, then it’s not that bad, but it could go either way and so it would reduce your risk of abandonment by optimizing in either category that you feel is weak.&lt;/p&gt;  &lt;h3&gt;Why is this important to those whom create with Silverlight?&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/TheWowEffect10secsvs.10mins_DB82/image_17.png" width="430" height="265" /&gt; &lt;/p&gt;  &lt;p&gt;There’s this myth floating around on the web, that unless you have ubiquity, people won’t install plug-ins. It’s actually false, and look at either Flash or Silverlight download rates and you’ll see that people are willing to install a plug-in should the experience or solicitation of the said experience be worth the install.&lt;/p&gt;  &lt;p&gt;The reason this myth is being portrayed is because folks tend to look at their failure to install rates and go “ahah! See, plug-ins are bad..long live AJAX”. I see this all too often and shake my head, as typically they failed in soliciting the end user to actually install – “Get Silverlight” isn’t solicitation, its laziness.&lt;/p&gt;  &lt;p&gt;Assuming they do install or have the said plug-in, the next argument is “ahah! See they didn’t stay, people don’t like plug-ins” which is also incorrect. You didn’t hold up to your end of the bargain, meaning you didn’t produce a compelling experience.&lt;/p&gt;  &lt;p&gt;As chances are, you scored low on the WoW Effect. You didn’t provide the end users a compelling experience and just because you spent 30k+ on a compelling solution, doesn’t mean you automatically get 30k+ retention in end users. It’s no different to any medium out there and it ranges from TV, Movies, Games, and Websites etc. &lt;/p&gt;  &lt;p&gt;When you produce a Silverlight experience, you simply need to balance between great visual effects and UI feedback whilst at the same time ensuring the functionality of what you’re producing has meaning. Going nuts on Deep Zoom isn’t enough as great, I can zoom in and out, so what? What else do you have for me? Why am I even here on this solution and so on?&lt;/p&gt;  &lt;p&gt;Out Of Browser whilst being hailed an immediate success already, is going to be also quite dangerous in terms of WoW Effect. As whilst it’s great I can take my experiences online and offline, the reality is why should I even bother? Just because I can, doesn’t mean I will.&lt;/p&gt;  &lt;p&gt;It comes back to balancing the function vs. form.&lt;/p&gt;  &lt;p&gt;I have no idea if this was what Rick wanted to convey, but that’s my take on &lt;strong&gt;The WoW Effect &lt;/strong&gt;anyway.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9515164" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Silverlight: VisualState Manager, Storyboards and why designers should care about them both.</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/06/30/understanding-how-visualstate-manager-s-durations-work-in-silverlight-expression-blend.aspx</link><pubDate>Mon, 30 Jun 2008 09:50:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8665257</guid><dc:creator>scbarnes</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/8665257.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=8665257</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=8665257</wfw:comment><description>&lt;p&gt;I've seen a lot of talk around VisualState Manager online and it mostly covers button states and so on. What I want to do here in this post is illustrate why VisualState Manager is a handy tool for the average interactive designer out there and how it can kind of short-cut a lot of animation transition logic automatically for you.&lt;/p&gt;  &lt;h1&gt;You can make your own States.&lt;/h1&gt;  &lt;p&gt;In &lt;a href="http://www.silverlight.net/" target="_blank" mce_href="http://www.silverlight.net/"&gt;Silverlight&lt;/a&gt; via &lt;a href="http://www.microsoft.com/expression" target="_blank" mce_href="http://www.microsoft.com/expression"&gt;Expression Blend&lt;/a&gt; you will have the ability to make your own &lt;em&gt;VisualStates&lt;/em&gt;. In my case I have a Menu that when a button is clicked it fly's down. Once clicked again, it fly's back up.&lt;/p&gt;  &lt;p&gt;First things first, I setup a basic wire-frame UI (always prototype people!) in which I have an outer-chrome and underneath it, I have a &lt;font color="#008040"&gt;&lt;strong&gt;Green&lt;/strong&gt;&lt;/font&gt; rectangle which represents the &amp;quot;menu&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Closed:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="111" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb.png" width="450" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;Opened:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="97" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_2.png" width="450" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That's the intent anyway. &lt;/p&gt;  &lt;p&gt;Inside Expression Blend, on the Far left you should see this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="181" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_3.png" width="260" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is the area where you can add your own VisualStates. In this case, if you click on the &lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="25" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_13.png" width="35" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_13.png" /&gt; icon, you will get &amp;quot;&lt;font color="#0000ff"&gt;Add State Group&lt;/font&gt;&amp;quot;, which should automatically add a &lt;strong&gt;StateGroup&lt;/strong&gt; for you.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New StateGroup added.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="159" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_18.png" width="247" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_18.png" /&gt; &lt;/p&gt;  &lt;p&gt;Now, notice the 0s next to the &lt;strong&gt;&lt;em&gt;StateGroup&lt;/em&gt;&lt;/strong&gt; Label (You can change the Label if you want by the way to suite a more appealing name). The 0s input is essentially the total duration of time it will take to go between each state housed within this group. It's currently at 0s which means that there will be no animated transition between states. To enable an animation between states, bump this up to more than 0, (0.5seconds will be great starting point, as anything lower and it's hard to visually gauge the transition).&lt;/p&gt;  &lt;p&gt;At this point, go ahead and Add two States via the &lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="22" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_21.png" width="26" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_21.png" /&gt; menu (+ meaning add, - meaning remove).&lt;/p&gt;  &lt;p&gt;You should end up with the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_25.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_25.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_10.png" width="260" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_10.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h1&gt;Setting up the States.&lt;/h1&gt;  &lt;p&gt;At this point, go ahead and rename the State and State1 to &lt;strong&gt;PullDown&lt;/strong&gt; and &lt;strong&gt;PullUp&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="127" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_28.png" width="260" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_28.png" /&gt; &lt;/p&gt;  &lt;p&gt;Click on &lt;strong&gt;PullDown's&lt;/strong&gt; state. &lt;/p&gt;  &lt;p&gt;If you are familiar with the way StoryBoards work inside Expression Blend, then you will notice that the timelines per state can exist (by default they aren't added until you add them via clicking on the &lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="22" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightVisualStateManagerStoryboard_FAC5/image_3.png" width="32" border="0" /&gt;&amp;#160; icon). This is called &amp;quot;in-state animation&amp;quot;.&lt;/p&gt;  &lt;p&gt;This is quite a powerful, as basically we've provided you the ability to add your own amount of animation per state. In this case, I've made my Green Rectangle fly down from 0y to 130y within the PullDown in-state animation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_30.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_30.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="389" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_12.png" width="450" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_12.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_34.png" mce_href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_34.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="407" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_14.png" width="450" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_thumb_14.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I've made the duration for the animation around 2seconds which in this case means that although my animation for that state is expected to run for 2 seconds it won't (well not quite like that)&lt;/p&gt;  &lt;p&gt;Why won't it?&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="72" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_37.png" width="450" border="0" mce_src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UnderstandinghowVisualStateManagersDura_F46C/image_37.png" /&gt;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;0.5s&lt;/strong&gt; here will add to the overall actual animation. As the way VisualStateManager works is that it will take 0.5s to go from PullUp state to PullDown state. Once the transition has completed, it will then play the 2second animation.&lt;/p&gt;  &lt;p&gt;In total, your entire transition will take 2.5 seconds. Important thing to note here, is that should you want it to take 2seconds you just make the actual StateGroup (NxsRibbonMenuState) 0s.&lt;/p&gt;  &lt;p&gt;The reason I would opt for a 0s Duration is that this allows you to attach your own easing (in/out) sequence per state, whilst allowing you to have a multi-step animation (meaning the animation can play different effects per tick on the Timeline). &lt;/p&gt;  &lt;p&gt;This could also be done simply using a basic Storyboarding approach, but you don't get the flexibility of accessing the VisualStateManager via code-behind and you also have to write your own reverse routines should the user wish to interrupt the sequence of animation.&lt;/p&gt;  &lt;h1&gt;Why use States for Animations then?&lt;/h1&gt;  &lt;p&gt;In my case I wanted to enable a Menu to come down and up when the user clicks on a button. I also want it to also allow the user to change their minds and reverse the animation should they click the button half way.&lt;/p&gt;  &lt;p&gt;VisualState Manager's can provide a great way to achieve this, as in my Button's Click handler, I simply tell it which state to go to and the rest automatically takes care of itself.&lt;/p&gt;  &lt;p&gt;What does that mean though? say you've clicked on PullDown and the animation of PullDown state is half-way through (meaning 1sec into the animation). If you then trigger the state change to PullUp, VisualStateManager will automatically figure out how to transition all properties adjusted whilst in PullDown State back to PullUp state, automatically.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note: When I say automatically (it's half true) what really happens is that Blend will create some storyboards within the VisualState tags. This is done at design-time but at run-time it essentially is automated in terms of figuring out how to go from AS-IS to a TO-BE.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Pretty powerful yes?&lt;/p&gt;  &lt;p&gt;Here's some code to illustrate how you switch between states.&lt;/p&gt;  &lt;div class="csharpcode" style="overflow: auto; width: 430px"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; NxsRibbon : UserControl &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{ &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; NxsRibbon() &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    { &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        InitializeComponent(); &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        CURRENT_STATE = &lt;span class="str"&gt;&amp;quot;PullDown&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        VisualStateManager.GoToState(&lt;span class="kwrd"&gt;this&lt;/span&gt;, CURRENT_STATE, &lt;span class="kwrd"&gt;true&lt;/span&gt;); &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.btnTest.Click += &lt;span class="kwrd"&gt;new&lt;/span&gt; RoutedEventHandler(onButtonTestClick); &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    } &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; CURRENT_STATE; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;void&lt;/span&gt; onButtonTestClick(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e) { &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;switch&lt;/span&gt; (CURRENT_STATE) &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        { &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;PullDown&amp;quot;&lt;/span&gt;: &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                CURRENT_STATE = &lt;span class="str"&gt;&amp;quot;PullUp&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                &lt;span class="kwrd"&gt;break&lt;/span&gt;; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;default&lt;/span&gt;: &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                CURRENT_STATE = &lt;span class="str"&gt;&amp;quot;PullDown&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                &lt;span class="kwrd"&gt;break&lt;/span&gt;; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        } &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        VisualStateManager.GoToState(&lt;span class="kwrd"&gt;this&lt;/span&gt;, CURRENT_STATE, &lt;span class="kwrd"&gt;true&lt;/span&gt;); &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    } &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager(VS.95).aspx" target="_blank" mce_href="http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager(VS.95).aspx"&gt;VisualState Manager&lt;/a&gt; is quite a powerful feature within Silverlight and Expression Blend. You just have to treat it with care, and keep your eye on the durations as the StateGroup will always win the fight.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8665257" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Expression+Blend/default.aspx">Expression Blend</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Animation/default.aspx">Animation</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Design/default.aspx">Design</category></item><item><title>Silverlight Experiment: Create a PullDown Menu using Storyboards.</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/06/29/silverlight-experiment-create-a-pulldown-menu-using-storyboards.aspx</link><pubDate>Sun, 29 Jun 2008 07:09:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8666034</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/8666034.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=8666034</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=8666034</wfw:comment><description>&lt;p&gt;This is a basic example of how to create a &amp;quot;PullDown Menu&amp;quot; using Silverlight and Expression Blend.&lt;/p&gt;  &lt;h1&gt;The Objectives&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;The GUI will have a PullDown Menu (UserControl) under the main outer chrome. It's intended that when a user clicks on the &amp;quot;MainMenu&amp;quot; it will not only change state, but animate down or up (depending on the previous state it was resting in - default being Up). &lt;/li&gt;    &lt;li&gt;The End User will need to have the ability to interrupt the animation should they decide to cancel the action, as a result the menu will react to the End User's intended action and reflect the direction change as well as state change. &lt;/li&gt; &lt;/ul&gt;  &lt;h1&gt;The Expected Outcome.&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="326" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="326" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb_1.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h1&gt;The Blueprints.&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="312" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb_3.png" width="444" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1x &lt;strong&gt;OuterChrome&lt;/strong&gt; Control       &lt;ul&gt;       &lt;li&gt;1x TopLeft Corner Bitmap (Static) &lt;/li&gt;        &lt;li&gt;1x Top Bitmap (Stretch Horizontally) &lt;/li&gt;        &lt;li&gt;1x Left Bitmap (Stretch Vertically) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;1x &lt;strong&gt;PullDownMenu&lt;/strong&gt; Container       &lt;ul&gt;       &lt;li&gt;1x InnerMenu Control (NxsRibbon) &lt;/li&gt;        &lt;li&gt;1x LowerBar Bitmap (Static) &lt;/li&gt;        &lt;li&gt;1x PullDown Tab Bitmap (Static) &lt;/li&gt;        &lt;li&gt;1x PullUp Tab Bitmap (static) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h1&gt;The Process&lt;/h1&gt;  &lt;ol type="1"&gt;   &lt;li&gt;Create the the WireFrames.      &lt;ol type="A"&gt;       &lt;li&gt;Create a &lt;font color="#008080"&gt;UserControl&lt;/font&gt; in Blend, call it &lt;strong&gt;NxsApplication.xam&lt;/strong&gt;l (this will be your base)           &lt;ol type="i"&gt;           &lt;li&gt;Change its Metrics to be 1000px, 760px. &lt;/li&gt;            &lt;li&gt;Change the &lt;font color="#0000ff"&gt;NxsApplication.LayoutRoot&lt;/font&gt; from Grid to Canvas (as you want things to freely float).               &lt;br /&gt;              &lt;br /&gt;&lt;strong&gt;NxsApplication.xaml&lt;/strong&gt;               &lt;br /&gt;              &lt;br /&gt;              &lt;div class="csharpcode" style="overflow: auto; width: 100%"&gt;               &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RCIA.Containers.NxsApplication&amp;quot;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1000&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;760&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinearGradientBrush&lt;/span&gt; &lt;span class="attr"&gt;EndPoint&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0.5,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;StartPoint&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0.5,1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GradientStop&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF000000&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GradientStop&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF131313&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Offset&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinearGradientBrush&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;style type="text/css"&gt;










.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/li&gt;
        &lt;/ol&gt;
      &lt;/li&gt;

      &lt;li&gt;Create a &lt;font color="#008080"&gt;UserControl&lt;/font&gt; in Blend, call it &lt;strong&gt;NxsShell.xaml&lt;/strong&gt; (this will be your Chrome) 

        &lt;ol type="i"&gt;
          &lt;li&gt;Keep &lt;font color="#0000ff"&gt;NxsShell.LayoutRoot&lt;/font&gt; type as Grid. &lt;/li&gt;

          &lt;li&gt;Inside &lt;font color="#0000ff"&gt;NxShell&lt;/font&gt;, define the Grid Definition as having the below (you basically want to use the Grid to help you scale-9 the overall assets). 

            &lt;br /&gt;

            &lt;br /&gt;&lt;strong&gt;NxsShell.xaml&lt;/strong&gt; 

            &lt;br /&gt;

            &lt;div class="csharpcode" style="overflow: auto; width: 100%"&gt;
              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RCIA.Controls.NxsShell&amp;quot;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;300&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:d&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:mc&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;mc:Ignorable&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;d&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:vsm&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,0,0,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FFFE0000&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,0,0,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF213986&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,0,0,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FFA42020&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,0,0,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF0943FF&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

              &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
            &lt;/div&gt;
          &lt;/li&gt;
        &lt;/ol&gt;
      &lt;/li&gt;

      &lt;li&gt;Create a &lt;font color="#008080"&gt;UserControl&lt;/font&gt; in Blend, call it&lt;strong&gt; NxsRibbon.xaml&lt;/strong&gt; (this will be the container you place your ribbon into). 

        &lt;br /&gt;

        &lt;br /&gt;&lt;strong&gt;NxsRibbon.xaml&lt;/strong&gt; 

        &lt;br /&gt;

        &lt;br /&gt;

        &lt;div class="csharpcode" style="overflow: auto; width: 100%; height: 326px"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RCIA.Controls.NxsRibbon&amp;quot;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1000&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;180&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns:vsm&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PullDown&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt; &lt;span class="attr"&gt;BeginTime&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;00:00:00&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;rectangle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame&lt;/span&gt; &lt;span class="attr"&gt;KeyTime&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;00:00:01&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;130&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame.KeySpline&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;KeySpline&lt;/span&gt; &lt;span class="attr"&gt;ControlPoint1&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ControlPoint2&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame.KeySpline&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PullUp&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt; &lt;span class="attr"&gt;BeginTime&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;00:00:00&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;rectangle&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame&lt;/span&gt; &lt;span class="attr"&gt;KeyTime&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;00:00:01&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame.KeySpline&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;KeySpline&lt;/span&gt; &lt;span class="attr"&gt;ControlPoint1&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0,1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ControlPoint2&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1,1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame.KeySpline&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SplineDoubleKeyFrame&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF0D0D0D&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;160&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;962&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;30&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;-115&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF35E50C&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Stroke&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF000000&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;rectangle&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ScaleTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SkewTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RotateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TranslateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Rectangle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;23&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;81&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;911&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;149&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Open...&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;btnTest&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
    &lt;style type="text/css"&gt;












.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

    &lt;ol&gt;
      &lt;li&gt;Inside &lt;font color="#0000ff"&gt;NxsRibbon.LayoutRoot&lt;/font&gt;, create a rectangle and a button. &lt;/li&gt;

      &lt;li&gt;Name the button &amp;quot;&lt;font color="#0000ff"&gt;btnTest&lt;/font&gt;&amp;quot;. &lt;/li&gt;
    &lt;/ol&gt;

    &lt;p&gt;&amp;#160;&lt;/p&gt;
  &lt;/li&gt;

  &lt;li&gt;In &lt;font color="#0000ff"&gt;NxsAplication&lt;/font&gt; instantiate the GUI assets. 

    &lt;ol&gt;
      &lt;li&gt;In &lt;strong&gt;NxsApplication.xaml.cs&lt;/strong&gt; instantiate &lt;font color="#0000ff"&gt;NxsRibbonMenu&lt;/font&gt; &lt;font color="#008080"&gt;UserControl&lt;/font&gt;. As this will ensure it has the lowest z index. &lt;/li&gt;

      &lt;li&gt;In &lt;strong&gt;NxsApplication.xaml.cs&lt;/strong&gt; instantiate &lt;strong&gt;NxsShell&lt;/strong&gt; &lt;font color="#008080"&gt;UserControl&lt;/font&gt;. As this will ensure it has the highest z index. 

        &lt;br /&gt;

        &lt;br /&gt;&lt;strong&gt;NxsApplication.xaml.cs&lt;/strong&gt; 

        &lt;br /&gt;

        &lt;br /&gt;

        &lt;div class="csharpcode" style="overflow: auto; width: 100%; height: 303px"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; NxsApplication : UserControl&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; NxsShell NXS_SHELL;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; NxsRibbon NXS_RIBBON;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; NxsApplication()&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            InitializeComponent();&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="rem"&gt;// Add the Nexus Ribbon&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            NXS_RIBBON = &lt;span class="kwrd"&gt;new&lt;/span&gt; NxsRibbon();&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(NXS_RIBBON);&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="rem"&gt;// Add in the Nexus Chrome.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            NXS_SHELL = &lt;span class="kwrd"&gt;new&lt;/span&gt; NxsShell();&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            NXS_SHELL.Width = Width;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            NXS_SHELL.Height = Height;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.LayoutRoot.Children.Add(NXS_SHELL);&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        }&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    }&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;

  &lt;li&gt;In &lt;strong&gt;NxsRibbon.xaml.cs&lt;/strong&gt; register the &lt;font color="#0000ff"&gt;btnTest&lt;/font&gt; to initiate the &lt;font color="#0000ff"&gt;PullDown&lt;/font&gt; and &lt;font color="#0000ff"&gt;PullUp&lt;/font&gt; Animations. &lt;/li&gt;

  &lt;li&gt;In &lt;strong&gt;NxsRibbon.xaml.cs&lt;/strong&gt; register the Animation state to ensure that if the user wishes to interrupt either the &lt;font color="#0000ff"&gt;PullDown&lt;/font&gt;/&lt;font color="#0000ff"&gt;PullUp&lt;/font&gt; animations that they react in a way that halts the current storyboard, switches to the opposite storyboard and then continues to play. 

    &lt;br /&gt;

    &lt;br /&gt;&lt;strong&gt;NxsRibbon.xaml.cs 
      &lt;br /&gt;&lt;/strong&gt;

    &lt;br /&gt;

    &lt;div class="csharpcode" style="overflow: auto; width: 100%; height: 303px"&gt;
      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; NxsRibbon : UserControl&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        Boolean CURRENT_PULLDOWN_STATE;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        Boolean IN_MOTION;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; NxsRibbon()&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            InitializeComponent();&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.btnTest.Click += &lt;span class="kwrd"&gt;new&lt;/span&gt; RoutedEventHandler(onButtonTestClick);&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.PullDown.Completed += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(PullDown_Completed);&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.PullUp.Completed += &lt;span class="kwrd"&gt;new&lt;/span&gt; EventHandler(PullUp_Completed);&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            CURRENT_PULLDOWN_STATE = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            IN_MOTION = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; PullUp_Completed(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            CURRENT_PULLDOWN_STATE = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            IN_MOTION = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; PullDown_Completed(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        {&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            CURRENT_PULLDOWN_STATE = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            IN_MOTION = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; onButtonTestClick(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e) {&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (IN_MOTION)&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (!CURRENT_PULLDOWN_STATE)&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                    IN_MOTION = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                    CURRENT_PULLDOWN_STATE = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                    PullDown.Pause();&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                    PullUp.SeekAlignedToLastTick(PullDown.GetCurrentTime());&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                    PullUp.Begin();&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                    IN_MOTION = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                    CURRENT_PULLDOWN_STATE = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                    PullUp.Pause();&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                    PullDown.SeekAlignedToLastTick(PullUp.GetCurrentTime());&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                    PullDown.Begin();&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!CURRENT_PULLDOWN_STATE)&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            {&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                IN_MOTION = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;                PullDown.Begin();&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            {&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                IN_MOTION = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                PullUp.Begin();&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            }&lt;/pre&gt;

      &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        }&lt;/pre&gt;

      &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;    }&lt;/pre&gt;
    &lt;/div&gt;
    &lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;The Conclusion&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt; I found that it was faster to create the initial &lt;strong&gt;StoryBoard&lt;/strong&gt; for &lt;font color="#0000ff"&gt;PullDown&lt;/font&gt;. Once I was happy with the way it animated in/out, I then Duplicated the &lt;strong&gt;StoryBoard&lt;/strong&gt; (via this &lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="23" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_11.png" width="32" border="0" /&gt; ). I renamed the &lt;font color="#0000ff"&gt;PullDown&lt;/font&gt;_Copy to &lt;font color="#0000ff"&gt;PullUp&lt;/font&gt; and under the same icon (&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="23" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_11.png" width="32" border="0" /&gt;) I &amp;quot;Reversed&amp;quot; it. This basically figured out how to revert the various properties that are being changed to the appropriate state.&lt;/li&gt;

  &lt;li&gt;Keeping track of the &lt;font color="#008080"&gt;IN_MOTION&lt;/font&gt; and &lt;font color="#408080"&gt;CURRENT_PULLDOWN_STATE&lt;/font&gt; was relatively easy, and although I have a few ideas on how we can improve this concept going forward, it's pretty trivial to setup.&lt;/li&gt;

  &lt;li&gt;Adjusting the animation Easing via the &lt;strong&gt;KeySpline&lt;/strong&gt; editor can attract various results on both Up/Down. It pays to think more about how this will affect the End User firstly, but also the fundamental question you will need to answer going forward &amp;quot;Is this going to annoy them?&amp;quot; if the answer is yes, look to shorten the animation duration or adjust the Easing.

    &lt;br /&gt;

    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_13.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb_5.png" width="205" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;The Outcome.&lt;/h1&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_17.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="328" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb_7.png" width="450" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This took me less then 30mins to complete. You will also note that I used only basic elements found within XAML to setup the wire frames. I did this as this illustrates that an Interactive Persona can setup the various pieces required to ensure the animation and basic events are ready for the next step in the workflow.&amp;#160; &lt;br /&gt;

  &lt;br /&gt;This means that you could have someone sitting designing the textures and detailed composition of the artwork in their nominated Art Tool. At the same time you could have an Engineer writing the actual &lt;strong&gt;NxsRibbonMenu&lt;/strong&gt; so that it mimics the &lt;a href="http://en.wikipedia.org/wiki/Office_Fluent_Ribbon#Ribbon" target="_blank"&gt;Office Ribbon concept&lt;/a&gt;.&amp;#160; &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_15.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="226" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/SilverlightCreateaPullDownMenuusingAnim_10C0F/image_thumb_6.png" width="450" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;Once all three have completed their individual contribution to the GUI, they are then able to meet for a &amp;quot;Happy meeting&amp;quot; where they basically look at how they are going integrate the pieces into the GUI.

  &lt;br /&gt;

  &lt;br /&gt;In this case, the Interactive Persona is able to swap out the rectangle placeholders and apply specific bitmap textures or whatever it is that is required to execute on the visual finish.

  &lt;br /&gt;

  &lt;br /&gt;Once that's completed, the same persona is also then able to swap out the dummy &lt;strong&gt;NxsRibbonMenu&lt;/strong&gt; place holder and implant the real Control, with it's own black boxed composition.&lt;/p&gt;

&lt;p&gt;This could highlight that using Expression Blend, Visual Studio and Silverlight that three individual personas are quite able to build, design and animate independent of one another. It does however also indicate that there needs to be a Interactive Architect in the room to ensure all the various placeholders and external pieces fit into their respective places within the overall Application composition.&lt;/p&gt;

&lt;h1&gt;Special Notes&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Nexus is a home grown Silverlight framework being written by a few friends / co-workers of mine (we decided to collaborate on an idea to test some best practices out). This framework isn't likely to be publicly available but should it do so, I'll let you folks know at that appropriate point in time.&lt;/li&gt;

  &lt;li&gt;All visual assets are copyright to me. Basically if I see you stealing my art, I'll hunt you down as don't be that guy/gal whom does that. Ask though should you wish to use it, as I'm pretty open.&lt;/li&gt;

  &lt;li&gt;This was fun and that's what this whole RIA conversation is about, having fun.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8666034" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Expression+Blend/default.aspx">Expression Blend</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Art/default.aspx">Art</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Animation/default.aspx">Animation</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Design/default.aspx">Design</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Nexus/default.aspx">Nexus</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>RIA is slowly fading in terms of it's definition.</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/04/20/ria-is-slowly-fading-in-terms-of-it-s-definition.aspx</link><pubDate>Sun, 20 Apr 2008 04:26:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8410653</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/8410653.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=8410653</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=8410653</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisslowlyfadingintermsofitsdefinition_A0C2/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px; border-left: 0px; border-bottom: 0px" height="260" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisslowlyfadingintermsofitsdefinition_A0C2/image_thumb_1.png" width="225" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When I first started the RIA Evangelism role in Microsoft, I had this nagging feeling that the term RIA was just all over the place. Depending on which technology you are backing and which stream of alliance you uphold, the truth is the term was destined to be abused before it really took off.&lt;/p&gt;  &lt;p&gt;I even &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/10/14/rich-interactive-application-the-plot-thickens-adobe-s-not-happy.aspx" target="_blank"&gt;tried to provoke conversation around it&lt;/a&gt;, by waving a big red flag and saying &amp;quot;Microsoft is about to use Rich Interactive not Rich Internet Application, debate me on it&amp;quot;. Oh they debated me on it and lots of it, as the end conclusion was simply folks didn't care what the definition was, so long as we all understood Macromedia owned it in 2002. Such logic baffles me to this day.&lt;/p&gt;  &lt;p&gt;I started to see some Adobe Staffers in many respects abuse the very term they acquired, by mixing the pool with Rich Branded Experiences against RIA, and if it had Flash - well it was RIA. I challenged many of them on that, and the result ended in personal character warfare.&lt;/p&gt;  &lt;p&gt;After all these blog battles, arguments, debates and so on,&amp;#160; the term is becoming lost in the struggle over which technology is better than the other. The true essence of what I thought RIA stood for has now become a buzz word, much like the &amp;quot;Web 2.0&amp;quot; or &amp;quot;Social Networking&amp;quot;. That's sad, not because I am attached to the term, but simply because it's a much easier way for customers to frame the conversation with other customers, and not have to spend time educating them.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.zdnet.com/Stewart/?p=817"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisslowlyfadingintermsofitsdefinition_A0C2/image_3.png" width="260" align="right" border="0" /&gt;&lt;/a&gt; Ryan Stewart, has &lt;a href="http://blogs.zdnet.com/Stewart/?p=817"&gt;recently tried his best to define the term RIA&lt;/a&gt;, but has failed. It's not that Ryan doesn't get it, but simply - who is he to define the term? (In that it's not about Ryan, but who is he to define it? debate that first and then follow up with a merit debate on the semantics of the term).&lt;/p&gt;  &lt;p&gt;Some folks loyal to the Adobe cause will support him, others whom aren't will argue the point with him (have already). In the end, the term is now up for debate, with no single winner or owner but simply open for mob rule.&lt;/p&gt;  &lt;p&gt;The team with the biggest horde will own the definition - for a while, that is until someone or something with large amount of credibility and marketing power will change the landscape once again.&lt;/p&gt;  &lt;p&gt;Can you sit here and honestly blame Microsoft in many respects for leaning more towards the term Rich Client Platform vs RIA, sure it doesn't start the conversation with the right framing - as most regard RIA has holy and all that is good ( DO NOT TOUCH stickers are ready to put around it's term). Yet, Rich Client Platform is simply a way for us internally to define what it is we are setting out to do. To build a Rich Client &lt;strong&gt;Platform&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Welcome to the Internet, where a terms definitions is as good as those who lobby for it inside wikipedia. Mob rules.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8410653" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category></item><item><title>RIA Designers are smart.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/12/13/ria-designers-are-smart.aspx</link><pubDate>Thu, 13 Dec 2007 05:01:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6753969</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/6753969.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=6753969</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=6753969</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_thumb.png" width="244" align="right" border="0" /&gt;&lt;/a&gt; One thing annoys me more than anything in this world, is when I hear folks whom aren't designers refer to them as &amp;quot;pony tail, black skivvy wearing...&amp;quot; and the comments trail off.&lt;/p&gt;  &lt;p&gt;It's not that I care whether they think we have pony tails, it's more to the point that it smacks of contempt at times for what it is these folks do. In that, I don't think it's deliberate and I'm sure in most cases it's said with a positive tone, but underneath it all there is a slight amount of &amp;quot;contempt&amp;quot;.&lt;/p&gt;  &lt;p&gt;I personally think interface designers are a smart breed and especially those whom are skilled in RIA. As when you look at most RIA solutions or any interface in today's software, one thing that gets overlooked is depth.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_thumb_2.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In that when you're designing a button for example, there are highlights and shadows associated to the design. That's the basics pretty much there, but when you then look at other elements and composition of some interface designs, have you not noticed the visual representation of depth found within these designs?&lt;/p&gt;  &lt;p&gt;It doesn't really stop there, then there is also the colour selection, in that what colours are correctly placed within to underpin the usability of how an end user is able to navigate through various checkpoints in a User Interface.&lt;/p&gt;  &lt;p&gt;This is all done at the design stage in most counts, as once an initial theme has been settled upon, the designer not only keeps that momentum going forward but at the same time is conscious of various variables that need to be factored into the overall equation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px; border-left: 0px; border-bottom: 0px" height="136" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIADesignersaresmart_A8F0/image_thumb_1.png" width="244" align="left" border="0" /&gt;&lt;/a&gt; Designing an Interfaces for RIA isn't always about shape adjustments, colour composition and pony tails. At times a lot of thought goes into both the x,y &amp;amp; z axis of how one is able to look at a 2D visual design and almost walk away believing they are viewing 3D but from a &amp;quot;front view&amp;quot;.&lt;/p&gt;  &lt;p&gt;So if you're a non-designer today, and you speak about them tomorrow, spare a thought for the thought process these folks go through in order to help make software what it is today.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6753969" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Design/default.aspx">Design</category></item><item><title>Putting the Rich in RIA : User Account Profiles.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/12/02/putting-the-rich-in-ria-user-account-profiles.aspx</link><pubDate>Sun, 02 Dec 2007 12:58:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6641837</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/6641837.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=6641837</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=6641837</wfw:comment><description>&lt;h4&gt;A User Account Today.&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_Cool_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="NexusApplication_Cool" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_Cool_thumb.jpg" width="240" align="right" border="0" /&gt;&lt;/a&gt;Typically when you set out to build a RIA, you look at what data you're about to keep about a persons account. In that obviously &amp;quot;Username, Password and Email&amp;quot; are three key pieces of information you need to begin.&amp;#160; The rest is the other metadata associated to an account, and in CRM's you'd go deeper in terms of phone numbers etc.&lt;/p&gt;  &lt;p&gt;The data is up to you and I'd never dictate what you should and shouldn't capture. What I am focused on is how you present that data, in that how &amp;quot;Rich&amp;quot; do you want the experience to be in terms of presenting what is probably the most boring data in a RIA.&lt;/p&gt;  &lt;p&gt;I'd wager majority use Tabs + Forms and basically categories this into neat portions that are close to being semantically correct (in terms of which heading they fall under - look into information architecture).&lt;/p&gt;  &lt;h4&gt;Context is what though?&lt;/h4&gt;  &lt;p&gt;What's the context of having a person(s) username &amp;amp; password in a form along side their other information? Isn't this more of a security thing vs a personal bio? What if you're profiling your accounts based on experience they've had with you as well? where do you put that data?&lt;/p&gt;  &lt;p&gt;Point is, suddenly your tabbed approach starts to get bogged down and the next thing you know it, you're facing a comprehensive set of tabs (stacked ontop of one another most likely) and the form probably grows in metrics - width/height to accommodate).&lt;/p&gt;  &lt;h4&gt;Let's put the Rich back into RIA.&lt;/h4&gt;  &lt;p&gt;Well, I'd now argue that if you're using some of the new RIA technologies, why the heck are you using Tabs? In that, you've got the ability to go beyond a form now, in that the technology is a blank canvas and the experience is up to your imagination (alongside some basic Usability Principals).&lt;/p&gt;  &lt;p&gt;That's the key, why present a form which after traversing through a grid presents you with more then you bargained for. Why drop the experience there, why not approach it differently - radically if you will.&lt;/p&gt;  &lt;h4&gt;Step away from the Tabs as you know it..&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_4.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="NexusApplication_PDA" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_thumb_1.jpg" width="177" align="right" border="0" /&gt;&lt;/a&gt;In the blow example I did something trivial, I took all these pieces of a users profile and applied them in a format that is well similar to a Mobile Phone. &lt;/p&gt;  &lt;p&gt;The reason I did this is what's the best device on the planet at the moment that has almost figured out how to cram a lot of data into a small portion (screen). In that assign &amp;quot;icons&amp;quot; to represent what the tabs would typically do, but also do so that it's broken into piece meal format(s). Let the user then decide which part of a users detail they want to drill into. &lt;/p&gt;  &lt;h4&gt;That's all well in good, but where is the Form?&lt;/h4&gt;  &lt;p&gt;So once the &amp;quot;Profile PDA&amp;quot; (if you will) has been conjured up, how does the end user get into the form?&lt;/p&gt;  &lt;p&gt;Well, this is where your imagination needs to do it's job. In that take the above example, it states that I've selected the &amp;quot;User Profile&amp;quot; card, which in this case means &amp;quot;this is the users contact profile&amp;quot; so the form could then spring out (overlay the top of grid style layout) and present the persons details in a similar looking &amp;quot;Contact Card&amp;quot;. (Sorry still working on the artwork for that).&lt;/p&gt;  &lt;p&gt;Point is,&amp;#160; you've just isolated the overall account metadata into one small piece, once clicked it expands into a richer experience (I assume your next step will be rich!). The experience is the motivator here, in that let's make this form almost feel like some GUI found within games, like you've hacked into some year 2055 future looking CRM - have fun with the data but be serious with it, as it's business still.&lt;/p&gt;  &lt;h4&gt;What are your users thinking?&lt;/h4&gt;  &lt;p&gt; I hinted in &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/11/21/usage-metrics-in-your-ria.aspx" target="_blank"&gt;an article before&lt;/a&gt; that when you build your RIA's you should think about monitoring the users interaction with it. In that in the above GUI you will note a &amp;quot;smiley speech bubble icon&amp;quot;. This is basically an idea whereby when a user logs into the system, they not only get asked their Username &amp;amp; Password but also &amp;quot;how you feeling right now?&amp;quot;.&lt;/p&gt;  &lt;p&gt;Based on their answer, the Profile PDA adjusts it's UI to suite. This will then empower the owner of the RIA system to get an understanding of the emotional state of their users (why isn't important, it serves this example so stop asking questions).&lt;/p&gt;  &lt;p&gt;let's assume when I logged in today, I nominated my emotion as angry. This then updates a row in a database (simple flag) and the UI reacts to my emotional state (in that what if the outer GUI would reflect on colours that would help cheer me up or does something that makes me laugh? - maybe a joke in a newsticker or a funny youtube overlay).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_angry_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="NexusApplication_PDA_angry" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_angry_thumb.jpg" width="177" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_4.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="NexusApplication_PDA" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApplication_PDA_thumb_1.jpg" width="177" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Emotions are for weaklings, I love Vista how does this matter?&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="91" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/image_thumb.png" width="107" align="right" border="0" /&gt;&lt;/a&gt; Well, as you'll note in the Profile PDA next to the &amp;quot;Scott Barnes&amp;quot; part, there is also a &amp;quot;Vista Zealot&amp;quot; icon (I got these from an icon set called &amp;quot;Forum Faces&amp;quot;). In my RIA I'm curious to know what type of breed my profiles are? in that what do their peers think of them and again, can the User Interface react to suite this (advertising could suite more towards Vista compatible software instead of BeOS hehe). If the account in question was a Mac fanboi etc you could also insert an icon that represents this.. etc etc..&lt;/p&gt;  &lt;h4&gt;Conclusion.&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApp_Profile_Angry_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="NexusApp_Profile_Angry" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/PuttingtheRichinRIAUserAccountProfiles_118BE/NexusApp_Profile_Angry_thumb.jpg" width="240" align="right" border="0" /&gt;&lt;/a&gt; The objective of this post was to trigger thought, in that you are armed with some of the greatest, most agile and excited technology to build with and the first thing we typically see in most RIA's is a typical &amp;quot;form&amp;quot; mentality and I often ponder on this. I can see it's easier to ship, and well I don't fault that at all. It just irritates me the most though, as I think user experience isn't just about pre-defined design patterns, it has more potential and the objective I'd like to see tomorrow's RIA have is that they react to context.&lt;/p&gt;  &lt;p&gt;I want software to react to me for a change, I want to be able to punish and reward my software and lastly I want it to be something that can adjust my mood and that of the work force.&lt;/p&gt;  &lt;p&gt;Software isn't just about balancing general ledgers, it can also be about fun and just because you're building a complex financial system doesn't mean it also can't be fun at the same time.&lt;/p&gt;  &lt;p&gt;Think about it, why does the Friday emails get sent around in email about some funny random act that happened around the world. It helps break the day up a little and that's my hope for RIA.&lt;/p&gt;  &lt;h4&gt;Q.What's that RIA you're building Scott?&lt;/h4&gt;  &lt;p&gt;I've got this idea for a RIA Platform, it's something I've been very slowly chipping away at for the past 2 years. It's being built in Microsoft technology (was built in Adobe Flex), and I'll expand more another day, as I'm not ready to talk about it just yet (it's my personal project that I hope to release before I grow old and retire heh).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(I'm also thinking of ways to one day pitch it internally to become a Microsoft Product.. i have but a dream..)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6641837" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Next+Generation+RIA/default.aspx">Next Generation RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category></item><item><title>Usage Metrics in your RIA</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/11/21/usage-metrics-in-your-ria.aspx</link><pubDate>Tue, 20 Nov 2007 17:00:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6433334</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/6433334.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=6433334</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=6433334</wfw:comment><description>&lt;h4&gt;Inspiration comes from Games.&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UsageMetricsinyourRIA_1517F/xbox2Reduced_2.jpg"&gt;&lt;img id="id" style="border-right: 0px; border-top: 0px; margin: 10px; border-left: 0px; border-bottom: 0px" height="108" alt="xbox2Reduced" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/UsageMetricsinyourRIA_1517F/xbox2Reduced_thumb.jpg" width="154" align="right" border="0" /&gt;&lt;/a&gt; I was at &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/11/18/mix-on-campus-brisbane-qut.aspx" target="_blank"&gt;MIX ON CAMPUS (Brisbane)&lt;/a&gt; today and I was listening to one of our guest speakers (&lt;a href="http://sky.fit.qut.edu.au/~brown8/" target="_blank"&gt;Ross Brown&lt;/a&gt;) talk about about some of the projects / research his students are doing with regards to games. One part of this session that really caught my interest was the metrics associated around the usage of games and how one is able to pinpoint events / ripple effects associated to game design.&lt;/p&gt;  &lt;p&gt;An example was around how in a game like WoW, where a druid suddenly picks a fight with other characters, what would be the ripple effect of this event occurring. Using a tracking graph, one is able to pinpoint when the druid attacked and one furthermore is able to determine if the druid is now to powerful or not powerful enough, thus restoring balance back to the game.&lt;/p&gt;  &lt;h4&gt;Games are RIA's but have different content.&lt;/h4&gt;  &lt;p&gt;When you factor in a game like World of Warcraft vs Hotmail, what are the differences (other then the obvious context). In that in its primitive state, HumanA logs into ServiceA, HumanA interacts with ServiceA using various features within ServiceA. HumanB does the same as HumanA, only they use it differently (maybe left handed mouse etc).&lt;/p&gt;  &lt;p&gt;If you're not tracking this, then how do you know what's really going on behind the scenes? Where are the usage bottle necks and how do you ensure that User Experience Architect that you forked out a small fortune for isn't just some crack pot fortune teller after all?&lt;/p&gt;  &lt;p&gt;The only real way is to validate your usage. In that look at ways in which you not only monitor the structure of your user interface but log various events within it. This in turn provides valuable data in which you can later aggregate and analyze to determine what the next features will look like or more to the point which features constantly get overlooked or never used.&lt;/p&gt;  &lt;p&gt;This isn't new, don't get me wrong and the idea has been around for quite some time. A lot of folks do do this in fact one local guy within my area and resident WPF Guru &lt;a href="http://jcooney.net/archive/2007/04/15/49061.aspx" target="_blank"&gt;has done this many moons ago&lt;/a&gt; (&lt;a href="http://jcooney.net/" target="_blank"&gt;Joseph Cooney&lt;/a&gt;). He was measuring various data points to determine what his consumers of his application (&lt;a href="http://thoughtex.net/" target="_blank"&gt;Thoughtex&lt;/a&gt;) were up to.&lt;/p&gt;  &lt;p&gt;&lt;img height="101" src="http://blogs.msdn.com/blogfiles/amitava/WindowsLiveWriter/CertifiedforWindowsVistalogoTestCaseFAQT_D8FC/clip_image002_4.jpg" width="200" align="right" /&gt;We also see hints of this in mainstream auto-mated bug reporting found within all Operating Systems (&amp;quot;Do you want to send a report back to Microsoft&amp;quot;) etc. &lt;/p&gt;  &lt;p&gt;Yet, we need to do more .. much more, especially in the RIA space as this will help underpin/elevate RIA perception further.&lt;/p&gt;  &lt;h4&gt;Reward them.&lt;/h4&gt;  &lt;p&gt;&lt;img src="http://achievements.schrankmonster.de/Achievement.aspx?text=You have unlocked the secret of RIA" /&gt;&lt;/p&gt;  &lt;p&gt;Once you figure out what you want to measure and why, and it can be anything just so long as it doesn't impact on performance. Yet, be careful at the same time.&lt;/p&gt;  &lt;p&gt;For instance, I floated the &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/05/22/learn-from-video-games.aspx" target="_blank"&gt;idea of XBOX Achievement&lt;/a&gt; style concepts past our Hotmail folks internally (ie wouldn't it be great to have more areas of Hotmail open up with the more you use it? reward the power users if you will). They loved the idea and took it onboard, but they have reservations.&lt;/p&gt;  &lt;p&gt;I thought &amp;quot;Why.. why on earth would you not act!&amp;quot;... simply put, privacy.&lt;/p&gt;  &lt;p&gt;Can you imagine the fall out if we secretly monitored not only your behavior with Hotmail but all our software? In that whilst we have positive intentions in mind, at the end of the day this is still a privacy thing and it would be a delicate balance to strike.&lt;/p&gt;  &lt;p&gt;The intent though is there, figure out a way to reward your power users and not so much your lesser users. As you in theory stand a better chance of driving User Satisfaction that much higher.&lt;/p&gt;  &lt;h4&gt;RIA is primed for this.&lt;/h4&gt;  &lt;p&gt;This is something RIA can do today, as majority of the time RIA solutions have to constantly talk back and forth between servers. Usually the outbound call is simply a case of &amp;quot;getXXX()&amp;quot; which is small in size and usually the returned response is where the hurt kicks in. So why waste that call and why not send some extra metadata down the pipe to record this information for later use.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.google.com/imgres?imgurl=http://www.useit.com/eyetracking/eyetracking_corporate_site_about_us.png&amp;amp;imgrefurl=http://www.useit.com/eyetracking/&amp;amp;h=536&amp;amp;w=400&amp;amp;sz=305&amp;amp;hl=en&amp;amp;start=30&amp;amp;sig2=gfztQRvjWSdJ_XBpYr70gw&amp;amp;um=1&amp;amp;tbnid=4RRBGb3tEjAO0M:&amp;amp;tbnh=132&amp;amp;tbnw=99&amp;amp;ei=0-VCR7GWF4PSgAOFx-noCA&amp;amp;prev=/images%3Fq%3Dheatmap%26start%3D18%26ndsp%3D18%26svnum%3D10%26um%3D1%26hl%3Den%26rls%3Dcom.microsoft:*%26sa%3DN"&gt;&lt;img height="132" src="http://tbn0.google.com/images?q=tbn:4RRBGb3tEjAO0M:http://www.useit.com/eyetracking/eyetracking_corporate_site_about_us.png" width="99" align="right" /&gt;&lt;/a&gt;RIA is primed for this kind of thinking as the technology itself is agile enough to cope with this, and more to the point has enough technological prowess in the room to do some smart overlays with that said data (in that you could heatmap areas of interest within your GUI).&lt;/p&gt;  &lt;p&gt;This to me is where analytics in the future should head, it's providing a service that RIA Producers can tap into and relate such information back to their chosen solution. Not only that, it also helps determine performance spikes, as after all you're exposing a desktop like experience to the entire web, much like most mainstream games do today.&lt;/p&gt;  &lt;p&gt;What impact does this have and how can you correlate your UX against your server logs in the event of a crash?&lt;/p&gt;  &lt;p&gt;If anyone needs me, I'll be talking to the Live.com guys about this and seeing where I can take some of my ideas around this further. &lt;/p&gt;  &lt;p&gt;Understand, RIA isn't about just putting a presentation tier ontop of disparate systems, it's also about ensuring it fits snugly within an entire platform and what impacts it can and can't have.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6433334" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Next+Generation+RIA/default.aspx">Next Generation RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category></item><item><title>POC #1 - Project Harmony (pt1) (Silverlight &amp; Flash)</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/11/15/poc-1-project-harmony-pt1-silverlight-flash.aspx</link><pubDate>Thu, 15 Nov 2007 11:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6248634</guid><dc:creator>scbarnes</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/6248634.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=6248634</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=6248634</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="76" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I've been enjoying the overall experience of what Silverlight has to offer since I started with Microsoft back in January 07. That being said, I've often been an internal &amp;quot;goto&amp;quot; person at times for some Flash advice on behalf of Microsoft customers around the world.&lt;/p&gt;  &lt;p&gt;In light of this, recently I also encountered a situation where a customer was looking to use both Silverlight and Flash together, something which I kind of gave a confused look at? (ie .. not because I wanted them to pick ours etc, but more to the point what was the root of the problem).&lt;/p&gt;  &lt;p&gt;The problem was simply that they had deadline to meet, they wanted to retain the video in Windows Media format but were looking to use the GUI inside Flash as a base. Fair enough, this isn't a &lt;a href="http://en.wikipedia.org/wiki/Zero-sum" target="_blank"&gt;Zero Sum Game&lt;/a&gt; and we play well with others.&lt;/p&gt;  &lt;p&gt;This isn't the first I've seen similar stories around this, but mostly its from Design shops around the world whom are keen to embrace Silverlight and Flash (fingers in both barrels) but are kind of skittish to start with (i.e. the assumption is really you have to pick a team, red vs blue).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="334" alt="Screenshot of Project Harmony" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_1.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Thus, I decided to put together this proof of concept, titled &amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;Harmony&lt;/font&gt;&lt;/strong&gt;&amp;quot;. The project is quite extensive and I'll spend the next month dissecting it and talking about different cross-sections of how you as a designer &amp;amp; developer are able to produce compelling enriching experiences with Silverlight and that you can execute on your creative vision. The rest is simply semantics and bits/bolts.&lt;/p&gt;  &lt;p&gt;In this first iteration of my &lt;strong&gt;Project &amp;quot;Harmony&amp;quot;&lt;/strong&gt; I wanted to test to see how well the performance would be in the event one was to use 90% Silverlight and 10% flash. In that overlay Flash on top of Silverlight and see what happens.&lt;/p&gt;  &lt;p&gt;The results speak for themselves, suffice to say that I really put in a lot of gratuitous animations in Silverlight to really try and break the performance overall.&lt;/p&gt;  &lt;p&gt;You can view for yourself here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.demo.members.winisp.net/poc1/" href="http://www.demo.members.winisp.net/poc1/"&gt;http://www.demo.members.winisp.net/poc1/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(Note: Link Requires &lt;a href="http://www.silverlight.net/getstarted" target="_blank"&gt;Silverlight 1.1&lt;/a&gt; and Flash 9.x)&lt;/p&gt;  &lt;h3&gt;My Objectives for this first iteration was:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;       &lt;h4&gt;Objectives (v1.0)&lt;/h4&gt;     &lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Determine to see if Flash&amp;#xA0; (Transparent windowless) degrades in performance in the event it sits on top of Silverlight.&lt;/li&gt;      &lt;li&gt;Determine if PNG overlays impact the performance of the video whilst mixed with Flash.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;       &lt;h4&gt;Conclusion (v1.0)&lt;/h4&gt;     &lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;I did see some performance degrading on both technologies, but that is mostly due to both making use of alpha transparency (I'm yet to meet a runtime of any brand that can withstand alpha transparency)&lt;/li&gt;      &lt;li&gt;Working inside Flash &amp;amp; then crossing over to Visual Studio / Expression Blend is not for the feint hearted (I kept tripping up in C# vs AS3.0 scripting syntax hooks hehe - nothing against both technologies but its more of a mind map thing).&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;       &lt;h4&gt;Highlights (v1.0)&lt;/h4&gt;     &lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Using PNG's a designer is capable of doing some interesting things to a graphical interface. In this case&amp;#xA0; used a bullet that appears to not only be embedded into the TV Screen but also shatters it.       &lt;br /&gt;        &lt;br /&gt;I also added the &amp;quot;bullets&amp;quot; in the top right corner as PNG overlay to also test how 2xOverlays inside the Video would perform.        &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_16.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="80" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_7.png" width="433" border="0" /&gt;&lt;/a&gt;        &lt;br /&gt;&amp;#xA0;&lt;/li&gt;      &lt;li&gt;Using Video Reflection within Silverlight, one is able to really bring home a gloss finish by giving it a &amp;quot;glass&amp;quot; effect (as we all know there isn't enough glass effects online       &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_18.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="201" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_8.png" width="244" border="0" /&gt;&lt;/a&gt;         &lt;br /&gt;&amp;#xA0;&lt;/li&gt;      &lt;li&gt;Using an infinite loop within Silverlight, I was able to create a &amp;quot;ambiance&amp;quot; feel to the UI by making two sets of images fade in/out underneath the Flash area and the Silverlight&amp;#xA0; Video. This again, was to really see how the performance would go with a Silverlight animation underneath Flash.       &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="103" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_4.png" width="433" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="115" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_3.png" width="167" align="right" border="0" /&gt;&lt;/a&gt;Using Adobe Photoshop for the bitmap artwork, I stumbled upon a technique whereby if you take a photo, duplicate its layer and then apply &amp;quot;gussian blur&amp;quot; with 50% transparency it kind of gives this glow/ambiance effect commonly seen in most games today. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;Silverlight (Video aside of course) handles its progressive loading of assets in a unique way, I'm yet to put my finger on it but I must look into this more as I expected the GUI to take much longer to load (as there aren't any preloaders in this design).       &lt;br /&gt;        &lt;br /&gt;&amp;#xA0;&lt;/li&gt;      &lt;li&gt;The Flash Slider (ie works like iTunes) was done reasonably quickly, and the code has already been ported to Silverlight suffice to say, it looks seamlessly integrated within the GUI and unless you don't have Silverlight or Flash installed, it would argueably be forgiven as being part of one technology not 2.       &lt;br /&gt;        &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="80" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/POC1ProjectHarmonypt1SilverlightFlash_10191/image_thumb_2.png" width="433" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;It's a small experiment at first, mainly to test the waters and see what holds together initially. &lt;/p&gt;  &lt;p&gt;The walk away message here is simple, this isn't a &lt;a href="http://en.wikipedia.org/wiki/Zero-sum" target="_blank"&gt;Zero Sum Game&lt;/a&gt; firstly and I want to stress that the most. The other impact is that if you're keen to try Silverlight but aren't quite ready for that big leap, it's ok you can use both without penalties implied. &lt;/p&gt;  &lt;p&gt;The last but most important of all, is prove your concepts initially. In that if you're looking to switch from using Flash (for whatever reason) and aren't bold enough to do the lock stock and barrel or aren't allowed to, that's ok. Establish some objectives initially, build a Proof of Concept (POC) and chip away at the idea, as you will no doubt learn both technologies limitations faster than any book can really teach you.&lt;/p&gt;  &lt;p&gt;The secret of a truly successful RIA in my opinion is knowing the technologies limitations.&lt;/p&gt;  &lt;p&gt;The next POC (pt2) I'll talk more about the JavaScript Bridge and how I was able to make the Thumbnail Slide load up the Video Playlist etc. I'm also putting together some Video Casts on not only how I made this but also will upload the code once I get it locked into &lt;a href="http://www.codeplex.com" target="_blank"&gt;Codeplex.com&lt;/a&gt; (open source). All code &amp;amp; design is hand-made by myself only.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(&lt;strong&gt;NOTE&lt;/strong&gt;: This is a crude, raw POC and progress bars etc for both technologies aren't important for this initial purpose. They are coming, and I'll talk more about that later. Again, this is a POC so don't lock this down as some end to end final production grade solution).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(&lt;strong&gt;NOTE&lt;/strong&gt;: I used &lt;a href="http://www.whatistheorangebox.com/" target="_blank"&gt;Teamfortress 2&lt;/a&gt; Artwork, because it's my favorite game at the moment, I have personal history with it and well, the Soldier video is by far the funniest game trailer I've seen in quite some time. Valve Software are legends in my book - My Steam ID is &amp;quot;[te] Skittlez&amp;quot;)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Next: &lt;strong&gt;&lt;em&gt;The &amp;quot;HOW&amp;quot; (Code Dump / VideoCast).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Related Post: &lt;a title="Writing Proof of Concept RIA&amp;#x27;s" href="http://blogs.msdn.com/msmossyblog/archive/2007/11/11/writing-proof-of-concepts-ria-s.aspx"&gt;Writing Proof of Concept RIA's&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6248634" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Flash/default.aspx">Flash</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Adobe/default.aspx">Adobe</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Mashup/default.aspx">Mashup</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Going+Flex+to+Silverlight/default.aspx">Going Flex to Silverlight</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/UXE/default.aspx">UXE</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Art/default.aspx">Art</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Skinning/default.aspx">Skinning</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Animation/default.aspx">Animation</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/POC/default.aspx">POC</category></item><item><title>Writing Proof of Concept RIA's</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/11/11/writing-proof-of-concepts-ria-s.aspx</link><pubDate>Sun, 11 Nov 2007 13:35:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6095965</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/6095965.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=6095965</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=6095965</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="76" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_thumb_2.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you sit down one night and decide to road-test a theory or an idea you have, then a &lt;a href="http://en.wikipedia.org/wiki/Proof_of_concept" target="_blank"&gt;Proof of Concept&lt;/a&gt; (POC) is something you should consider. That being said, when you do decide to write a POC knowing the difference between when you are writing a POC vs Application is something you can easily fool yourself into doing the later (ie I swore it started out as a POC, but here's my RIA anyway).&lt;/p&gt;  &lt;p&gt;I say this from experience as this week I started out with a basic POC and then it slowly evolved into an full blown RIA, which don't get me wrong is fantastic to showcase once it's ready for public viewing (closing out bugs now, and about to upload). Yet, this is not what I set out to do...&lt;/p&gt;  &lt;p&gt;It's a struggle as when you start out with a POC, you want to evolve it or you can see points where you think to yourself &amp;quot;..&lt;em&gt;hmmm.. if I get more traffic hitting this, it could crash there, ok better go refactor that code and fix it up a bit..&lt;/em&gt;&amp;quot; - that's when you should halt and think to yourself - what are you doing here?&lt;/p&gt;  &lt;p&gt;Knowing when to pause, reflect and push ideas like that aside is the true art of writing a successful POC (in my opinion). As the best part of stating &amp;quot;..It's just a POC..&amp;quot; is that you get out of jail free cards in terms of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Design Patterns&lt;/li&gt;    &lt;li&gt;Performance&lt;/li&gt;    &lt;li&gt;Syntax / Coding styles (aka Code Reviews)&lt;/li&gt;    &lt;li&gt;Expectations.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are more if you consider it further, but those are the main four that rest on one's shoulders at times when writing a RIA.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;...How will this application handle under performance..&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;...How am I going to architect this so that I don't bloat the code or back myself into an OOP corner...&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;...Hmm.. I should really spend more time on the transitions as that's what visually people are expecting...&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="76" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_thumb_3.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What I normally do before I start a POC, is write up a list of Objectives. I call it my &amp;quot;POC Quest Log&amp;quot;, in that what am I trying to prove? What are my goals and benchmarks associated with the projects.&lt;/p&gt;  &lt;p&gt;I also keep a diary of the overall progress (In this case a Video Diary). I do this as it can at times be something you can go over again and get your bearings on say a year from now when you need to evolve a similar concept like the one you wrote further.&lt;/p&gt;  &lt;p&gt;Knowing when to evolve later vs today, is a key balancing point when writing POC RIA's.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="76" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_thumb.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;An example came tonight. I'm writing a Component (in Silverlight) that works like iTunes Slider, in that you have dots that represent &amp;quot;pages&amp;quot; and when you click next/back the slider animates between these &amp;quot;pages&amp;quot; within the Slider.&lt;/p&gt;  &lt;p&gt;I got the basic prototype working in under 30mins. Yet I started to think about &amp;quot;&lt;em&gt;well, what happens when there is like 100 items, what will this thing look like..&amp;quot;&lt;/em&gt; and began heading down this code &amp;quot;rabbit hole&amp;quot;.&lt;/p&gt;  &lt;p&gt;When, in the end the idea has been proven, that Masking, Using Animation Tweens and ensuring Mouse Behavior is intact. Mission successful, move on.&lt;/p&gt;  &lt;p&gt;Further with this example I was so worried about making sure the GUI would react to the way it was skinned (in that the arrows were 20x20 pixels, but what if they were 45x45 pixels tomorrow!). Again, don't worry, lock it in and put a big comment in between &amp;quot;sorry, if you want this to be elastic, then code it your darn self..&amp;quot; not only to add to this, but don't be afraid to use &amp;quot;green squares&amp;quot; to represent where your actual bitmap is likely to go.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="76" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/WritingProofofConceptsRIAs_1217B/image_thumb_1.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That is the spirit of POC's, achieve your objectives, put a line through them when you reach those milestones and learn to back away as you'll end up in a time sink.&lt;/p&gt;  &lt;p&gt;POC's are also the most perfect way to embrace a new technology or illustrate to others how a technology actually works under the covers.&lt;/p&gt;  &lt;p&gt;I'll release this POC shortly, and it's title is &amp;quot;..We Play well with others..&amp;quot; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6095965" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/POC/default.aspx">POC</category></item><item><title>RIA: 10 Questions on Icon Design - I ask our Microsoft Design folks to respond.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/10/30/ria-10-questions-on-icon-design-i-ask-our-microsoft-design-folks-to-respond.aspx</link><pubDate>Tue, 30 Oct 2007 06:08:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5775497</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/5775497.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=5775497</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=5775497</wfw:comment><description>&lt;p&gt;&lt;img src="http://msdn2.microsoft.com/Aa511280.Icons08(en-us,MSDN.10).png" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;I have an Icon fetish that is disturbingly wrong. In that I collect them, horde them and will happily spend Microsoft's good hard earned money on as many of them as I can find - if allowed. &lt;/p&gt;  &lt;p&gt;Yet, what makes Icon's so special? in that why do they enhance an applications user interface to the point where it almost is lost without them. Why does Microsoft and Apple spend a lot of money and time ensuring that menu navigation and icon's are done in a manner that's not only attractive to the eye, but enhance a users experience?&lt;/p&gt;  &lt;p&gt;Well, I decided to ask our UX folks, the same folks whom chose Icons for our operating systems, software applications and so on. I had one intent, to get to the bottom of this whole Icon business and more to see where Icon's can play a role in tomorrows RIA. RIA is going to embrace the icon market, something I have now doubt and so with this, onto the top 10 questions with &lt;a href="http://www.bisonium.com/blog/" target="_blank"&gt;Frank Bisono&lt;/a&gt; &amp;amp; Brittnie Hervey (UX demi-gods).&lt;/p&gt;  &lt;h2&gt;Top 10 Questions for the Icon Ninja's here at Microsoft.&lt;/h2&gt;  &lt;p&gt;&lt;strong&gt;Q1. What is an icon?, in that we all see them daily in software but what does the icon represent to the end user?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie:&lt;/strong&gt; An icon represents an action a user will take.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank:&lt;/strong&gt; For our purposes, an icon would be a graphical representation (small picture or object) for a file, application or command (action).&amp;#xA0; For the end user it should be an easy way to quickly identify what product they are in and what action they could take on a given object.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q2. When you choose an icon, what is the process that you go through in selecting the right one?&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; In Vista there is set usages for every icon that we define when created.&amp;#xA0; We align the concept of the functionality the user is taking to the best visual representation we can get based on elements rather than words.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; So generally you don&amp;#x2019;t just have the luxury of choosing a pre-existing icon here.&amp;#xA0; For most products or features, we create a custom icon.&amp;#xA0; On the server side, this means literally THOUSANDS of icons.&amp;#xA0; We follow the same process as Brittnie described above.&amp;#xA0; That generally means meeting with a PM and translating the description for this icon into a graphical representation.&amp;#xA0; Sometimes we have existing elements that we re-use to create an icon, other times, it&amp;#x2019;s a completely custom concept and we start from scratch.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q3. Microsoft has released some guidelines around designing icon's, do you feel that the icon design community adhere to these?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie:&lt;/strong&gt; I believe it depends on group and situation.&amp;#xA0; Our current guidelines do not map 1 to 1 to what MS sets as guidelines.&amp;#xA0; I think we adhere when appropriate.&amp;#xA0; This is a harder question to answer.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank:&lt;/strong&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; If you mean the design community OUTSIDE of Microsoft, well &amp;#x2013; it all depends.&amp;#xA0; We haven&amp;#x2019;t put out the most robust set of guidelines I&amp;#x2019;ve seen, but they are generally a pretty good start.&amp;#xA0; The main problem I have seen with regards to icons is that sometimes the importance of an icon is overlooked.&amp;#xA0; There are the obvious visual aspects of creating an icon, but then there are also things to consider such as geopolitical issues that can come back to haunt a developer or studio.&amp;#xA0; The last thing you want to do is insult a particular culture with the use of an icon that has a detrimental meaning to them.&amp;#xA0; I&amp;#x2019;ve also seen updates to products that continue to use icons developed for an older platform like XP.&amp;#xA0; If you are targeting your application to run in Vista, then you need to refresh the icons to match the visual style we have set for Vista (the aero style).&amp;#xA0; The last thing I&amp;#x2019;ll note is that all too often I&amp;#x2019;ve seen folks take a shortcut and use an icon designed for use at say 256x256 and they scale it down to fit a 16x16 block.&amp;#xA0; Or even worse, they upscale an icon.&amp;#xA0; That just doesn&amp;#x2019;t fly.&amp;#xA0; There are a number of reasons why you can&amp;#x2019;t just shrink an icon in Photoshop and call it a day, and the same goes for sizing an icon up.&amp;#xA0; At the end of the day, it just doesn&amp;#x2019;t look good.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q4. I've always said that the icon market is ripe for the picking giving the technology going forward, where do you foresee this market going and is there room for icons in formats such as XAML?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; I foresee icons becoming less important and the UI itself becoming more self explanatory.&amp;#xA0; With that being said I don&amp;#x2019;t think icons will ever go completely away, just less needed.&amp;#xA0; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; The icon market is definitely getting more advanced.&amp;#xA0; We are now seeing icons as large as 512x512 directly in the UI and with much richer detail than ever.&amp;#xA0; I totally see a future with dynamic icons that change as the application&amp;#x2019;s state changes.&amp;#xA0; As the graphics engines in our OS get better, so too will the use of icons and the value they can bring to the OS or application.&amp;#xA0; That&amp;#x2019;s just one example.&amp;#xA0; As far as XAML, there&amp;#x2019;s definitely something to be said there as well.&amp;#xA0; Right now if you take an icon created in Illustrator, you could export that as XAML and drop that right into code using Expression Blend. After all, a vector is nothing more than a mathematical computation rendered as a graphic right?&amp;#xA0; But another way to drop that into XAML is by defining a brush in Blend with an icon image and then using that brush in Blend (this is for when you only have a bitmap icon for example).&amp;#xA0; The &amp;#x201C;icon&amp;#x201D; does ok at scaling, but there is room for improvement using that technique.&amp;#xA0; XAML is definitely going to present some interesting possibilities moving forward with WPF applications.&amp;#xA0; We are still WAY early in defining that, but as we move more towards a WPF based environment, you will see more attention being given to XAML Icons.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q5. I have an icon fetish, i just seem to store them, 1000's of them. Do you also have hordes of icons tucked away on your hard drive and what is it you look for in the design styles?&lt;/strong&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;: No, I do not have many different icons I store on my hard drive but we do have thousands tucked away on a sever/share.&amp;#xA0; The design style is the same for all the icons we create, as we have the Vista guidelines we follow.&amp;#xA0; I only collect those icons. J&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; Well, I&amp;#x2019;m not going to lie here, I am a total icon fanboi&amp;#xA0; :) I literally have TENS of THOUSANDS of them hoarded away on my drives at home.&amp;#xA0; I&amp;#x2019;ve been collecting them for years.&amp;#xA0; I just love customizing my desktop and folders using custom icons.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img src="http://msdn2.microsoft.com/Aa511280.Icons12(en-us,MSDN.10).jpg" width="90%" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Q6. OSX and Windows Vista have a unique design style to both, and lately the &amp;quot;Glass Effect&amp;quot; plays a role in design style(s). Why is this so? and do you have any thoughts on the next upcoming fashionable style?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;: I believe this is because it is a new visual style that you don&amp;#x2019;t see in a lot of places, and it gives the icons an extra bang.&amp;#xA0; They feel more like a piece of art work then they do just a simple icon and glass adds some elegance.&amp;#xA0; I can&amp;#x2019;t predict the next trend, but if I had to guess, I would think it would be a hybrid between the MSN style of icons and the current Vista style, giving a little less importance to the icon, and more importance to the UI.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; Hmmm, the glass factor.&amp;#xA0; Yeah, this is all the rage and trend lately, but I think we&amp;#x2019;ll see some evolution in the coming years.&amp;#xA0; The glass thing is just a little too shiny and a little too frosty in places and I think you will start seeing that get toned down a bit.&amp;#xA0; The big effect there is transparency.&amp;#xA0; Like anything else though, too much is a bad thing.&amp;#xA0; I would totally tell you what I think the next trend in icons will be, but I&amp;#x2019;d rather keep that a secret and let you see it when we release it. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q7. What is the biggest mistake a developer or designer can do in choosing an Icon for their applications?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; In our world they could use the icon incorrectly, which then breaks the users understanding of what that icon does.&amp;#xA0; Windows, Windows Live, &amp;amp; IE all use the same library of icons so using them correctly helps the user to immediately identify what action is going to be taken when the icon is clicked, thus enhances the User experience.&amp;#xA0;&amp;#xA0; The second thing they could do wrong is size an icon up from a smaller file, pixilation then occurs in the image.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; Totally in sync with Brittnie here.&amp;#xA0; An example of using an icon incorrectly would be choosing an icon that has traditionally had a different metaphor to mean something else in your UI.&amp;#xA0; This is BAD&amp;#x2026;REAL BAD.&amp;#xA0; It&amp;#x2019;s hard to retrain people to think about something in a different way and if your use of an icon gives the user a result other than the intended result because of a bad metaphor, well then you just hosed the usability of your product.&amp;#xA0; Metaphors in general can be a bad thing and should be avoided unless it is universally known.&amp;#xA0; You have to think about localization here and what the icon could potentially mean in another culture.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q8. What advice would you give to the design market around producing a set of icons? given that most software vendors require a themed approach?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; I guess the advice I would give would depend on what style they were trying to create an icon in.&amp;#xA0; If they were trying to create an icon in the Vista style I would say the most important thing to do is work closely with the library owner so they can understand what is already built, and how to visual represent something that needs to map into our icons, and to make sure the style guide is being followed.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; For designers outside of MSFT, the #1 thing I&amp;#x2019;d say they need to know their target audience.&amp;#xA0; Sounds stupid, but if none of your users are running Vista (which we all know they should right? J), then you shouldn&amp;#x2019;t be using the Aero theme for your icons or your UI will look like butt.&amp;#xA0; This is where proper research comes into play.&amp;#xA0; Know the limitations of your product.&amp;#xA0; Think about WHERE the icon will be used, platform, form factor, etc. (mobile device or a huge honkin projection screen in a NOC center).&amp;#xA0; Think about the environment in which your icon will be seen (potential lighting situations, types of display technology).&amp;#xA0; We all like to think we are designing icons that will be used on a Windows box in a home or office environment, but the reality is that your icon could end up in a place you never expected it to.&amp;#xA0; You have to think about a lot of factors when choosing the right design.&amp;#xA0; Think ahead, anticipate the unexpected and ask a lot of questions.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q9. Icon's typically have two states associated to them (eg: recycle bin, full/empty). Yet some (Audim on OSX for example) are now using animation to represent status change, what advice would you give around keeping that from getting out of hand?&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;: I would say each situation needs to be addressed case by case.&amp;#xA0; I avoid using animation or multiple states of icons unless there is a status to an icon that needs to be represented for its functionality.&amp;#xA0;&amp;#xA0;&amp;#xA0; I think the cost of making second/third icons and the additional cost of animating those icons will keep us from doing it too often.&amp;#xA0; That is usually where I push back from when an icon of this type is requested.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; I would actually argue that it ISN&amp;#x2019;T typical for an icon to have 2 states.&amp;#xA0; There are definitely times when this is the case however.&amp;#xA0; Status change and animation are two separate things.&amp;#xA0; You can have one without the other.&amp;#xA0; I think that having status change is an effective way of providing feedback to a user for certain things.&amp;#xA0; Animation is where things would tend to get out of control if not done correctly.&amp;#xA0; In the case of an object that is synchronizing something or transferring data, I can see the value of adding animation to an icon because it&amp;#x2019;s representing that there is a task in progress. It&amp;#x2019;s live feedback letting the user know something is happening. But gratuitous animation for the sake of animation is where you start getting into the cheese factor.&amp;#xA0; How long did those flaming .gifs and websites with music last back in 1995?&amp;#xA0; Yeah&amp;#x2026; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Q10. Why can't we have a universal icon format that fits all platforms, devices and other digital surfaces.&lt;/strong&gt;&amp;#xA0; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brittnie&lt;/strong&gt;: I think it would be AMAZING to have all platforms support then same file type/format, but I don&amp;#x2019;t know if this would ever be possible considering the constraints on the web that don&amp;#x2019;t exist in the OS.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Frank&lt;/strong&gt;:&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0; I also think that the idea of a universal icon format would be ideal.&amp;#xA0; Unfortunately we live in a world where everyone wants to be king and nobody wants to concede to the other player.&amp;#xA0; You can say that about almost any format on the market.&amp;#xA0; Blue Ray vs. HD DVD /&amp;#xA0; PDF vs. XPS /&amp;#xA0; RAW vs. DNG, the list goes on.&amp;#xA0; Then you have the issue of maintaining backwards compatibility and re-engineering existing apps to take advantage of a universal format.&amp;#xA0; Then who owns it?&amp;#xA0; I think people are just set in their ways and on the grand scheme of things, a universal icon format isn&amp;#x2019;t at the top of the list of priorities for most folks.&amp;#xA0; It&amp;#x2019;s a shame really, but I guess that&amp;#x2019;s life in the 21&lt;sup&gt;st&lt;/sup&gt; century.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;Conclusion&lt;/h4&gt;  &lt;p&gt;I think that there is going to be a very lucrative market ahead for Icon Designers, especially as RIA begins to heat up more and more as technology gets advanced. Themed Icon designers, and quality ones will be in high demand along side UI designers - in fact - one could argue that a good UI designer for applications should come in armed with Icon Design capabilities. As you can then complete the entire themed experience in a way that others may not be able to.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIA10QuestionsonIconDesignIaskourMicros_B8DF/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 10px; border-left: 0px; border-bottom: 0px" height="99" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIA10QuestionsonIconDesignIaskourMicros_B8DF/image_thumb.png" width="244" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;XAML, is also something in which I think there is going to be strong possibilities around, and the ability to transfer icons back and forth amongst designer &amp;amp; developer workflow will also work towards reduction of having to design icon's for different scales (16,32,48 etc).&lt;/p&gt;  &lt;p&gt;This is also something which probably doesn't get discussed enough, in that Microsoft can offer a lot of maturity in this space going forward. We have exceptionally talented, intelligent and extremely focused User Experience folks on our payroll. I expect as time passes we will continue to see some of this thoughtleadership and maturity help shape the Microsoft Next Web strategy.&lt;/p&gt;  &lt;p&gt;RIA isn't just about technology, it also needs maturity and leaders in this space.&lt;/p&gt;  &lt;p&gt;More information on Microsoft Design, check out:    &lt;br /&gt;&lt;i&gt;&lt;a href="http://www.microsoft.com/design"&gt;http://www.microsoft.com/design&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Also we have&amp;#xA0; icon design guideline(s) which others may find useful:   &lt;br /&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/aa511280.aspx" href="http://msdn2.microsoft.com/en-us/library/aa511280.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa511280.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5775497" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Expression+Design/default.aspx">Expression Design</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Icons/default.aspx">Icons</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category></item><item><title>RIA: Difference between an Application and Website.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/10/25/ria-difference-between-an-application-and-website.aspx</link><pubDate>Thu, 25 Oct 2007 05:59:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5660334</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/5660334.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=5660334</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=5660334</wfw:comment><description>&lt;p&gt;There are many things that make up a RIA today. I posted last week about Interactive vs Internet, and I think it's played out enough. Personally my conclusion is to let the &amp;quot;I&amp;quot; be silent, and it could be &amp;quot;Information, Interactive, Internet, Interface, Idiocy&amp;quot; etc. &amp;quot;I&amp;quot; of the beholder if you will.&lt;/p&gt;  &lt;p&gt;Yet, one thing that was uncovered in the process is what really is the difference between RIA and a website? I mean technically speaking the Website of today is really getting blurry in what it's doing vs supposed to. I say this as the AJAX movement has empowered webowners (if that's the right title) to embrace JavaScript driven experiences without question (something you would of been publicly beaten up on in the early days).&lt;/p&gt;  &lt;p&gt;This blog is what I'd classify a website, but one could also argue that it has a degree of &amp;quot;application&amp;quot; associated to it, in that think of the context of use. You visit the site, you read my posts, you decide to move on or leave a comment - if you will - you reply.&lt;/p&gt;  &lt;p&gt;Now where have I seen that methodology before. Oh yes, email.&lt;/p&gt;  &lt;p&gt;What are the differences between Email Messages and Blogs, especially as more and more agents popup around the globe in helping you manage all your RSS feeds. Yet, at the grass roots of them all, they are simply websites?&lt;/p&gt;  &lt;p&gt;What is RIA today, and where is it going. Already folks from the competition are talking about branded applications being accepted as RIA? (*shrug*) &lt;/p&gt;  &lt;p&gt;Website or Application? show me the distinct difference between &lt;a href="http://www.flickr.com" target="_blank"&gt;Flickr&lt;/a&gt; and &lt;a href="http://www.picnik.com/" target="_blank"&gt;Picnik.com&lt;/a&gt;? once you do, compare the results against &lt;a href="http://nikeplus.nike.com/nikeplus/" target="_blank"&gt;Nike+&lt;/a&gt; while at the same time compare to &amp;lt;insert your favourite RIA here&amp;gt;.&lt;/p&gt;  &lt;p&gt;Confused? I know I am and I've been in this space since 1999. I must be getting old and all this new RIA fashion seems to be skewing my understanding of a website.&lt;/p&gt;  &lt;p&gt;Is it a case of &amp;quot;If it has a runtime, it's classified as RIA until proven otherwise&amp;quot; or is it even possible today to show a definitive split between website and application. That being said, the Rich part of the discussion will be easy, as it's simply a case of underpinning the user experience quality and degrees of such. &lt;/p&gt;  &lt;p&gt;Overall, I doubt there will be a true definitive answer suffice to say, the term is slowly starting to crack in places and in a very subtle way, being bent to suite different agenda's. In saying this, my conclusion is that it's fast becoming a term that lacks maturity, governance and is practically the same as other terms like CMS, CRM, ERP, SOA etc. &lt;/p&gt;  &lt;p&gt;It's what you make of it, and any whom oppose your belief is both right and wrong. It will just come down to your debating skills as to which of the two will ultimately win out. &lt;/p&gt;  &lt;p&gt;In the end, it's all a website, just with different grades of user experience housed within an aggregated view over different layers of services.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5660334" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Zealot/default.aspx">Zealot</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Politics/default.aspx">Politics</category></item><item><title>Rich Interactive Applications.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/10/19/rich-interactive-applications.aspx</link><pubDate>Thu, 18 Oct 2007 18:39:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5509784</guid><dc:creator>scbarnes</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/5509784.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=5509784</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=5509784</wfw:comment><description>&lt;p&gt;I just finished a blog post by &lt;a href="http://www.jamesward.org/wordpress/2007/10/17/what-is-a-rich-internet-application/" target="_blank"&gt;James Ward&lt;/a&gt; (by far the best Evangelist Adobe have today) and it was a bloody good post, so much so, it helped me formulate this post (inspiration can come from many things I guess).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;#x201C;I was a young man with uninformed ideas. I threw out queries, suggestions, wondering all the time over everything; and to my astonishment the ideas took like wildfire. People made a religion of them.&amp;#x201D; - Charles Darwin&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I start with this quote, as at times we all get overtaken by absolutes and assume that is the law of the land and be done with it. To challenge a belief, is never popular and to ask a community to adjust their perception can be considered misconduct or easily labeled as bullying behavior / crazy. Religions are formed based on loosely defined ideas and when an agenda is the fueling such ideas, absolute obedience is required. To then defy such obedience, those that do so can be swarmed by what I call the &amp;quot;policy&amp;quot; police, obedience must be protected at all costs.&lt;/p&gt;  &lt;p&gt;As a result, emotions boil and nothing get's resolved, except someone sure as the earth is round, get's a beating.&lt;/p&gt;  &lt;h4&gt;Allow me to explain further.&lt;/h4&gt;  &lt;p&gt;When you think of RIA what is it your mind casts an image to first? I think each person will have a unique response, but I would hazard a guess it could/may involve a focus on brand power. If you do conjure this image, you are now sadly seeing the wrong approach to RIA and you can be forgiven as branding can be easily crossbred to produce application like solutions. &lt;/p&gt;  &lt;p&gt;If you don't, ignore this post and continue on building RIA, then come back and show me or others :)&lt;/p&gt;  &lt;p&gt;RIA isn't about attention/eyeballs, it's supposed to be focused on empowering end users of a defined type, to carry out mundane task through an enriching user experience. User Experience is the key, in that a true RIA solution has the power to abstract complexity through aggregation or 360 degree view(s) of content without altering context.&lt;/p&gt;  &lt;p&gt;One would further argue this is the same principals of what a Desktop Experience should have, and I would easily agree. In fact, I hope the next evolution of the Desktop driven software does! - yet - the difference between a Desktop and RIA client, is simply that it has the ability to be positioned within the middle tier. It has the capability of being utilized on any client or device surface with minimal effort required by such end user(s).&lt;/p&gt;  &lt;p&gt;It simply put, empowers.&lt;/p&gt;  &lt;h4&gt;It looks like a desktop, therefore it's RIA right?&lt;/h4&gt;  &lt;p&gt;If you were to take a simple example, of a typical HTML bullet list of names (eg: HR Review System). Each name represents a person or entity within a organization. The end user clicks on such name, and as a result the context of view alters and the screen repaints with what typically would be a more in depth view of such person (personal details in tabs, photos, review metadata etc). If you were to then throw in some animations, form controls, transition sequences or a desktop styled menu bar - one could then argue &amp;quot;&lt;strong&gt;&lt;em&gt;behold! this is RIA, see.. it looks like a desktop&lt;/em&gt;&lt;/strong&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;Yet what has happened in reality? Sure the UX has gotten a better story behind it and it may be more inviting, but what really has happened to the context of view and how did this alter a persons experience from what is typically found within a Desktop solution of similar type (a&lt;em&gt;hah! X-Platform you say.. hold that thought&lt;/em&gt;).&lt;/p&gt;  &lt;p&gt;This is where RIA is essentially ready to take over from such a &lt;strong&gt;&lt;u&gt;web site&lt;/u&gt;&lt;/strong&gt; driven experience. It has the power to alter perception, to adjust the context further by allowing the end user to aggregate slices of such data to carry out more complex tasks yet doesn't require as much effort.&lt;/p&gt;  &lt;p&gt;If you were to swap out the bullet list of hyper linked names, and replace them with &lt;em&gt;Document Icons&lt;/em&gt; within a &lt;em&gt;&lt;u&gt;GridView Container&lt;/u&gt;&lt;/em&gt;. Each Icon has a male/female icon in the top right corner. Below such icon is maybe some other metadata (ie star rating on such users performance, profession type indicator, etc).&lt;/p&gt;  &lt;p&gt;The UX story doesn't just change, but the overall complexity becomes more abstract as now the end user has the possibility of thinking of this bullet list as becoming a living breathing document. A document that I want to drag to another zone within the User Interface. A document that I want to cut and paste elsewhere. A document that I want to print, edit or merge, A document that I want to see pages of data to view and explore with the context of a single person in mind. A desktop experience, housed within a middle tier.&lt;/p&gt;  &lt;p&gt;The experience changes, the interactivity of the experience changes and yet the data behind the rich client has the capability of staying static, un touched or passive (whichever you choose to best describe this). One has the ability to treat it like a document, but with hidden twists and turns along the way. As you scroll down a page of data around a person, you see form controls embedded within. You may even see video, audio or what have you around that person also embedded within - much like some Harry Potter magical news paper. RIA isn't about forms or emulating a desktop UI, it goes far beyond this.&lt;/p&gt;  &lt;p&gt;That is Rich Interactive Application (RIA) shifting the paradigm. It had nothing to do with the Internet, suffice to say it's housed within an agent which is connected to the Internet - or - Intranet.&lt;/p&gt;  &lt;p&gt;Whom says you can't copy and paste between Facebook and Flickr, the only thing stopping you is you're ability to aggregate the view(s) and focus on mature approach to RIA's instead of wanting Flickr and Facebook to become the &lt;strong&gt;&lt;u&gt;actual&lt;/u&gt;&lt;/strong&gt; RIA's.&lt;/p&gt;  &lt;h4&gt;RIA needs maturity to succeed.&lt;/h4&gt;  &lt;p&gt;What we are seeing publicly online more of these days, is microsite styled branded solutions being classified as RIA, something which at every turn sets the idea of RIA back further. The confusion between &lt;a href="http://en.wikipedia.org/wiki/Attention_economy" target="_blank"&gt;attention economies&lt;/a&gt; and application have given birth to such cross bred solutions, and as a result immaturity reigns supremacy. The loudest voices win all arguments and so the mob takes over control. The fallout / collateral damage? technology, partners and ecosystems underpinning RIA in it's early infancy can starve themselves of more realistic enterprise grade potential. Simply because of how easily perception becomes reality, how advertising and buzzwords overshadow core ideas and principals of design.&lt;/p&gt;  &lt;p&gt;I look at a company like Microsoft. I think of many things about Microsoft, but one thing that I find most if not all will agree upon, &lt;strong&gt;&lt;u&gt;maturity&lt;/u&gt;&lt;/strong&gt;. It's a company that works very hard at maintaining maturity (patience mostly) in it's solutions and being successful is easy, staying successful - now that is the real hard trick. Is it perfect? no, but whom/what really is perfect? Today's IT Perfection is simply an evolutionary process, growing more intelligent as time passes and trying not to repeat past mistakes from not only their own history, but others.&lt;/p&gt;  &lt;p&gt;RIA for Microsoft is important, it's the in part one of the key pillars to our future. Our over arching vision in my mind is similar to the what the original architects, engineers and designers of the Millau viaduct faced.&lt;/p&gt;  &lt;p&gt;&lt;img id="id" height="200" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Wiadukt_Millau.jpg/600px-Wiadukt_Millau.jpg" width="376" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Millau_Viaduct" target="_blank"&gt;Millau Viaduct&lt;/a&gt; is a story, of defiance. Bridges are common around the world, and there are many ways to tackle them, but the ones that stand out are the ones that are defiant in their ability to do more than just allow people to go from one end to another.&lt;/p&gt;  &lt;p&gt;Here is a bridge, that spans enormous heights and has an impressive length that would scare any politician in terms of funding (as it's construction will end up going beyond their term of employment). It crosses over terrain that roads themselves have a hard time navigating, but none the less its also made with enormous amounts of passion and it's actual design was built to inspire, to be photographed and in many ways intimidate the imagination but not scare (as well, you got to cross that damn bridge in the end).&lt;/p&gt;  &lt;p&gt;I've studied the story of this bridge as it fascinated me, and in the end it required mature thinking, mature engineering and mature ecosystem to support it's vision. You can't build something this size without a strong partners, understanding of your target audience and more importantly the best engineers money can buy.&lt;/p&gt;  &lt;p&gt;Microsoft brings years of experience in the software industry to RIA. It's bringing an entire product eco system, matched with partners whom have invested billions in the products it ship's year after year. It won't inherit &lt;a href="http://www.adobe.com/devnet/flash/whitepapers/richclient.pdf" target="_blank"&gt;someone else's legacy&lt;/a&gt;, it will look to make it's own mark, and help shape RIA into something much like what it believes marvels like Millau viaduct achieved. It won't be the only company to do so, but I would lay bets that it has the capability to raise the benchmark high.&lt;/p&gt;  &lt;p&gt;Our vision of RIA is still being built, what you see before you today is simply &amp;quot;Pillar 1&amp;quot;, the next hurdle, is Pillar 2 and so on. Understand the destination, and you will have a firm grasp on the journey ahead.&lt;/p&gt;  &lt;p&gt;What do you want to be? an engineer? architect? project manager or critic?&lt;/p&gt;  &lt;h4&gt;Competition is a good thing right?&lt;/h4&gt;  &lt;p&gt;Hold the bridge analogy in your mind.&lt;/p&gt;  &lt;p&gt;I started this post with a quote form &lt;a href="http://en.wikipedia.org/wiki/Charles_Darwin" target="_blank"&gt;Charles Darwin&lt;/a&gt;. It reminded me of this whole &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/10/14/rich-interactive-application-the-plot-thickens-adobe-s-not-happy.aspx" target="_blank"&gt;compete situation&lt;/a&gt; I seem to dance with some all to often. Folks, it's simple, a religion has been formed and disciples have been born and any whom oppose will be swarmed in those whom will try an enlighten.&lt;/p&gt;  &lt;p&gt;In fact, this entire post could be argued as a religious doctrine according to Microsoft Staffer such as myself. That's ok, I hope not but I'm indifferent to what folks do with this, suffice to say two things - I don't pretend to be the oracle of that which is RIA and I hope all it does is provoke original thinking (negative or positive, but please pause long enough to consider what RIA is).&lt;/p&gt;  &lt;p&gt;I find the RIA conversation within the Adobe blogsphere anchored down with a notion that one man's idea is tomorrows vision. It has no ending, and it really never had a beginning it was simply an idea for the future in which Macromedia products should head towards (it was bold, and the marketing brochure had me sold). It was marketed as best it could, the technology made some strong effort in the &amp;quot;Rich Internet Application aka Rich Client&amp;quot; space, but in the end it realistically didn't take as quickly as this one man hoped it would when it was authored.&lt;/p&gt;  &lt;p&gt;Like all software companies, mistakes were made and I could point out lots but in the end, the vision changed, just the doctrine didn't get updated. A new change of the guard was established and two cultures whom once fought over &lt;a href="http://www.news.com/Adobe,-Macromedia-rapidly-becoming-publishing-rivals/2100-1023_3-246913.html" target="_blank"&gt;which had the first piece in UX technology&lt;/a&gt;, united and painted what I call an upgrade to the &amp;quot;Macromedia RIA Roadmap&amp;quot; - only, it looked different to this one mans vision.&lt;/p&gt;  &lt;p&gt;At this point, I'd like to make mention of something that stuck with me when I first heard movement of Silverlight/WPF from Microsoft (pre joining Microsoft). A Macromedia staffer told me once &lt;em&gt;&amp;quot;...See, they know RIA is the future and so they are now validating it by competing in our market(s)&amp;quot;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Validating? or simply tired of waiting for the first pillar of the bridge to be built? &lt;/p&gt;  &lt;p&gt;Competition is a good thing, and it will be something that both brands will continue to knawel away at until something big happens. That big thing could be anything and everything and I don't think it will be the one whom finishes the bridge first. I think it's going to come down to many things, but the neither has the perfect solidified answer.&lt;/p&gt;  &lt;p&gt;RIA though, needs to evolve from where it was yesterday/today into where it should be tomorrow. Inheriting a Product Roadmap from one brand and expect all other brands to follow suite, isn't the way forward. Rich Interactive Applications is simply Microsoft's vision of &amp;quot;Pillar 2&amp;quot;. &amp;quot;Pillar 3&amp;quot; may take on a different name and the ultimate choice for one and all is simply figuring out which bridge is worth investing in it's construction.&lt;/p&gt;  &lt;p&gt;You can make dual investments or you can make just one. Competition is a good thing, but it can also limit your potential should you invest on blind faith. (now you can let go of the bridge analogy).    &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;The Gorilla.&lt;/h4&gt;  &lt;p&gt;&lt;img id="id" style="margin: 10px" height="180" src="http://www.delta.edu/sarosin/chimp.jpg" width="240" align="right" /&gt; RIA discussions take many forms and depending on whom your buying from and why, you will argue what you will. Yet, I'm left with a final summary of it all today.&lt;/p&gt;  &lt;p&gt;In a cage is a chimp and a 800lbs gorilla, the chimp is good at making jokes, dancing and performing amazing tricks. It captures the crowd's attention with such display and most applaud it's behavior, even the Gorilla (whilst others deplore it's caged state). Yet, it comes to feeding time, one of them goes hungry the other doesn't.&lt;/p&gt;  &lt;p&gt;The trick for you the upcoming bridge/RIA/developer/designer/disciple is to figure out whom the gorilla is, whom the chimp is and lastly but the most important of all - when is feeding time likely to begin?.&lt;/p&gt;  &lt;p&gt;There is no right or wrong answer and it's up to you to make what you will of it all. Everyone around you tells you what RIA is and isn't but in the end, you still don't know, because you're preoccupied with figuring out whom is the Gorilla and whom is the Chimp.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5509784" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Zealot/default.aspx">Zealot</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Politics/default.aspx">Politics</category></item><item><title>RIA can change context.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/09/09/ria-can-change-context.aspx</link><pubDate>Sat, 08 Sep 2007 16:45:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4829663</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4829663.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4829663</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4829663</wfw:comment><description>&lt;p&gt;Context is when you look at a situation from a perspective and generally fall into a predefined segment. In that, if I look at say Microsoft Word, my context of use is to read a document - yet others may use word to construct a document. So different roles play different parts, thus the segments of the technology is defined by context.  &lt;p&gt;A RIA runtime, is one of these products that can reshape and redefine context under the guise of being passive while unbeknown to others, it's quite aggressive in the way it hijacks segments of use.  &lt;p&gt;A couple of years ago, I meet up with a fellow-RIA developer, who showed me approaches to using the runtime that I guess challenged the way in which I've approached technology. The way in which he did this, was he showed be a before and after approach to the same software, yet one had RIA and one had HTML. It was pretty much a straight forward deal; on one side you had an ugly HTML User Interface (UI) while on the other you had this rich vibrant UI.  &lt;p&gt;The rich vibrant UI was the easier sell, as lets face it, we do tend to at times judge a book by its cover - sorry, it does happen. Yet, one thing that stood out from the start that I couldn't quite explain to others that he conveyed to me was that the perception was changed or be it, context.  &lt;p&gt;&amp;nbsp;You see, there wasn't just a sexier UI over the top, no, what was really changed was the fact that instead of seeing a HTML Bullet List of names, suddenly we were seeing a directory of documents. Yes that's right, documents which suddenly changed folk's perceptions or context of use (content/data didn't move a muscle).  &lt;p&gt;Looking at a HTML list, it's vanilla and doesn't provide you much in terms of interaction. You move your mouse over it, at times there maybe style updates but other then that it's still simply a plain old list. A developer could spice things up, by allowing a context box to hover under the mouse pointer as one moves over the listed item. Thus giving a more detailed look into what's behind the listed item ( which the developer may get some applause for ).  &lt;p&gt;&lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/08/07/ria-just-whom-really-builds-them.aspx" target="_blank" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="66" alt="riaproducer_architect" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAcanchangecontext_14C2A/riaproducer_architect_1.jpg" width="451" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Yet, what this &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/08/07/ria-just-whom-really-builds-them.aspx" target="_blank"&gt;RIA Producer&lt;/a&gt; did was change the context of the data's use, by turning a list item into a document. So now, end users could be expected to now approach the exact same data set (being for this example, a persons name and say their personal information) with pre-defined expectations. &lt;/p&gt; &lt;p&gt;The end-user could arguably, click on the document of the persons name and then expect to carry out actions such as copy or print? (desktop centric experience)&amp;nbsp;The end-user could also expect to double click on the document and see a more detailed view of the end user in a report style approach. The list (heh) could go on.  &lt;p&gt;So now, the context of use has changed - the data / content really didn't though - and it was done by trickery using a RIA runtime.  &lt;p&gt;Now, comes the AJAX evangelist(s), I see you, sitting in the front row ready to pounce on any mention of how great runtimes (such as &lt;a href="http://silverlight.net/" target="_blank"&gt;Silverlight&lt;/a&gt;) are. AJAX can do the above, no question about it, but it could also be more work to get to that point and lets face it, hunting and gathering the data in an efficient timely manner with richer UI that's controlled 100% by the agent in which its viewing across all manners of operating systems - is well... harder then it looks.  &lt;p&gt;To do the above, is basically really small amount of work - in fact the hardest part is deciding what protocol and approach you'd like to take to mine such data.  &lt;p&gt;The overall point I have is that RIA can really shift context into gear, it can not only provide radical adjustments to the perception of how data will be used within UI, but it can also be used as a bridge or conductor if you will over how disparate backend technologies can be bridled.  &lt;p&gt;It's got an easy approach to getting the visuals out of the way, so one can focus more on data transmissions back and forth. It can work closely with DOM by not only allowing it to be overlaid on top but it can also provide a much faster turn around in injecting packets of HTML into the DOM Hierarchy given via server-side.  &lt;p&gt;Context is why RIA should be used, not because "&lt;strong&gt;all the kids are doing it&lt;/strong&gt;". &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4829663" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Internet+Application/default.aspx">Rich Internet Application</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Rich+Interactive+Application/default.aspx">Rich Interactive Application</category></item><item><title>RIA User Interfaces, how much space do you waste?</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/09/08/ria-user-interfaces-how-much-space-do-you-waste.aspx</link><pubDate>Sat, 08 Sep 2007 15:49:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4828843</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4828843.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4828843</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4828843</wfw:comment><description>&lt;p&gt;&lt;strong&gt;The Story (Context)&lt;/strong&gt;&lt;br&gt;I&amp;nbsp;used to&amp;nbsp;work for a Rail company, and outside my office&amp;nbsp;was the main concourse for our "Central" station. On this platform&amp;nbsp;was a coffee shop, which basically takes up around 10m x 6m of real-estate right next to the exit gates (i.e. its half-inside the gate and half-outside the gate).  &lt;p&gt;Right across from it is also a McDonalds which once all cooking devices are installed etc takes up pretty much similar space.  &lt;p&gt;The McDonalds is constantly busy, as approx 100k people a day move in and out of the gates so one can imagine the general population that love their McDee's.  &lt;p&gt;The coffee shop however, not only sells coffee but is also part of another company that sells sandwiches and all sorts of "fresh' food. Overall, they take up twice the space as McDonalds and have a fraction of the customers.  &lt;p&gt;To be blunt, they are a waste of space.  &lt;p&gt;Reason being&amp;nbsp;was I visited it every morning to get my Coffee and Toasted Raison toast, I'd have to line-up every morning, wait approx 10mins (on a good morning) and then began a walk of shame back to my office. I kept chastising myself for giving these folks money as I felt they weren't earning it.  &lt;p&gt;They&amp;nbsp;were taking up prime real-estate and not even making an effort to entice customers away from McDonalds, something which is hard but yet most would do if given a reason, given they *could* provide a healthier alternative? &lt;/p&gt; &lt;p&gt;&lt;strong&gt;So how does this all relate to RIA &amp;amp; UI?&lt;br&gt;&lt;/strong&gt;Well simply put I often wonder a lot as to why most software these days have so much screen real-estate either wasted or simply overcrowded?&amp;nbsp; As more and more people are adopting windscreens, the ratio of UI usability is changing, and concepts like Microsoft Office's Ribbon were born to cope with managing such real estate.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/YourRIAsUIislikeaCoffeeShop_13D5F/Office_Ribbon.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="91" alt="Office_Ribbon" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/YourRIAsUIislikeaCoffeeShop_13D5F/Office_Ribbon_thumb.png" width="640" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It's about maximizing someone's work efficiency through software, not conforming to everyone else's take on how information / control is to be presented? There are obviously talented usability experts (much like my co-worker &lt;a href="http://blogs.msdn.com/shanemo" target="_blank"&gt;Shanemo&lt;/a&gt;), but not all have the budget and access to guys like him. What to do? how does one ensure the UI is within context of the end user and empowers them to gain various levels of access to content buried within such an application as a RIA (Rich Interactive/Internet Application). &lt;p&gt;&lt;strong&gt;Context will be keep you focused.&lt;/strong&gt;&lt;br&gt;Using the above Coffee Shop example, my ideal world would be to subdivide the coffee shops, put in more attractive businesses that "value add" to the 100k people walking past each day and hope that someone's busy life is that much easier. Same goes with UI, I'd prefer if software had UI built to suite a persons actual Position Description, rather then hunt for the Universal approach.  &lt;p&gt;Think back to the software you use daily, and ask yourself on a % scale? How much do you actually use? What if someone were to aggregate all these &lt;u&gt;disparate software UI's&lt;/u&gt; and provided you with a central one-stop shop that suites your &lt;strong&gt;Position Description&lt;/strong&gt; (not just your personal context)?  &lt;p&gt;Instead, its put on the "too hard" pile or "not my job" pile, much like the Eftpos/POS machines located in most stores (the ATM style side swipe ones). Has it not occurred to the Eftpos industry that a universal "side" would be great? Instead you always fumble around with it going "oops, wrong side", flip your card and try again. Think about the context in which a user is going to use your product, what are their roles within such product and lastly be bold and take risks where you can get away with it (my&amp;nbsp;colleagues in the &amp;nbsp;UXE's division will hunt me down for saying that) - but - seriously put together a risk matrix (likelihood / consequences) of shifting how features within the UI are to be positioned, whom knows you may accidentally come across your own Microsoft Office Ribbon success story.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4828843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Context+is+King/default.aspx">Context is King</category></item><item><title>Key ingredients for a RIA ecosystem.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/09/07/key-ingredients-for-a-ria-ecosystem.aspx</link><pubDate>Fri, 07 Sep 2007 04:55:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4798229</guid><dc:creator>scbarnes</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4798229.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4798229</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4798229</wfw:comment><description>&lt;p&gt;Silverlight's announcement recently caught headlines, in that it's release and partnership with Novell to ensure delivery of Silverlight via Linux is supported. This in turn underpins the notion that in order to have a successful RIA (Rich Interactive/Internet Applications)&amp;nbsp;story, you need partners and more to the point an ecosystem to support the actual runtime itself.&lt;/p&gt; &lt;p&gt;An ecosystem is something that &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/08/07/ria-just-whom-really-builds-them.aspx" target="_blank"&gt;RIA Producers&lt;/a&gt; need the most, as it's not just simply about punching out an application that can do something better then most HTML or Desktop clients are capable of doing. That's the end delivery and usually the piece that the end-user only see's, but prior to this the developer or designer needed to have buy-in to get to this point in time.&lt;/p&gt; &lt;p&gt;What are the factors that motivate a designer or developer to invest into a runtime and languages associated to such runtime? (not always in the below order either)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Community&lt;br&gt;&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/9.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="9" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/9_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; This is initially the first piece that I'd wager most would look at. If I invest into this language and runtime, whom are likely to be my peers and influencers? where could I go should I need to have support or better yet help guide me through the teenage years of learning a new technology. A strong community foundation is critical, it's key and without this it could easily shy potential new recruits away.&lt;/p&gt; &lt;p&gt;Communities should be both online and offline, have a strong support with regards to User Groups and most importantly have an easy "onramp" to learning about a runtime with minimal pain &amp;amp; suffering. Communities also ensure the possibility of career movement, with a strong community in place one is able to put out a call (marketing channel) for "recruits" to a company on a given category within the runtime. It also means folks whom have risen in the learning ranks of a runtime, can scout for potential employers.&lt;/p&gt; &lt;p&gt;Communities are the oxygen to RIA adoption.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/37.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="37" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/37_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; If you're going to build something, why not demand a tool that has an "instant build idea button" put inside it? It's but a small request is it not? Tools are also critical to successful adoption as technically we could write lines and lines of code within a plain old "Notepad" style application. This could work but we'd prefer to have colorize code, automated database layer mappings, compilers that understand strong typing and all these sorts of things that speed up our day to day lives in producing some RIA.&lt;/p&gt; &lt;p&gt;Tools need to be smart, they need to address my pain points today but also my potential future ones tomorrow and oh, could they do the same for my neighbor in the other cubicle at work. Tools need to ensure the workflow is held together for both a Developer and Designer.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Workflow&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/24.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="24" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/24_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; A workflow must be fluid, factor in both Tools and Skills and merge the two together, but also needs to be mature enough that should a recruit come to the table late, there is already lessons learnt that they don't have to go through in order to continue forward. A workflow can many things, it can be an approach to a framework housed within the Runtime but it can also be simply a way in which developers &amp;amp; designers talk amongst one another, a foundation in which they can communicate.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Partners&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/127.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="127" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/127_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; You can do all this yourself, but it will be a very prescribed approach and to locked in. A strong partner support base is really needed to ensure the adoption is sustained. Partners do many things, they enhance the runtimes touch points, they embrace and support the community driven events, they produce work around's or components to enhance both the tools and workflow but overall partners are the investment capitalists whom have pegged a stake in the ground and stated "we need this runtime to succeed more than the folks whom make it!" - trust the partners, as they will be the ones whom push the runtimes development teams to do better - they demand better and aren't forgiving should one come up short.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Conference Circuits&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/50.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="50" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/50_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; A Conference circuit is much like the community piece, but it's more of a meeting point in which partners, developers &amp;amp; designers are able to meet with one another, exchange business ideas, tips/tricks and haggle with the runtime makers to get better footing on a new way forward in their approach that touches on all of the above. These are also points in time, when the new stuff is usually announced and is where most of the heavy investment is put to ensure that it becomes a marketing channel all can rely on in terms of getting a message delivered fast and within context.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Services&lt;br&gt;&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/7.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="64" alt="7" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/7_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; You hear a lot of buzz words associated to services (Web 2.0, SOA, Software+Services etc) these are all in a nutshell a cloud of technology in which RIA Producers are likely to leverage when they either build professionally or in the "prototype" stages in life. Services for example like Twitter could be used to trickle announcements out to the community about a subject, but it's all done with pre-existing architecture. The trick for the runtime makers are that it must be agile enough to talk direct or via proxy to such services with minimal amount of coding possible.&lt;/p&gt; &lt;p&gt;Services are a great ally to the RIA eco-system, it provides an existing remote tools to leverage and with RSS/REST/SOAP/AMF etc all becoming normalized services today, one ideal goal is to have the runtimes themselves talk directly to such protocols with ease.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Distribution&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/135.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="135" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/135_thumb.png" width="64" align="left" border="0"&gt;&lt;/a&gt; A wise man once told me, there are three types of lies: A lie, Damn Lies and Statistics. Yet they do work, and so distribution can be a funny thing. It can be purely a perception thing or it can be a mathematical equation to illustrate depth of a runtimes install base.&lt;/p&gt; &lt;p&gt;It's also not just about how many sockets are installed, but it's more to do with how many more are likely to be installed and at what rate are the installs likely to happen. It furthermore is a subject in which one asks "where are the runtimes installed and how" overall, many questions are derived from the word Distribution.&lt;/p&gt; &lt;p&gt;A potential recruit will factor in two things:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Where are we today?  &lt;li&gt;Where are we tomorrow?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;A correct way to asses this is to look at the above in depth with questions like:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;How big does the community look (as they will obviously drive distribution)  &lt;li&gt;How many partners are in the room ( as they will obviously drive adoption/distribution but also pay for it in some cases - money speaks volumes).  &lt;li&gt;How easy does it first look to produce a RIA? (if the ease of use is there, then its likely to occur faster)  &lt;li&gt;How well seeded do the RIA tools look? (The runtime distribution isn't always the only point of call, look at where the Development/Designer tools sit in the market today, and how accessible is it to these folks should they wish to produce a RIA tomorrow)  &lt;li&gt;Who is using the Runtime? (Not just how many, but what influencers out there are using it). &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Thought leaders / Influencers&lt;/strong&gt;&lt;br&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/rockn_roll_1.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="64" alt="rockn_roll" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/RIAisntjustaboutRuntimeseither_99C7/rockn_roll_thumb_1.jpg" width="64" align="left" border="0"&gt;&lt;/a&gt;Lastly, these are the ones that make it all look easy. Usually an Evangelist or Community Influencer are typically these folks, as they can produce an example use of the technology that makes people pause long enough to consider the technology's strengths and weaknesses. It also can then inspire others to push the metal rivets on a runtime further and so, a thought leader is essential. These folks should then be rewarded (except if they are hired to do that) by the partners, runtime makers and community for their effort(s) as this helps motivate these folks to continue to do more, to change the conversation about RIA for better or for worse.&lt;/p&gt; &lt;p&gt;I usually call these folks "Indispensable Hero's" as every community needs them, the ones whom will champion the cause and be capable of going toe to toe with the Runtime development team on a subject that has such depth, it could end up changing the way the runtime will work in future generations.&lt;/p&gt; &lt;p&gt;A great example of an influencer would be &lt;a href="http://scobleizer.com/" target="_blank"&gt;Robert Scoble&lt;/a&gt; &amp;amp; &lt;a href="http://www.twitter.com/msmossyblog" target="_blank"&gt;Twitter&lt;/a&gt;. He used it quite heavily and in turn the degrees of influence helped twitter forward in terms of adoption. If you have the right amount of influencer(s) you can change the conversation quite rapidly.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;We also need to show we are having fun with the technology, a &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/08/07/ria-just-whom-really-builds-them.aspx" target="_blank"&gt;RIA Producer&lt;/a&gt; is typically someone whom is enjoying using the technology as technically speaking, it can be a painful experience to sit between the Web and Desktop, so in turn there is an element of fun.&lt;/p&gt; &lt;p&gt;I say, invest in RIA for today, as tomorrow you will be better off. I wouldn't stop at one brand either, I would pickup as many as possible as interoperability is vital to a runtimes succession, so in turn you may be quite capable of mashing two or more runtimes together.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4798229" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Producer/default.aspx">RIA Producer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA+Handbook/default.aspx">RIA Handbook</category></item></channel></rss>