<?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 : AJAX</title><link>http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx</link><description>Tags: AJAX</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Do you know Silverlight has an inbuilt native RSS Reader?</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/08/14/do-you-know-silverlight-has-an-inbuilt-native-rss-reader.aspx</link><pubDate>Thu, 14 Aug 2008 09:28:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8864994</guid><dc:creator>scbarnes</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/8864994.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=8864994</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=8864994</wfw:comment><description>&lt;p&gt;Interesting, I keep asking this question a lot and the responses I get are something that un-nerves me. In that, in Silverlight there is a native RSS Reader built in, so the ability to consume an RSS Feed is so easy, it's almost cheating (Sharepoint readers, pay attention here).&lt;/p&gt;  &lt;p&gt;The secret to this can be found in the namespace:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;using System.ServiceModel.Syndication;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;The class in question is the &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed(VS.95).aspx" target="_blank"&gt;SyndicationFeed.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Code example of how to use this great API, can be found here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://silverlight.net/Quickstarts/Remote/ed86e719-0da0-49e1-a9e1-b31f483070d4.aspx" href="http://silverlight.net/Quickstarts/Remote/ed86e719-0da0-49e1-a9e1-b31f483070d4.aspx"&gt;http://silverlight.net/Quickstarts/Remote/ed86e719-0da0-49e1-a9e1-b31f483070d4.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I personally have been using it with Sharepoint, in that I'm no Sharepoint 2007 guru at all, I've learnt Sharepoint through just goofing around and playing with it. Given that I'm a total newbie to the product, I decided to build out an intranet with Sharepoint, where I'd use Silverlight as the one-stop client, with it's own native forms built within and then simply leverage Sharepoint for the hard stuff (business logic, workflow, document collaboration etc).&lt;/p&gt;  &lt;p&gt;The way I did this, was I'd use RSS Feeds (that well basically come free on every Custom List etc you spin up inside Sharepoint) that would help me with my data sets, and it would do in a way that was very automatic. In that, the READ part of my RIA solution is child's play with the above RSS Reader API.&lt;/p&gt;  &lt;p&gt;Yet, comes the part on how to Create, Update and Delete. This requires forms right? RSS Reader need not apply here.&lt;/p&gt;  &lt;p&gt;That's ok, as what I've done is used a basic iframe, hidden it via CSS and using Silverlight forms, I'd data bind the forms themselves to html forms within the iframe via the &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2008/08/12/silverlight-has-a-more-natural-support-of-javascript.aspx" target="_blank"&gt;HtmlWindow Class&lt;/a&gt; (the natural JavaScript way of life in Silverlight, it's free!).&lt;/p&gt;  &lt;p&gt;As you can hopefully imagine, I've got the full power of Sharepoint now at my disposal, and Silverlight has such a passive amount of control over it that again, it's almost considered cheating. To the end user, visually it just appears 100% Silverlight and at the same time, I can easily use a hybrid approach (point is, AJAX + Silverlight can be a really good bet here).&lt;/p&gt;  &lt;p&gt;That's the reason I think Silverlight is such a powerful runtime that at times we get lost in the whole Flash vs Silverlight battle, and never really sit down and look at what's in front of us.&amp;#160; A great Line of Business RIA solution which can have a passive impact to a solution such as Sharepoint.&lt;/p&gt;  &lt;p&gt;Passive being the keyword, in that no need to learn a 3rd party language, keep it .NET, keep it inside Visual Studio, just ship.&lt;/p&gt;  &lt;p&gt;You can do this passive approach with any solution as well. &lt;/p&gt;  &lt;p&gt;Not convinced? that's ok, i'll blog about this in depth shortly but before I do, what's your thoughts on this approach?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8864994" 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/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/SyndicationFeed/default.aspx">SyndicationFeed</category></item><item><title>Silverlight has a more natural support of JavaScript.</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/08/12/silverlight-has-a-more-natural-support-of-javascript.aspx</link><pubDate>Tue, 12 Aug 2008 04:48:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8849678</guid><dc:creator>scbarnes</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/8849678.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=8849678</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=8849678</wfw:comment><description>&lt;p&gt;It was interesting to read this &lt;a href="http://news.cnet.com/8301-1001_3-10011048-92.html?tag=nefd.top" target="_blank"&gt;CNet.com article around Flash, HTML and AJAX&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It talked about the various ways in which the Adobe Flash is struggling to compete with AJAX in the RIA space. In fact, some of our early research showed that AJAX was associated with RIA, and not Flash, despite Adobe's best efforts to claim the ownership behind the acronym.&lt;/p&gt;  &lt;p&gt;The article mentioned various pieces to the Silverlight discussion, which to me wasn't enough. In that with Silverlight enabling JavaScript interoperability is more seamless and natural than Flash has ever as been.&lt;/p&gt;  &lt;p&gt;How? &lt;/p&gt;  &lt;p&gt;Well you have to take a hard look at Flash.&amp;#160; In order to merge both Flash and AJAX solutions together, there is a degree of compromise: if you wish to allow JavaScript to get deeper access to assets within the closed binary, you first have to write a method or two via the &lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/external/ExternalInterface.html" target="_blank"&gt;ExternalInterface API&lt;/a&gt;. This is like poking holes in the runtime for JavaScript to access.&lt;/p&gt;  &lt;p&gt;Example, Ryan Stewart @ Adobe was &lt;a href="http://blog.digitalbackcountry.com/?p=1560" target="_blank"&gt;quoted&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We need to bring Flash and HTML/Ajax closer together. You absolutely should be able to reach inside of the Flash Player as a JavaScript developer and pull out some of the good bits that make the Flash experience so great. We shouldn&amp;#8217;t force the &amp;#8220;1 pixel SWF&amp;#8221; or a sand-boxed Flex application. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Inside Silverlight, we've empowered JavaScript folks to have a more natural amount of access to the content within (without any extra proxy code API's). This can be done via our &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.browser.htmlwindow(VS.95).aspx" target="_blank"&gt;HtmlWindow Class&lt;/a&gt; &lt;/strong&gt;within Silverlight itself or if you're looking to access the content from JavaScript, it's simple a matter of using the below:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;document.getElementById('yourcontrolId').Content&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;From the &lt;strong&gt; .Content&lt;/strong&gt; onwards, you now have full access to the Silverlight solution as if you were accessing the content from within C#, IronJava, IronRuby etc.&lt;/p&gt;  &lt;p&gt;This again, illustrates how committed we are to ensuring Silverlight is an open cross-platform, cross-browser and cross-device solution for your next bet. As opposed to a closed binary format which has restrictions implied such as the External Interface API.&lt;/p&gt;  &lt;p&gt;We don't see AJAX as competition (in fact, Outlook Web Access was one of the first AJAX applications ever built), it's more of a complimentary extension (Silverlight v1 was released with JavaScript first, before C#) than a competitor and we've made a lot of efforts around our &lt;a href="http://www.codeplex.com/AjaxControlToolkit" target="_blank"&gt;ASP.NET AJAX Control Toolkit&lt;/a&gt; to ensure that it's being proven. You don't need ASP.NET to use the Control Toolkit either, as the source code is &lt;a href="http://www.codeplex.com/AjaxControlToolkit/SourceControl/DirectoryView.aspx?SourcePath=%24%2fAtlasControlToolkit%2fDevelopment%2fAjaxControlToolkit&amp;amp;changeSetId=35171" target="_blank"&gt;freely available&lt;/a&gt; for other dynamic languages to make use of.&lt;/p&gt;  &lt;p&gt;Further, if .NET isn't your cup of tea, that's fine you can add your own dynamic language support to Silverlight, via the DLR such as the OpenSource Project that is currently working on enabling &lt;a href="http://www.infoq.com/news/2008/01/Silverlight-PHP" target="_blank"&gt;Client-Side PHP to work ontop of the DLR.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8849678" 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/AJAX/default.aspx">AJAX</category></item><item><title>Finding your balance between AJAX and Silverlight</title><link>http://blogs.msdn.com/msmossyblog/archive/2008/01/25/finding-your-balance-between-ajax-and-silverlight.aspx</link><pubDate>Thu, 24 Jan 2008 17:30:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7222546</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/7222546.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=7222546</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=7222546</wfw:comment><description>&lt;p&gt;Tonight, I found via &lt;a href="http://twitter.com/AshleyAngell/statuses/636010802" target="_blank"&gt;twitter&lt;/a&gt; a deck &lt;a href="http://www.slideshare.net/pureclone/highperformance-javascript" target="_blank"&gt;from Plaxo&amp;#8217;s Joseph Smarr&lt;/a&gt;. In this deck he talks about the war injuries he received in heading down the AJAX route. It&amp;#8217;s a great deck and worth checking out but what I liked the most about it, was that it reminded me of my struggle back in 2002 as a web start-up.&lt;/p&gt;  &lt;p&gt;This is a story of how I made my first start-up work using RIA, but at the time didn&amp;#8217;t know what RIA was or heard of it and it was also the reason I took up Flash over DHTML &amp;#8211; aka AJAX.&lt;/p&gt;  &lt;h3&gt;I&amp;#8217;ve got an idea, let&amp;#8217;s build..&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/myapp_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="298" alt="myapp" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/myapp_thumb.jpg" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In 2002, both the Managing Director and I left the company we worked for and made a go of it with our own start-up. We had little or no money to begin with and our grand vision at the time was to build a CMS (Content Management System) that focused purely on user experience. As in those days, UX was something that most product teams would simply echo the following fatal words &amp;#8211; &amp;#8220;don&amp;#8217;t spend too much time on the UI, function is more important&amp;#8221; and thus you&amp;#8217;d see some really scary CMS. So scary, that we believed that the CMS features weren&amp;#8217;t the differentiator, but the user experience was (how funny life turns out).&lt;/p&gt;  &lt;p&gt;We however, believed back then that UX was not only important but would separate us from the pack and with this vision; we set out to make our millions. I took Coldfusion and Flash 5 and decided to build out this CMS in a way that I felt was not only unique, but had elements that I&amp;#8217;ve always wanted in a CMS but never found. The UX was simple, keep the graphics in a more &amp;#8220;pixel art&amp;#8221; form, steal as many ideas as I could from Apple in terms of their user interface guidelines and ensure that any mum or dad could use it &amp;#8211; whilst providing areas of complexity for those whom wish to venture out of the ui sandbox.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/screen1_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="326" alt="screen1" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/screen1_thumb.jpg" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I made use of DHTML (AJAX to the new comers to this space) and it was quite a bold step, as you see Internet Explorer at the time was probably the only realistic browser that made use of XmlHttpRequest. I chose to use XmlHttpRequest at the time simply because Flash 5 had imitated capabilities and I remember seeing &lt;a href="http://erik.eae.net/archives/2006/04/24/23.02.38/" target="_blank"&gt;Erik&amp;#8217;s WebOS.com&lt;/a&gt; many years before (it&amp;#8217;s by far the best AJAX/DHTML creation I&amp;#8217;ve ever seen to date &amp;#8211; incidentally &lt;a href="http://erik.eae.net/" target="_blank"&gt;Erik now works for Google&lt;/a&gt; - &lt;em&gt;&lt;strong&gt;ie Google Gears&lt;/strong&gt;&lt;/em&gt;). I wanted to take elements of &lt;a href="http://webfx.eae.net" target="_blank"&gt;Erik&amp;#8217;s gratuitous&lt;/a&gt; but elegant use of DHTML talking to server-side and also apply them to my CMS and it was pretty much what we&amp;#8217;d call &amp;#8220;RIA&amp;#8221; today (only there wasn&amp;#8217;t a buzz term for it back then).&lt;/p&gt;  &lt;p&gt;I chose to head down this path, as well, that was the technology at the time and it&amp;#8217;s all I had to work with. &lt;/p&gt;  &lt;h3&gt;User Experience took a lot of trickery to get working...&lt;/h3&gt;  &lt;p&gt;The vision of focusing on UX was sound. We found some success with the early stuff I wrote &amp;amp; designed in the previous versions. As this is what we felt helped sell the first version of the CMS (as it had really weak features). &lt;/p&gt;  &lt;p&gt;What we needed though was the ability to minimise the end users need to refresh and provide instant feedback as they interacted with the web application. In order to fulfil this I&amp;#8217;d make use of a lot of iframe and XmlHttpRequest trickery, in that I&amp;#8217;d write a Coldfusion wrapper which basically encased an iframe tag with server-side generated attributes. Then using XmlHttpRequest I&amp;#8217;d ask the server to give me back the iframe in html packets, which using the Internet Explorer DOM API inject back into the interface &amp;#8211; so yes, in 2002 I was using &amp;#8220;AJAX&amp;#8221; and didn&amp;#8217;t think anything of it, as well &lt;a href="http://webfx.eae.net/" target="_blank"&gt;Erik did it&lt;/a&gt; and it was a normal thing to be seen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/SEP-SM-SC1_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="242" alt="SEP-SM-SC1" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/SEP-SM-SC1_thumb.jpg" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I first showed this approach working in what I&amp;#8217;d call the &amp;#8220;Publish Wizard&amp;#8221;. The Publish Wizard was a feature within the CMS that allowed the end user to publish pages they had in draft form into real life static html pages (only with a .cfm extension to ensure parts of dynamic were in place). We chose to build out the pages in static form as back then search engines preferred static instead of blah.cfm?ver=1 style url&amp;#8217;s (aka we wanted friendly urls). &lt;/p&gt;  &lt;p&gt;The previous version of this feature I built used to basically generate the dynamic to static files in a way that was really bad for the end user. In that the end user would stare at a &amp;#8220;Publishing..&amp;#8221; text on a blank screen and wait for untold minutes until the process finished (we once had a government department that had 20,000 pages at one stage &amp;#8211; so imagine that wait). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/seifacedemo_v2_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="298" alt="seifacedemo_v2" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/seifacedemo_v2_thumb.jpg" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I wanted to improve on this, so I made use of the iframe / XmlHttpRequest idea&amp;#8217;s I found in Erik&amp;#8217;s work. I instead figured that Coldfusion needed to &amp;#8220;thread&amp;#8221; its processes as I found that if I could write 5 pages in one batch, it would give me 5 times the speed. The problem however still remained, in that the end user was staring at the dreaded &amp;#8220;Publishing..&amp;#8221; text. I decided to tackle this head-on, and decided that I needed a way to show progress but with a degree of accuracy as to show inaccurate progress would result in more human error (i.e. I also forgot to mention that users would assume it stalled and hit refresh, thus incomplete publishing and bugs would occur).&lt;/p&gt;  &lt;p&gt;I found that if I were to create 5 iframes hidden, and using JavaScript I would update each of the iframe URL&amp;#8217;s with a pageID to be published. Coldfusion would do its job and write out the dynamic pages to HTML and when finished would update a flag in their respective database rows. That worked, but what I really wanted to do was obviously show the visual progress being adjusted. The way I did this was using XmlHttpRequest I&amp;#8217;d ask the server &amp;#8220;what&amp;#8217;s published so far&amp;#8221; and it would return a percentage complete JavaScript object (yes, I was even using a quasi XmlHttpRequest JSON style solution).&lt;/p&gt;  &lt;p&gt;The end result was that the user was seeing progress bar updates as each batch of 5 were being published. I thought this was brilliant and how great was DHTML!&lt;/p&gt;  &lt;h3&gt;The browser started to die, people were afraid.&lt;/h3&gt;  &lt;p&gt;The Publish Wizard worked a treat and the rest of the UI flowed in similar fashion, in that I&amp;#8217;d find ways to ping/pong the server and use the iframe / XmlHttpRequest approach to minimise page refreshes. However, cracks began to immerge as once I started adding more and more of this technique to the UI, the memory started to climb.&lt;/p&gt;  &lt;p&gt;Internet Explorer had memory issues (garbage collection) and I cursed its existence &amp;#8211; it let me down!. Yet little did I know that it was actually my fault, as I wasn&amp;#8217;t disposing of my variables after use and I&amp;#8217;d cache way too many getElementById() results inside JavaScript.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/screen2_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="326" alt="screen2" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/FindingyourbalancebetweenAJAXandSilverli_6F6/screen2_thumb.jpg" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It was too late in the end to recover, as by this stage we were roughly 1 year in and I was mentally exhausted from being a lone coder, designer and architect in one. I needed a break and I had lost the passion as well as the vision. The thought of turning back and re-writing a year&amp;#8217;s worth of work was too much, and so we looked at exit strategies quickly. We made a fair bit of money and so it wasn&amp;#8217;t a total loss.&lt;/p&gt;  &lt;h3&gt;The lessons learnt, AJAX can be an evil cretin at times.&lt;/h3&gt;  &lt;p&gt;&lt;img style="margin: 10px" height="157" src="http://www.scottkleper.com/blog/ajax.jpg" width="200" align="right" /&gt;I mention all of the above, as I see the same formula apply day in day out with Web Start-ups whom preach at me around why AJAX is by far superior to Flash or Silverlight runtimes. I simply sigh when I hear them, as I could argue the point with these folks further or I could simply let them be and hope they find a better way around the pitfalls associated with AJAX. &lt;/p&gt;  &lt;p&gt;It&amp;#8217;s relatively simple folks, the browser in a nutshell was never really meant to be pushed and poked into the way it&amp;#8217;s been used today. We see great uses of AJAX daily whilst other times we see terrible, painfully poor uses of it. It&amp;#8217;s a technique that should be used only when absolutely necessary and I state this simply from experience. Experience in not just building with it many years ago, but also watching others preach the AJAX gospel only to see them a year later hit what I call the browser barrier (similar to Moore&amp;#8217;s law in terms of the thermal barrier).&lt;/p&gt;  &lt;p&gt;It happens regularly; a web application starts out great, strong and really exciting in its use of AJAX. Yet as more and more features are added, suddenly the weight of the browser begins to fail and one or two pieces of the UI stall. Then another 2 and before you know it, you&amp;#8217;re debugging JavaScript and Server-side code trying to figure out which part of the transaction is the one at fault &amp;#8211; did I put a try/catch behind that ..Or is the event bubbling right? Etc..&lt;/p&gt;  &lt;h3&gt;A Runtime is the only way to fly&lt;/h3&gt;  &lt;p&gt;&lt;img src="http://www.microsoft.com/silverlight/images/gfx_1_0.png" /&gt;     &lt;br /&gt;This is where Runtimes such as Silverlight or Flash play a strong role in today&amp;#8217;s web application(s). It&amp;#8217;s the right tool for the right job and to hide behind &amp;#8220;I don&amp;#8217;t want plug-in to be installed&amp;#8221; is no longer a fair argument. It&amp;#8217;s now a necessity to have both runtimes going forward as to do so will help shift this web 2.0 culture hells bent on using 100% Ajax applications into a different realm of user experience. &lt;/p&gt;  &lt;p&gt;The reason why, is simple &amp;#8211; the runtimes are mostly goaled on one thing. Make sure you don&amp;#8217;t make your users wait and above all else, make sure you don&amp;#8217;t make your developers wait either. Browsers on the other hand have to tread much more carefully as in the end they have to treat the web in many ways as either an application or a document. Runtimes simply treat the web as an application or animation, different rules apply and different calibre of developers &amp;amp; designers also.&lt;/p&gt;  &lt;p&gt;The simple ability to accurately predict when a data stream is likely to finish download is by far the most basic and simplistic feature within a runtime, yet the browser cannot give you this data with as much degree of accuracy.&lt;/p&gt;  &lt;h3&gt;Plaxo found out the hard way, you don&amp;#8217;t have to&lt;/h3&gt;  &lt;p&gt;I see &lt;a href="http://www.slideshare.net/pureclone/highperformance-javascript" target="_blank"&gt;Joseph of Plaxo&amp;#8217;s deck&lt;/a&gt; and I think to myself that was me in 2002 and will this madness ever end? (Note: Joseph did an exceptional job and this by no means taking anything away from him in that regard - it's more a broader question).&lt;/p&gt;  &lt;p&gt;Give the RIA idea a shot, pick up Silverlight and take it for a test spin, see what it can do to mitigate the pain ahead. Use both Silverlight and HTML together and yes, mix it up with some AJAX if you like, but consider moving away from a 100% AJAX driven solution as it&amp;#8217;s not necessary in tomorrow&amp;#8217;s web application. Remove the idea that search engine friendly RIA&amp;#8217;s are a stumbling block and instead build in your own way of ensuring users can find information in a contextual way that suites your product. Leverage Live.com cloud&amp;#8217;s API or Macros to help you achieve this as in the end separation of your content from your RIA is probably where you need to focus your energy the most.&lt;/p&gt;  &lt;p&gt;Deep linking is simply a fool&amp;#8217;s errand. Think of an alternative approach to that problem, and think of it at the start of your product&amp;#8217;s architecture as it&amp;#8217;s something you shouldn&amp;#8217;t put off until after v1.&lt;/p&gt;  &lt;p&gt;I&amp;#8217;ve been mixing Flash, Silverlight, Flex, AJAX, HTML, Coldfusion, ASP.NET, PHP, Java and XUL together for many years trying to find an ideal way to build RIA. The end result overall was simply that I tried to hand roll too much of the workload myself whilst relying on the browser to do most of the work. Instead focus on ensuring your UX Platform scales in terms of performance and can talk back and forth between the servers.&lt;/p&gt;  &lt;p&gt;I think Silverlight is going to be the better bet out of all that I've tried, and I state my job on it (heh)&lt;/p&gt;  &lt;p&gt;Well done to &lt;a href="http://www.slideshare.net/pureclone/highperformance-javascript" target="_blank"&gt;Joseph for sharing his learning(s) around AJAX&lt;/a&gt;. I think it&amp;#8217;s a great deck and special thank you to &lt;a href="http://www.faradaymedia.com/" target="_blank"&gt;Ashley of Faraday Media&lt;/a&gt; for pinging me with this URL via twitter.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7222546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Web+2.0/default.aspx">Web 2.0</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</category><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></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>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>How To: Using AjaxControlToolkit to animate Silverlight.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/10/03/how-to-using-ajaxcontroltoolkit-to-animate-silverlight.aspx</link><pubDate>Wed, 03 Oct 2007 10:47:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5256824</guid><dc:creator>scbarnes</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/5256824.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=5256824</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=5256824</wfw:comment><description>&lt;p&gt;In my Silverlight travels, I was thinking on how one is able to animate a &amp;quot;PullDown&amp;quot; menu, in that it comes down and then goes back up upon triggered events.&lt;/p&gt;  &lt;h4&gt;Approach A.&lt;/h4&gt;  &lt;p&gt;I decided to approach this using simplistic rules, where I'd create two animations inside Expression Blend using the KeyFrame Recorder.&amp;#xA0; I'd simply move the &amp;quot;Canvas&amp;quot; in question to where I want it to rest, and then within a 1 second interval, animate it upwards. I'd call this &amp;quot;&lt;strong&gt;PLMoveUp&lt;/strong&gt;&amp;quot;. I'd then take the exact concept and reverse it through a separate KeyFrame Resource (KeyFrame Resources are basically XAML code that await you to trigger their animation sequence via play/stop methods) called &amp;quot;&lt;strong&gt;PLMoveDown&lt;/strong&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_thumb.png" width="516" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This works, don't get me wrong, but sadly this approach is flawed. As how do you know where the current phase in the Storyboard is at? there aren't any &amp;quot;onStoryBoardStep&amp;quot; style events to subscribe to, resulting in &amp;quot;assuming&amp;quot; the animations end naturally. This means that if a user were to click on a button repeatedly you'd kind of get this flicker look (bad experience).&lt;/p&gt;  &lt;h4&gt;Approach B.&lt;/h4&gt;  &lt;p&gt;Instead of having two Canvas.Resource Storyboards, you consolidate into one. Then using the Silverlight API, you would utilse the power of Storyboard.AutoReverse and Storyboard.Seek(amt).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="83" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_thumb_2.png" width="523" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This works, but again, you've got to do a lot of work to poll where the animation is at, and that requires an outside &amp;quot;timer&amp;quot;. In that in order to poll the current point in time of an animation, you'd create a &amp;quot;timer&amp;quot; that would constantly ping/pong the Storyboard for an update. Yet you'd need to further assign an x:Name attribute to one of the SplineDoubleKeyFrames for this as well, as you'll want to extract the KeyTime.Seconds amount in order to determine what the latest value is currently sitting at.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="20" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_thumb_3.png" width="597" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Overall, bad.&lt;/p&gt;  &lt;h4&gt;Approach C.&lt;/h4&gt;  &lt;p&gt;Using the ASP.NET &lt;strong&gt;AjaxControlToolkit&lt;/strong&gt;, I was able to leverage the existing animation libraries to do my bidding for me. &lt;/p&gt;  &lt;p&gt;First I created a project using the &lt;strong&gt;ASP.NET AJAX Futures Web application (.NET Framework 3.5)&lt;/strong&gt; template.&lt;/p&gt;  &lt;p&gt;I then added a Project to this Solution, using the JavaScript Silverlight Project (I'm not going to use the managed code (C#) approach to Silverlight, instead I'm choosing to use JavaScript + Silverlight).&lt;/p&gt;  &lt;p&gt;I setup my GUI assets, using Microsoft Expression Blend. Positioned them to where I want them, and began then saved the project.&lt;/p&gt;  &lt;p&gt;Then inside Visual Studio 2008, I added a &amp;quot;Add Silverlight Link..&amp;quot; via the &lt;strong&gt;Solution Explorer&lt;/strong&gt;. Connected the two together.&lt;/p&gt;  &lt;p&gt;Now, I must confess it's at this point where I had to figure out how to bring in the AjaxControlToolkit. As I've never really had a need to use it up until today. I downloaded the 3.5 Framework version of it and installed it (Basically follow the Install Videos to the letter and you should be fine).&lt;/p&gt;  &lt;p&gt;Now comes the code.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!-- -----------------------------------------------------------------------------------&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&lt;span class="rem"&gt; SILVERLIGHT CONTROL&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="rem"&gt; ----------------------------------------------------------------------------------- --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SilverlightHost&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;asp:Xaml&lt;/span&gt; &lt;span class="attr"&gt;XamlUrl&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;~/Page.xaml&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SilverlightControl&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Windowless&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 6: &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;750&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;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&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;br /&gt;Using the Xaml tag, i created a pointer to my Page.xaml file (which has my assets housed within). Note the name &amp;quot;&lt;strong&gt;SilverlightControl&lt;/strong&gt;&amp;quot; (important).&lt;/p&gt;

&lt;p&gt;In my UI I have a &lt;strong&gt;PullDownMenu&lt;/strong&gt;, which I want to now animate up and down.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blogs.msdn.com/blogfiles/msmossyblog/WindowsLiveWriter/HowToUsingAjaxControlToolkittoanimateSi_FA13/image_thumb_5.png" width="475" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now comes the code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt; &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; Sys.Application.add_init(appInitHandler);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="kwrd"&gt;function&lt;/span&gt; appInitHandler() {&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; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="rem"&gt;// Silverlight is Ready, now proceed...&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;function&lt;/span&gt; appOnLoad() {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="rem"&gt;//$create(Demo.Person,null,null,null,null);&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;var&lt;/span&gt; animator = &lt;span class="kwrd"&gt;new&lt;/span&gt; AjaxControlToolkit.Animation.FadeAnimation($get(&lt;span class="str"&gt;&amp;quot;Overlay&amp;quot;&lt;/span&gt;), 0.5, 20, &lt;span class="str"&gt;&amp;quot;FadeOut&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; customanim = &lt;span class="kwrd"&gt;new&lt;/span&gt; AjaxControlToolkit.Animation.ScriptAction(&lt;span class="str"&gt;&amp;quot;overlay&amp;quot;&lt;/span&gt;, 0.5, 40, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; animator.play(); &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; customanim.onStep = onCustomStep;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; customanim.play();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 14: &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; &lt;span class="rem"&gt;// Custom Animation Sequence &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;function&lt;/span&gt; onCustomStep(percentage) {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; o = $get(&lt;span class="str"&gt;&amp;quot;SilverlightControl&amp;quot;&lt;/span&gt;).content.FindName(&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; 19: &lt;/span&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; amt = Math.round(456*percentage/100);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; o.SetValue(&lt;span class="str"&gt;&amp;quot;Canvas.Top&amp;quot;&lt;/span&gt;, amt + -456);&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;lt;/script&amp;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;It's that Simple! I also had a &amp;lt;DIV&amp;gt; tag called &amp;quot;overlay&amp;quot; which represents a screenout overaly.&lt;/p&gt;

&lt;p&gt;I need my hosting provider on &lt;a href="http://www.beyondTheBrowser.NET"&gt;http://www.beyondTheBrowser.NET&lt;/a&gt; to move me over to the .NET 3.5 hosting plan in order to show you, but essentially using the&lt;strong&gt; &lt;a href="http://asp.net/AJAX/AjaxControlToolkit/Samples/Walkthrough/AnimationReference.aspx#ScriptAction" target="_blank"&gt;AjaxControlToolkit.Animation.ScriptAction&lt;/a&gt;&lt;/strong&gt; library, I'm able to empower it to control the Silverlight Animation sequence.&lt;/p&gt;

&lt;p&gt;If you're confused? don't worry, I'll be &lt;strong&gt;videocasting&lt;/strong&gt; this later this month.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:B3E14793-948F-49af-A347-D19C374A7C4F:5bd54441-a13a-4b60-8ec8-bf365b62d825" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;script type="text/javascript"&gt;&lt;!--
digg_url = 'http://digg.com/programming/How_To_Using_AjaxControlToolkit_to_animate_Silverlight';
digg_title = 'How To: Using AjaxControlToolkit to animate Silverlight.';
digg_bodytext = 'In my Silverlight travels, I was thinking on how one is able to animate a "PullDown" menu, in that it comes down and then goes back up upon triggered events.';
//--&gt;&lt;/script&gt;
&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5256824" 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/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Animation/default.aspx">Animation</category></item><item><title>RIA and Search Engines.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/08/04/ria-and-search-engines.aspx</link><pubDate>Sat, 04 Aug 2007 08:46:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4217320</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4217320.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4217320</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4217320</wfw:comment><description>&lt;p&gt;&amp;nbsp;The latest annoyance with RIA (Rich Interactive Applications)&amp;nbsp;these days (not wide-spread thankfully) is how they aren't really suitable for search engine's such as Google. &lt;/p&gt; &lt;p&gt;There's a reason for this and it's simply put, they aren't web pages. They aren't documents, and furthermore they aren't worth indexing. That being said the data that they connect to, is all of this and above.&lt;/p&gt; &lt;p&gt;You see, the confusion kind of sits around how they are deployed, in that we typically gain access to a RIA via a browser right? In this context, then by rule of thumb they should be indexable and search able by our favorite search engines - after all, it's the browser paradigm right?&lt;/p&gt; &lt;p&gt;Actually no, the browser is simply the payload first and foremost, it's your footprint to gaining access to the RIA in question. In some cases (AJAX/Silverlight) the RIA makes use of HTML or XAML, so surely that means it's crossed the boundaries of being part of a graphical element and into indexable data? Wrong - this is just us using the subset language we've been dealt to produce layout, or positioned elements on screen and although the code is somewhat transparent, assume it was just a ball of .DLL.&lt;/p&gt; &lt;p&gt;&lt;img style="margin: 10px" height="176" src="http://www.sneath.org/tim/pi_s.jpg" width="240" align="right"&gt;How does one strike a balance then? Take a look at the &lt;a href="http://wpf.netfx3.com/blogs/presentation_bloggers/archive/tags/new+york+times/default.aspx" target="_blank"&gt;New York Times Reader&lt;/a&gt; built in WPF, this by far is a perfect example of a RIA. It basically connects to a remote location, downloads the latest news articles, saves them as XML packets on a person's hard drive and then is indexed by Windows Vista. If you were to go to your &lt;strong&gt;Start&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Start&lt;/strong&gt; &lt;strong&gt;Search&lt;/strong&gt;, type in say "&lt;em&gt;IRAQ&lt;/em&gt;" you'd get all news articles relating to &lt;em&gt;IRAQ&lt;/em&gt;. If you then click on the article in question, up comes the story inside the WPF Reader in full view and within context.&lt;/p&gt; &lt;p&gt;This is what the next evolution in RIA Designers/Developers will have to think about, how does one produce a high-end user experience to end&amp;nbsp;users whilst allowing them to&amp;nbsp;hunt for information of interest via search engines. I think the&amp;nbsp;&lt;strong&gt;WPF Reader&lt;/strong&gt;&amp;nbsp;methodology is&amp;nbsp;one of many correct ones to&amp;nbsp;use,&amp;nbsp;and this is realistically where deep linking plays a role.&lt;/p&gt; &lt;p&gt;This all being said,&amp;nbsp;we now need more&amp;nbsp;&lt;strong&gt;RIA&amp;nbsp;Architects&lt;/strong&gt;, as the developer &amp;amp; designer base can do the between bits, but it's important to have an architect whom can see the overall vision&amp;nbsp;end to end.&lt;/p&gt; &lt;p&gt;Here's some good reading on this, and interesting&amp;nbsp;thought process around these:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="http://www.zeuslabs.us/2007/08/03/make-your-rich-internet-application-seo-friendly/" href="http://www.zeuslabs.us/2007/08/03/make-your-rich-internet-application-seo-friendly/"&gt;http://www.zeuslabs.us/2007/08/03/make-your-rich-internet-application-seo-friendly/&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://www.nikhilk.net/Entry.aspx?id=163" href="http://www.nikhilk.net/Entry.aspx?id=163"&gt;http://www.nikhilk.net/Entry.aspx?id=163&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4217320" 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/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/UXE/default.aspx">UXE</category></item><item><title>RIA is a belief, Silverlight is the execution.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/08/03/ria-is-a-belief-silverlight-is-the-execution.aspx</link><pubDate>Fri, 03 Aug 2007 04:26:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4196710</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4196710.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4196710</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4196710</wfw:comment><description>&lt;p&gt;I interact a lot around discussions in the Rich Interactive/Internet Application (RIA) space. I read as much as I can on it and keep tabs on what I find interesting around theories associated to RIA. I also engage folks whom never have even heard the acronym RIA and it's interesting conversation to have as how do you explain it without going deep into a detailed technology discussion.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What does RIA represent really.&lt;/strong&gt;&lt;br&gt;It's effectively an idea, on how to get maximum user experience through a browser payload initially. In that we all can agree that we'd love to balance our general ledgers via the browser as it's an easy footprint to leverage whilst at the same time we can get a sense of depth via such a small footprint. &lt;/p&gt; &lt;p&gt;HTML combined with JavaScript (aka AJAX) is doing a lot of interesting things, but it effectively hits a barrier at some point and it could come down to simple GUI (Graphic User Interface) positioning of elements that or involvement of other forms of media (animation, movie, audio, remote data connection points). RIA on the other hand overall is about clawing our away out of this realm of limitation and into the next natural existence, by aggregating as many of the media elements and the twists and turns that are associated with them into a rich interactive experience, which can empower end-users to solve real world business grade solutions (that or simply provide an existence to goof around in).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How does Silverlight Play a role then?&lt;/strong&gt;&lt;br&gt;Silverlight has and will always be the missing piece in the overall Microsoft Platform stack. It's been missing for years and whilst we have made substantial bold movement in the Windows Form&amp;nbsp;Project&amp;nbsp;space&amp;nbsp;and at the same time really pumped a lot of goodness into the Web Form Project space, we still have this missing piece in the middle. It's usually filled by Flash but in reality what does that do to the overall development practices buried deep within our customer base?&lt;/p&gt; &lt;p&gt;It means you may have to learn an alterative technology that has similar syntax to C# / XAML but is obviously different. It also means that you're not really getting an end to end tool driven solution (Visual Studio is a fantastic productive tool, so one has to agree that if we can keep in the one space and tweak/pull code to suite life is good right?). &lt;/p&gt; &lt;p&gt;Enter Silverlight's existence, in that our bet at Microsoft is to enable folks to move upwards and downwards in the three tiers of platform experience (ASP/AJAX | Silverlight | WPF). Each has their own righteous approach to execution but the underlying win for the average .NET punter is that you get to re-use your skill set and understanding of Microsoft's approach throughout. In that if you were a to study C# and XAML tomorrow, this effectively becomes your passport up and down the stack right?&lt;/p&gt; &lt;p&gt;Furthermore, it's a natural progression in enabling customers around the world to enhance their existence online both through browsers but also soon via other client surfaces using an enriching experience. That's the overall bet anyway. Is it going to happen tomorrow? nope, it's a marathon not a sprint and simply put focus on up skilling now as that will be your safest bet.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Well, what is Microsoft's vision overall around RIA then (Silverlight + VS2008 + Expression?)&lt;br&gt;&lt;/strong&gt;Once you've grasped the context of what RIA represents you're probably going to either want to build or give it a miss. If you chose the earlier, you're now looking down the barrel of a whole new world in which to approach. You're going to have to weigh up both your developer &amp;amp; designer capabilities, along side associated logistics (servers, bandwidth etc) associated to the cost in implementation.&lt;/p&gt; &lt;p&gt;It's a lot of variables trust me (a lot of years playing in this space telling you hehe)&lt;/p&gt; &lt;p&gt;The key ingredient that we believe is worth the investment in Silverlight is that you're basically buying one socket but opening up into other realms of possibility. In that down the road the overall eco-system that surrounds Silverlight is growing to a rate that I've never personally seen.&lt;/p&gt; &lt;p&gt;For example, Visual Studio 2008 has a lot of new features and productivity gains associated to it and Silverlight is buried deep within. You also then have Expression Studio to match, so in a nutshell you have both ends of a gradient (developer vs designer) meeting in the middle via these two suite of tools. On top of this, you then have an entire platform stack to pick from, and given some of the improvements associated with Windows 2008, this is heating up to solid solution (eg: IIS 7.0 is quite an exciting piece). It gets better though, as we are making some strategic movements associated with Live.com cloud, and one thing I've came to a crashing conclusion is that folks internally are really looking to push the Microsoft service cloud further and deeper then it is today.&lt;/p&gt; &lt;p&gt;Overall you have an entire ecosystem, many brands and i mean many! waiting for you to pickup and engage. Silverlight is effectively one of many points of entry and it's journey is to be the middle guy, the one that is bound by obvious security restraints but at the same time hints at strong end-user experience over the wire (Internet). Looking to do more in client surface reach as well!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Are&amp;nbsp;Microsoft competing with Flash? &lt;br&gt;&lt;/strong&gt;Honestly, no. I think there is a lot of overlap and intersection points between Silverlight and Flash but if you step back and look at the entire product spectrum you'll see to isolate the argument down to feature vs feature in Flash battle, really undervalues you the proposition put forward around Microsoft's bet in Rich Interactive Applications. Silverlight has a roadmap that differs in my opinion from Flash, and realistically it both can be fused together or if you prefer to pick one then so be it.. choice is a brilliant thing to have.&lt;/p&gt; &lt;p&gt;Microsoft is simply looking to complete the circle of User Experience. Any questions? &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4196710" 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/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</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/DHTML/default.aspx">DHTML</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/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>We gave birth to RIA.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/07/25/we-gave-birth-to-ria.aspx</link><pubDate>Tue, 24 Jul 2007 23:32:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4033787</guid><dc:creator>scbarnes</dc:creator><slash:comments>17</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/4033787.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=4033787</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=4033787</wfw:comment><description>&lt;p&gt;Adobe's &lt;a href="http://twitter.com/mdowney" target="_blank"&gt;Mike Downey&lt;/a&gt; and I were throwing comments back and forth on &lt;a href="http://twitter.com/mossyblog" target="_blank"&gt;twitter.com&lt;/a&gt; this morning, it was derived from &lt;a href="http://scarynoises.com/blog/archives/2007/04/microsoft_redef.html" target="_blank"&gt;Brad Becker&lt;/a&gt; (ex Flash Product guy @ Macromedia and now Microsoft staffer) post on &lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_Application" target="_blank"&gt;RIA&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://scarynoises.com/blog/archives/2007/04/microsoft_redef.html" target="_blank"&gt;Brad posted&lt;/a&gt; this a few months ago when JD @ Adobe got all fired up over Rich Interactive Applications vs Rich Internet Applications. Adobe will argue until they are blue in the face that Microsoft are attempting to Hijack the term RIA and .. blah blah blah.&lt;/p&gt; &lt;p&gt;Honestly, whom named RIA (Microsoft or Adobe) has become irrelevant.&amp;nbsp;If you look at the history of RIA overall, it's something that we have always hinted at but never could quite get there.&lt;/p&gt; &lt;p&gt;VRML for example would have to by far my earliest memory of the "RIA" concept. You have a rich 3D world in which you can interact with, but of course in the late 1990's there was only so much you could do in terms of client-to-server side interaction.&lt;/p&gt; &lt;p&gt;In 2000, I remember seeing &lt;a href="http://erik.eae.net/" target="_blank"&gt;Erik's&lt;/a&gt; attempt at WebOS.com, which was by far the earliest iteration of RIA / AJAX I've seen. You may know of Erik today as one of the &lt;a href="http://erik.eae.net/archives/2007/05/30/19.06.10/trackback/" target="_blank"&gt;brains behind Google Gears&lt;/a&gt;, &lt;a href="http://webfx.eae.net" target="_blank"&gt;WebFX&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.bindows.net" target="_blank"&gt;Bindows.NET&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I was working on Billabong's website's in 2000, when I first started to use Flash + Remote Servers, but it was with Flash&amp;nbsp;5 and all I could do was bring in variables remotely via PARAM or URL string. RIA was my intent but couldn't execute.&lt;/p&gt; &lt;p&gt;I've been on the Macromedia ride ever since, but like all the previous iterations of "RIA" it just hasn't been executed. There have been success stories of RIA working today, but it hasn't changed the landscape and I say this as if it has we wouldn't be seeing AJAX. There is no need for AJAX if "FLASH" RIA were to succeed? one cancels out the other and &lt;a href="http://search.live.com/results.aspx?q=Flash+vs+AJAX&amp;amp;src=IE-SearchBox" target="_blank"&gt;many have argued this case&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Silverlight and Flash Player are advanced, no question in this but both Adobe and Microsoft can't own RIA because it's realistically an idea or belief that was first formed many years ago and whilst Adobe will have you believe they are the founders of RIA, they simply built a campaign around it.&lt;/p&gt; &lt;p&gt;It's like saying AJAX is owned by &lt;a href="http://en.wikipedia.org/wiki/Jesse_James_Garrett"&gt;Jesse James Garrett&lt;/a&gt;&amp;nbsp;or he invented AJAX? (he did? I'm sure Google and Microsoft both had&amp;nbsp;a large role to play in this, Microsoft with XmlHttpRequest and Google in its mainstream use).&lt;/p&gt; &lt;p&gt;We the community are the ones whom own RIA, not Microsoft or Adobe. They simply enable and market the idea of what RIA should be.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4033787" 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/Flex/default.aspx">Flex</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Evangelists/default.aspx">Evangelists</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/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Fash+Killer/default.aspx">Fash Killer</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Twitter/default.aspx">Twitter</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Google+Gears/default.aspx">Google Gears</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Community/default.aspx">Community</category></item><item><title>Performing a hitTest with Silverlight</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/06/16/performing-a-hittest-with-silverlight.aspx</link><pubDate>Sat, 16 Jun 2007 05:55:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3328091</guid><dc:creator>scbarnes</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/3328091.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=3328091</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=3328091</wfw:comment><description>&lt;p&gt;In my Silverlight coding travels, I've found the urgent need to carry out a &lt;strong&gt;&lt;u&gt;hitTest&lt;/u&gt;&lt;/strong&gt; to determine where my end-users mouse is currently located but also what elements are underneath it within Silverlight.&lt;/p&gt; &lt;p&gt;So what's a &lt;strong&gt;&lt;u&gt;&lt;a href="http://search.live.com/results.aspx?q=hitTest+&amp;amp;src=IE-SearchBox" target="_blank"&gt;hitTest&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt; you ask? well essentially&amp;nbsp;it's when you ask "&lt;em&gt;Is this&amp;nbsp;object colliding or in contact with that object?&lt;/em&gt;". It's used majority of the time in Flash world to determine where a relationship stops and starts with a MovieClip and Mouse (X/Y) coordinates. It can also be commonly used for collision detection with other MovieClips when you make a point and click "fire" game (ie shoot bullets via your mouse at other objects on screen).&lt;/p&gt; &lt;p&gt;Silverlight at present doesn't have a hitTest method, well it does but it's only found within &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tpcsdk10/lonestar/Microsoft.Ink/Classes/ink/Methods/hittest.asp" target="_blank"&gt;Inking&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Well before one and all start to curse Silverlight for limited functionality compared to Flash (heh), it's not all doom and gloom. Thanks to the hierarchy index within Silverlight, one is able to ask objects individually where the mouse currently resides, but also where it currently is within the elements themselves.&lt;/p&gt; &lt;h4&gt;Now for some code..&lt;/h4&gt; &lt;p&gt;An example, say you had a &lt;strong&gt;Rectangle1&lt;/strong&gt; within &lt;strong&gt;Canvas1&lt;/strong&gt;, and you want to find out where the mouse currently is, but also where that mouse is within the actual Rectangle1 that's relative to the Rectangle1 itself (ie if the Mouse x is 30px in from the Rectangle1's edge?).&lt;/p&gt; &lt;p&gt;To do this you would do the following (this is JScript Code btw):&lt;/p&gt;&lt;pre&gt;    	&lt;span style="color: #008000"&gt;// Commit Default Properties.&lt;/span&gt;
    	private_commitProperties : &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {
	      &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; local_owner = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; cnvs = $get("&lt;span style="color: #8b0000"&gt;slControl&lt;/span&gt;").Content.FindName("&lt;span style="color: #8b0000"&gt;Canvas1&lt;/span&gt;");
		&lt;span style="color: #008000"&gt;// EVENT: onMouseMove&lt;/span&gt;
        	&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; local_onMouseMove = &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(sender, eventArgs) {
            	local_owner.MouseObj = eventArgs;
            	local_owner.private_updateDisplayList();
        	}
		
        	&lt;span style="color: #008000"&gt;// Create Events&lt;/span&gt;
       	cnvs.addEventListener("&lt;span style="color: #8b0000"&gt;MouseMove&lt;/span&gt;",  local_onMouseMove);
    	},	

    	&lt;span style="color: #008000"&gt;// Update the DisplayList.    &lt;/span&gt;
    	private_updateDisplayList : &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; cnvs = $get("&lt;span style="color: #8b0000"&gt;slControl&lt;/span&gt;").Content.FindName("&lt;span style="color: #8b0000"&gt;Canvas1&lt;/span&gt;");	
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; rect = cnvs.FindName("&lt;span style="color: #8b0000"&gt;Rectangle1&lt;/span&gt;");

		&lt;span style="color: #008000"&gt;// Determine where the X/Y Mouse Co-ordinates are &lt;/span&gt;
		&lt;span style="color: #008000"&gt;// within Silverlight itself.&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; currentX = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;).x;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; currentY = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;).y;
		
		&lt;span style="color: #008000"&gt;// Determine where the X/Y Mouse is within the Canvas&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; cnvsX = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition( cnvs ).x;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; cnvsY = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition( cnvs ).y;

		&lt;span style="color: #008000"&gt;// Determine where the X/Y Mouse is within the Rectangle&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; rectX = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition( rect ).x;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; rectY = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.MouseObj.GetPosition( rect ).y;


		&lt;span style="color: #008000"&gt;// IsMouseInsideRect ?&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; isMouseInsideRect = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
		&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;( rectX &amp;gt;=0 &amp;amp;&amp;amp; rectX &amp;lt;= rect.GetValue("&lt;span style="color: #8b0000"&gt;Width&lt;/span&gt;")) {
			isMouseInsideRect  = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
		} 

		&lt;span style="color: #008000"&gt;// IsMouseInsideCanvas ?&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; IsMouseInsideCanvas = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
		&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;( cnvsX &amp;gt;=0 &amp;amp;&amp;amp; cnvsX &amp;lt;= cnvs.GetValue("&lt;span style="color: #8b0000"&gt;Width&lt;/span&gt;")) {
			IsMouseInsideCanvas = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
		} 
		
		&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;( IsMouseInsideCanvas  &amp;amp; IsMouseInsideCanvas ) {
			&lt;span style="color: #0000ff"&gt;window&lt;/span&gt;.&lt;span style="color: #0000ff"&gt;status&lt;/span&gt; = "&lt;span style="color: #8b0000"&gt;Mouse is Inside Rectangle&lt;/span&gt;";
		} &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {
			&lt;span style="color: #0000ff"&gt;window&lt;/span&gt;.&lt;span style="color: #0000ff"&gt;status&lt;/span&gt; = "&lt;span style="color: #8b0000"&gt;Mouse is Outside Rectangle&lt;/span&gt;";
		}
    },
&lt;/pre&gt;
&lt;p&gt;So what's happening here? Firstly I'm using &lt;a href="http://ajax.asp.net/docs/" target="_blank"&gt;ASP.NET AJAX ToolKit&lt;/a&gt; so the &lt;strong&gt;&lt;a href="http://ajax.asp.net/docs/ClientReference/Global/GetShortCutMethod.aspx" target="_blank"&gt;$get()&lt;/a&gt;&lt;/strong&gt; is found within this framework. I'm also wiring up a local object to react to the &lt;strong&gt;MouseMove&lt;/strong&gt; event, which in turn invokes &lt;strong&gt;private_updateDisplayList()&lt;/strong&gt; method. &lt;/p&gt;
&lt;p&gt;I then inside JavaScript create two variables (&lt;strong&gt;cnvs&lt;/strong&gt; &amp;amp; &lt;strong&gt;rect&lt;/strong&gt;) as pointers to XAML elements within Silverlight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MouseObj&lt;/strong&gt; you'll note was declared inside the &lt;strong&gt;local_onMouseMove&lt;/strong&gt; method, which essentially translates to Silverlights &lt;strong&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.mouseeventargs(VS.71).aspx" target="_blank"&gt;MouseEventArgs&lt;/a&gt;&lt;/strong&gt; and inside this object, you have a method &lt;strong&gt;GetPosition()&lt;/strong&gt; which returns a Pointer (&lt;strong&gt;x/y&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Using this, I'm able to then determine in the first round (&lt;strong&gt;currentX&lt;/strong&gt;/&lt;strong&gt;currentY&lt;/strong&gt;) where the Cursor inside Silverlight currently is (why, not important in the above example but thought it's worth noting you can achieve this simply by providing null as your reference object).&lt;/p&gt;
&lt;p&gt;The second round, I then determine where the &lt;strong&gt;Cursor&lt;/strong&gt; is currently at in relation to the &lt;strong&gt;Canvas1&lt;/strong&gt; (&lt;strong&gt;cnvsX&lt;/strong&gt;/&lt;strong&gt;cnvsY&lt;/strong&gt;), which should return the same results as &lt;strong&gt;currentX&lt;/strong&gt; (seen as though &lt;strong&gt;Canvas1&lt;/strong&gt; is the root element).&lt;/p&gt;
&lt;p&gt;I then determine where the&amp;nbsp;&lt;strong&gt;Cursor&lt;/strong&gt; is located within the &lt;strong&gt;Rectangle1&lt;/strong&gt; element itself. Now, what will happen here is if the &lt;strong&gt;Rectanle1.x&lt;/strong&gt; is located on &lt;em&gt;100 pixels&lt;/em&gt; from the left, and the Cursor is located &lt;em&gt;150 pixels&lt;/em&gt; from the left, the &lt;strong&gt;rectX&lt;/strong&gt; will return "&lt;em&gt;50&lt;/em&gt;" as its result. &lt;/p&gt;
&lt;p&gt;Ahhh so now you see, that the &lt;strong&gt;GetPosition()&lt;/strong&gt; method returns the appropriate &lt;strong&gt;x/y&lt;/strong&gt; coordinates relative to the reference object in question and local &lt;strong&gt;x/y&lt;/strong&gt; as the result. Important to know this one!&lt;/p&gt;
&lt;p&gt;Lastly, I then determine if the Cursor is within the &lt;strong&gt;Rectangle1&lt;/strong&gt; boundaries, and to do this it's a simple case of asking "&lt;em&gt;Does the &lt;strong&gt;rectX&lt;/strong&gt; sit between 0 and the width of Rectangle1?, if so then it's within&lt;/em&gt;" &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/strong&gt;: If &lt;strong&gt;Rectangle1&lt;/strong&gt; has a width of &lt;u&gt;200px&lt;/u&gt; and the &lt;strong&gt;Cursor&lt;/strong&gt; is located at &lt;u&gt;400px&lt;/u&gt; from the edge of &lt;strong&gt;Rectangle1&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;rectX&lt;/strong&gt; will still return a positive integer which is essentially cursor's actual position (&lt;span style="color: #0000ff"&gt;Math&lt;/span&gt;.round(&lt;strong&gt;currentX&lt;/strong&gt;-&lt;strong&gt;rectX&lt;/strong&gt;)) relative to the &lt;strong&gt;Rectangle1&lt;/strong&gt; (&lt;u&gt;Summary&lt;/u&gt;: &lt;strong&gt;rectX&lt;/strong&gt; will always return positive integer never a negative one).&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;Where to from here? &lt;/h4&gt;
&lt;p&gt;Don't be afraid, Silverlight 1.1 is basically alpha and all this shows is that with enough brain power a &lt;strong&gt;CursorManager Class&lt;/strong&gt; could be put together quite easily and managed code approach to using &lt;strong&gt;hitTest&lt;/strong&gt; logic could apply here. The overall walk-away point for all is that, Silverlight has a lot of powerful primitives in place, enough for anyone to build upwards from and create their own approach to Silverlight. Combining this effort with AJAX and one could get some interesting HTML/Silverlight offerings on the table.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3328091" 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/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/DHTML/default.aspx">DHTML</category></item><item><title>Some minor Silverlight assumptions/queries.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/06/08/some-minor-silverlight-assumptions-queries.aspx</link><pubDate>Fri, 08 Jun 2007 14:17:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3159931</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/3159931.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=3159931</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=3159931</wfw:comment><description>&lt;p&gt;It's been an interesting couple of days for me, as I've meet some developers in both business meeting setting and via social setting (aka &lt;a href="http://webjam.com.au/" target="_blank"&gt;WebJam&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;In my chats with these developers, they all seem very keen to learn more about Silverlight but have hesitations on it that range from "Isn't it bleeding edge?" to "It looks good but I'm not a .NET developer".&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;I'm not a .NET developer, so I guess Silverlight isn't for me.&lt;/strong&gt;&lt;br&gt;Wrong, it can be, you can use Silverlight with HTML as if you would with Flash and HTML. Having zero .NET experience won't hamper you in anyway from building applications in future with Silverlight. You can do a lot with Silverlight today + HTML + AJAX. Microsoft wasn't kidding around with it being a natural progression from AJAX To the next step. You can control the entire Silverlight SDK from JavaScript (no .NET assembly required). So "&lt;em&gt;Silverlight bots, transform and roll out!&lt;/em&gt;"&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;What does Silverlight do differently to Flash&lt;br&gt;&lt;/strong&gt;Lots, none and some. Wrong question, what does Silverlight do for you going forward and if you are a .NET developer it compliments your skill set (removing the need to learn new tooling &amp;amp; languages together. Expression Studio isn't that bad of an effort to be honest, as it took me 2 days of playing and I got it).&lt;br&gt;&lt;br&gt;If you are a budding Flash Developer and are looking for a reason to take it on as an extra piece to your portfolio, do so with that in mind. It's another hammer for your tool kit, another piece of clay to sculpt with and so on. It approaches things differently to Adobe Flash, but that is because the roadmap beyond its release has different visions of where RIA is likely to go thus Microsoft's approach. Rich Web, Rich Client &amp;amp; Rich Device is your mantra.&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;How do I combine ASP.NET AJAX with Silverlight then?&lt;/strong&gt;&lt;br&gt;That's easy, you create a Project Solution in &lt;a href="http://go.microsoft.com/fwlink/?LinkID=89146&amp;amp;clcid=0x409" target="_blank"&gt;Visual Studio Orcas&lt;/a&gt;, you nominate &lt;a href="http://go.microsoft.com/fwlink/?LinkID=89147&amp;amp;clcid=0x409" target="_blank"&gt;ASP.NET Futures&lt;/a&gt;&amp;nbsp;(with &lt;a href="http://blogs.msdn.com/publicsector/archive/2007/06/07/new-asp-net-ajax-control-toolkit-version-released.aspx" target="_blank"&gt;AJAX Toolkit installed&lt;/a&gt;)&amp;nbsp;as your chosen template. You then create a Silverlight Project within the same solution.&lt;br&gt;&lt;br&gt;Now comes the really hard part.&lt;br&gt;&lt;br&gt;You then right click on the ASP.NET AJAX Futures project and hit the "Add Silverlight Link" to this project.&lt;br&gt;&lt;br&gt;Congratulations you've just linked the two projects together and every time you make changes to your Silverlight project, it will reflect into your ASP.NET AJAX Futures project. "Look mah, no hands".&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;What would you tell me that's cool about Silverlight?&lt;/strong&gt;&lt;br&gt;Honestly, so far I've found (even after today) the Brush Fills to be the sexiest thing in this round of releases. I like it for it's simplicity and allow me to demonstrate&lt;/li&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rectangle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
	&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
		&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Image&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Source&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"myimage.jpg"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
	&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Rectangle&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/ul&gt;
&lt;p&gt;I'll post more of these leading up to ReMIX as it amazes me some of the questions being asked (hey you don't know what you don't know, no harm, no foul) and if these are all that are stopping folks from having a go, then consider it greenlight time hehe.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3159931" 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/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ASP.NET/default.aspx">ASP.NET</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/default.aspx">RIA</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/XAML/default.aspx">XAML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/DHTML/default.aspx">DHTML</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Expression+Design/default.aspx">Expression Design</category></item><item><title>I predicted Microsoft Surface in September 2005</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/05/31/i-predicted-microsoft-surface-in-september-2005.aspx</link><pubDate>Thu, 31 May 2007 15:40:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3006888</guid><dc:creator>scbarnes</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/3006888.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=3006888</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=3006888</wfw:comment><description>&lt;p&gt;It was &lt;a href="http://www.mossyblog.com/archives/533.cfm" target="_blank"&gt;29th September 2005&lt;/a&gt;, I posted on my old blog "&lt;a href="http://www.mossyblog.com/archives/533.cfm" target="_blank"&gt;AJAX is a one trick poney&lt;/a&gt;" (yes, it should be pony). Inside my rant you'll find the following snippet&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;"..Content is king, and always will be but how does one access the content, thats the key deciding principal. Its now about User Experience and less about complexity. We tried our hand at "functional" large systems that had poor usability, it fails and the reason is people just dont want to keep flogging that dead horse. They need perception upgrades, they need a virtual medium in which they can access software through a rapid response...we want the Minority Report style UI, where we place gloves on and simply sort through UI as we need it... yet the scarey part right now is, you could get very close to emulating that with FLASH 8 .... Through Video and motion detection you can play games like "Ping Pong"... Imagine the ability to move data around through hand movements... now..how does AJAX play a role again? .."&lt;/em&gt; &lt;p&gt;[ &lt;a href="http://www.mossyblog.com/archives/533.cfm" target="_blank"&gt;Continue Reading&lt;/a&gt;&amp;nbsp;via old blog&amp;nbsp;]&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Fast forward and what is it I see in my beloved Microsoft employer, our new and greatest toy, &lt;a href="http://www.microsoft.com/surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt;. &lt;p&gt;&lt;a title="Restaurant Demo" href="http://www.flickr.com/photos/35034356974@N01/522841516/"&gt;&lt;img alt="Restaurant Demo" hspace="10" src="http://static.flickr.com/243/522841516_15325bcd05_m.jpg" align="left" vspace="10" border="0"&gt;&lt;/a&gt;At present it's current demo is about how people can split the bill for dinner, mobile phones spewing out contact details within and so on. I look at this and wonder where it could go to next, provided it's affordable to the average consumer. One internal staffer joked today that it now gives him the finishing pieces he needs for his fridge, as combine RFID products with this and life gets interesting. &lt;p&gt;Given that it uses some serious brain powered pattern recognition thingy to identify objects that are placed on it, who's to say it doesn't go to the next level with life science? In that could Hollywood actually be real now? where I place my palm on the desktop surface and it creates a diet based on my cholesterol level using WPF (sorry, I blacked out there from the excitement rushing to my head). &lt;p&gt;Life Science should get behind this, as imagine researches combing their way through gene pools looking for something that stands out that shouldn't and so on.  &lt;p&gt;Data Mining, just like in minority report, allow consumers to pick their way through web pages, images, videos - new media - the works looking for that topic or visual bubble gum for the brain somewhere out there in the interweb. &lt;p&gt;What powers this thing? &lt;a href="http://wpf.netfx3.com/" target="_blank"&gt;WPF&lt;/a&gt;?, Flash?,&amp;nbsp;&lt;a href="http://silverlight.net/" target="_blank"&gt;Silverlight&lt;/a&gt;? you know what, who cares other then the developers as once this becomes accessible to people around the world, old Apollo / &amp;nbsp;Google's Gears may need to pickup the slack a little more is all I'm saying. &lt;p&gt;This is the overall meaning folks about "&lt;strong&gt;&lt;u&gt;Channel Delivery&lt;/u&gt;&lt;/strong&gt;" when it comes to Microsoft, to think that all this power under the XAML hood is only reserved to Internet Explorer and Windows Vista Desktops is well, misinformed?. Combine the Nintendo WII, &lt;a href="http://www.microsoft.com/surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt;, XBOX 360 and all other devices that aren't PC and you'll start to see an emerging pattern - humans are being put into contact with digital code through "hands on user experience". &lt;p&gt;That in lies the lesson for today from the chaotic mind of Scott, Microsoft is really serious about this User Experience thingy that everyone keeps talking about.  &lt;p&gt;Ok, I didn't predict &lt;a href="http://www.microsoft.com/surface" target="_blank"&gt;Microsoft Surface&lt;/a&gt; itself, but the hands one experience thing and read the comments, people were against it! (hah! who's laughing now punks!) hehe.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3006888" 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/Mobile/default.aspx">Mobile</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/.NET+3.0/default.aspx">.NET 3.0</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/XBOX+360/default.aspx">XBOX 360</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Microsoft+Surface/default.aspx">Microsoft Surface</category></item><item><title>I Love my Silverlight: MossyVideo Player</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/05/23/i-love-my-silverlight-mossyvideo-player.aspx</link><pubDate>Wed, 23 May 2007 10:26:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2810765</guid><dc:creator>scbarnes</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/2810765.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=2810765</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=2810765</wfw:comment><description>&lt;p&gt;Since I have a lot of time on my hands at the moment, due to a foot injury (I had my big toe's toenail ripped off), I decided to go nuts with a project I'm working on, called &lt;strong&gt;MossyVideo Player System Thingy&lt;/strong&gt;&amp;nbsp; which is built in Silverlight.&lt;/p&gt; &lt;p&gt;&lt;a title="We start with the Orb of Power and grow outward, here's the basic shell thus far.. Guess which parts are Photoshop CS3 and Expression Design! lol" href="http://www.flickr.com/photos/68681212@N00/510532305/" target="_blank"&gt;&lt;img alt="MSVideoPlayer_1_0_93" src="http://static.flickr.com/190/510532305_3a124064f1.jpg" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;u&gt;Fig 1.0 (The Design in its early stages, it starts with the orb of power and grows outward)&lt;/u&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This project is got a lot of goodness associated about it and here's what I expect to deliver to the big world wide interweb post it's release.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Video Diaries&lt;/strong&gt;. Every step of the way, I decided what better way to describe to the world my process and approach to this project, then to simply create some video diaries of my journey. Starting from &lt;strong&gt;Day 0&lt;/strong&gt; you're going to see a segment on my pain that which is installing Adobe CS3 Web Premier (that was a lot of fun with Windows Vista). I'm also going to edit the video and use it as the first demo reel for the player (what better way to dog food it).&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;&lt;a title="Thumbnails show you what's happening ahead of time as you play your video (onDemand only though)" href="http://www.flickr.com/photos/68681212@N00/510540072/" target="_blank"&gt;&lt;img alt="MSVideoPlayer_1_0_94" hspace="5" src="http://static.flickr.com/196/510540072_99c6e1fe9a.jpg" align="right" vspace="5" border="0"&gt;&lt;/a&gt;ASP.NET AJAX ToolKit.&lt;/strong&gt; We hear all this way to often with Silverlight, in that it's been stated that it's a natural progression from HTML/AJAX world to the next evolution step. I plan on proving this by showing how &lt;strong&gt;Silverlight + Video + AJAX&lt;/strong&gt; can play a role with one another.&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Something New, Something Borrowed &amp;amp; Something Blue.&lt;/strong&gt; I've got a nice idea of how to involve some existing Web 2.0 API's with this project, can't tell you now as it's a secret surprise. Suffice to say, it may involve &lt;a href="http://www.popfly.ms" target="_blank"&gt;PopFly.ms&lt;/a&gt; - it may not - who's to tell.&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;The Adobe Killer.&lt;/strong&gt; I'm so tired of these rants as of late, so through-out you're going to see me refer to the "&lt;strong&gt;&lt;u&gt;Zealots&lt;/u&gt;&lt;/strong&gt;", these are folks whom believe in the theory that Silverlight vs Adobe is going to be a &lt;a title="Read! You may learn something today." href="http://en.wikipedia.org/wiki/Zero-sum" target="_blank"&gt;Zero Sum Game&lt;/a&gt;. I plan to illustrate to one and all it's about choice, it's about blending the pieces together to create, innovate and design as best I can (e.g. I am using Adobe CS3 for part of the artwork! as well as Expression Design - I can hear a few people hit the floor in shock)&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;It's new to me&lt;/strong&gt;. Yes, I have spent many nights tinkering with Silverlight, and I'll be pushing everything I know about it to the max. I'm in constant chatter between folks internally and externally whom are helping in a number of ways with some of my questions, recently around Effects such as Blur inside Silverlight. More on that another time (heheh).&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Code examples&lt;/strong&gt;. Once this is done, I hope to put this onto &lt;a title="CodePlex, the place to be." href="http://www.codeplex.com/" target="_blank"&gt;Codeplex.com&lt;/a&gt; for one and all to pick over, steal, laugh at you name it you get it. &lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;It's about the Journey&lt;/strong&gt;. Lastly, it's about understanding the overall experience it took from having an idea in a shower one day (which is my best source of inspiration) through to building. It's also most important of all, showing that playing with Silverlight (even in Alpha) doesn't have to be this serious religious battle that appears to flow online, lighten up folks, it's a new toy! so play!&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2810765" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Web+2.0/default.aspx">Web 2.0</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ReMIX07/default.aspx">ReMIX07</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Mashup/default.aspx">Mashup</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Expression+Design/default.aspx">Expression Design</category></item><item><title>Microsoft AIRLIFT 07 (Live.com Debrief)</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/04/29/microsoft-airlift-07-live-com-debrief.aspx</link><pubDate>Sun, 29 Apr 2007 03:30:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2318072</guid><dc:creator>scbarnes</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/2318072.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=2318072</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=2318072</wfw:comment><description>&lt;p&gt;&lt;img style="margin: 10px" src="http://farm1.static.flickr.com/221/474162377_66dd1127ea_m.jpg" align="left"&gt; I can't say much about much about what took place in an internal debrief around &lt;a href="dev.live.com" target="_blank"&gt;Live.com&lt;/a&gt; and &lt;a href="http://www.spaces.com" target="_blank"&gt;Spaces.com&lt;/a&gt;. I have to watch my wording here as I could get into trouble for letting things slip, suffice to say&amp;nbsp;I can talk about what's public today.&lt;/p&gt; &lt;p&gt;&lt;a href="dev.live.com" target="_blank"&gt;Live.com&lt;/a&gt; exists, it's got a lot of already established goodness on the table and what most of you see via dev.live.com has gotten better, and one day in the near future you'll see more and more additions to this approach taken by Microsoft.&lt;/p&gt; &lt;p&gt;At first when I heard Microsoft was heading into Web 2.0 space with Live.com, I must admit I rolled my eyes and simply "nodded" and smiled. I was an idiot, as once you look at ASP.NET + AJAX Toolkit and then think some more around Web 2.0, you don't have to be smart before you realize that these folks may know a thing or two about empowering users of all walks of life (coders, designers etc) to create their own Web 2.0 pieces.&lt;/p&gt; &lt;p&gt;I urge you all, whom play with the Web 2.0 concepts and AJAX for that matter, to take a look at dev.live.com and download Visual Studio&amp;nbsp;Web Express (Free, as in&amp;nbsp;Beer)&amp;nbsp;with &lt;a href="http://ajax.asp.net/" target="_blank"&gt;ASP AJAX Toolkit&lt;/a&gt; and start learning now.&lt;/p&gt; &lt;p&gt;As from what I just saw in the past three days, I can only give a strong thumbs up. &lt;/p&gt; &lt;p&gt;So far these are some of the pieces available today around &lt;a href="dev.live.com" target="_blank"&gt;Live.com&lt;/a&gt;&lt;/p&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wllocal&amp;amp;page=wlfeedback_home_form"&gt;Live Maps&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlsearchqna&amp;amp;page=wlfeedback_home_form"&gt;Live QnA&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlsearch&amp;amp;page=wlfeedback_home_form"&gt;Live Search&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlcom&amp;amp;page=wlfeedback_home_form"&gt;Live.com&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlaccounts&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Account&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlalerts&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Alerts&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlcall&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Call&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmerchantcall&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Call for Free&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wldomains&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Custom Domains&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wldev&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Dev&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlexpo&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Expo&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlfavorites&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Favorites&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlgallery&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Gallery&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmail&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Hotmail&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlid&amp;amp;page=wlfeedback_home_form"&gt;Windows Live ID&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlideas&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Ideas&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmaildesktop&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Mail desktop&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmobilemail&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Mail for mobile&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmessenger&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Messenger&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmessengermobile&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Messenger for mobile&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlmobile&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Mobile&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlonecare&amp;amp;page=wlfeedback_home_form"&gt;Windows Live OneCare&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlfamilysafety&amp;amp;page=wlfeedback_home_form"&gt;Windows Live OneCare Family Safety&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlsafety&amp;amp;page=wlfeedback_home_form"&gt;Windows Live OneCare Safety Scanner&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlproductupload&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Product Upload&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlpublishing&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Publishing Portal&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlshopping&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Shopping&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlspaces&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Spaces&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wltoolbar&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Toolbar and Desktop Search&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlsearchweb&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Web Search&lt;/a&gt; &lt;li&gt;&lt;a href="http://feedback.live.com/eform.aspx?productkey=wlwriter&amp;amp;page=wlfeedback_home_form"&gt;Windows Live Writer&lt;/a&gt;&lt;/li&gt; &lt;p&gt;I also have uploaded &lt;a href="http://www.flickr.com/photos/mossyblog/sets/72157600131083848/show/" target="_blank"&gt;some Photos&lt;/a&gt; of my AIRLIFT07 Seattle adventures, so if you have time to kill check them out. Also keep &lt;a title="http://blogs.msdn.com/klevy/" href="http://blogs.msdn.com/klevy/"&gt;http://blogs.msdn.com/klevy/&lt;/a&gt;&amp;nbsp;blog in your RSS watch list as he has the inside scoop around what MIX07 will have in stock.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2318072" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Visual+Studio+2005/default.aspx">Visual Studio 2005</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Live.com/default.aspx">Live.com</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Silverlight + AJAX eh?</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/04/26/silverlight-ajax-eh.aspx</link><pubDate>Wed, 25 Apr 2007 17:51:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2272882</guid><dc:creator>scbarnes</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/2272882.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=2272882</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=2272882</wfw:comment><description>&lt;p&gt;&lt;a href="http://blog.jonudell.net/2007/04/24/rewriting-the-enriched-web/trackback/" target="_blank"&gt;John Udell&lt;/a&gt; has posted a few things around Silverlight, specifically the standout is around how you can use the &lt;a href="http://blog.jonudell.net/2007/04/24/rewriting-the-enriched-web/trackback/" target="_blank"&gt;XAML DOM within JavaScript&lt;/a&gt; much like you would with the HTML version. That's an excited thing to celebrate to those of you out there that are happy to play in the AJAX space (which seems to be a large portion). This now empowers you initially to combine your existing AJAX applications and Video in the one space using JavaScript.&lt;/p&gt; &lt;p&gt;This is pretty damn cool, as you're using your existing skill set in AJAX development, but having access to Silverlight's features with minimal effort, as most generally in this space have a pretty average (minimum) understanding of how to use things like "&lt;em&gt;getElementById()&lt;/em&gt;" to traverse the DOM. Silverlight in this scenario, is about extending AJAX experience using Video, that's pretty cool right?&lt;/p&gt; &lt;p&gt;Wonder what else we could do in this space? ;)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2272882" 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/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/JavaScript/default.aspx">JavaScript</category></item></channel></rss>