<?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 : DHTML</title><link>http://blogs.msdn.com/msmossyblog/archive/tags/DHTML/default.aspx</link><description>Tags: DHTML</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><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>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>Why I love my PopFly.</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/05/19/why-i-love-my-popfly.aspx</link><pubDate>Sat, 19 May 2007 09:24:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2727280</guid><dc:creator>scbarnes</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/2727280.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=2727280</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=2727280</wfw:comment><description>&lt;p&gt;I 've been using &lt;a href="http://www.popfly.ms/Overview" target="_blank"&gt;Popfly&lt;/a&gt;&amp;nbsp;for a few weeks now and I'm loving it a lot, as it's got all the goodness of Web 2.0 and then some.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What is Popfly to the untrained eye?&lt;br&gt;&lt;/strong&gt;Well this isn't the official wording, but to me it's a way in which folks will be able to converge in the one spot and piece together mashups containing a lot of interesting elements. An example would be how I managed to mashup Twitter, Flickr, World of Warcraft, XBOX Gamer Tags and Virtual Earth. The end result isn't as elegant as I had hoped, but that's fine as one thing that &lt;a href="http://www.popfly.ms/Overview" target="_blank"&gt;Popfly&lt;/a&gt;&amp;nbsp;allows is the ability for me to go in and write some actual "code" via a web browser to make the pieces align appropriately.&lt;/p&gt; &lt;p&gt;How cool is that!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;This looks similar to Yahoo! Pipes!&lt;/strong&gt;&lt;br&gt;I must confess, this was my initial reaction as well. Yet, after playing with it I can argue the case that it exceeds Yahoo! Pipes in terms of functionality and community involvement. It's got more potential ahead of it and this is only alpha at the moment (so clearly Microsoft aren't done). I do like Yahoo! Pipes, but if I had to assemble a benchmark of what's out there today compared to what this is shaping up to be tomorrow, I'd have to say it's a cross between what Adobe JamJar was supposed to do, Yahoo! Pipes and Channel9 all blended into the one unified view.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;ReadySteadyMashup.com gets closer!&lt;/strong&gt;&lt;br&gt;I want to combine my original idea of using the &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2007/03/26/readysteadymashup-com-project-kickoff-meeting.aspx" target="_blank"&gt;ReadySteadyMashup.com&lt;/a&gt; with this and then combine it with other Microsoft products. As here's the thing, imagine if you will you take &lt;a href="http://www.popfly.ms/Overview" target="_blank"&gt;Popfly&lt;/a&gt;&amp;nbsp;and mix it with your other applications out there in the Web 2.0 world as you can embed these pieces into websites/gadgets (I saw a demo earlier this month where a mashup was blended together to produce a SideBar Gadget - very cool)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Did you know you can code this stuff in Visual Studio Express?&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;&lt;img style="margin: 10px" src="http://www.popfly.ms/Overview/images/overview/findproject.jpg" align="right"&gt;&lt;/strong&gt;Yeah it's true, not only can you use Silverlight to visually piece and assemble the parts together, but you can also code against them using Visual Studio (via the explorer plug-in). This is pretty darn cool for a lot of web punters out there, as doing so means you could utilize this in a number of ways and are only limited by your imagination.&lt;/p&gt; &lt;p&gt;I'm sure some other editors out there could think of some ways to also make plug-ins to empower their developer ranks to do what Visual Studio Web Express could do. If not, ours is always free remember (as in beer).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Why I care?&lt;br&gt;&lt;/strong&gt;Well, back in the day I was asked to write&amp;nbsp;the whitepaper for Adobe JamJar, a product in which at the time I thought was awesome. Only as I was writing the whitepaper and asking the folks more about it, I started to get a bit confused as the one thing I wanted the most from this product was - the ability for others to write pieces for JamJar (i.e. I can write my own widget in Adobe Flex/Flash and insert it into the JamJar ecosystem). It wasn't an option, and so I lost interest in it.&lt;/p&gt; &lt;p&gt;When I then saw &lt;a href="http://www.popfly.ms/Overview" target="_blank"&gt;Popfly&lt;/a&gt;, which used to have another code-name, I began to regain interest in this idea and after I got passed trying to benchmark it against both Adobe JamJar and Yahoo! Pipes I began to see some real goodness in the core of this puppy. I care, because it's what most of these cool Web 2.0 concepts should be like, where we take the awesome fun of Twitter and now can combine them with World of Warcraft API's - why? who cares! It just works.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Where to from here?&lt;/strong&gt;&lt;br&gt;Chaos initially then maybe some order, but I'd prefer more Chaos. In reality this is going to be a good thing for the Web 2.0 community as it's empowering non-developers the ability to play with all your API's going forward. You will see a lot of &lt;a href="http://dev.live.com" target="_blank"&gt;Live.com API's&lt;/a&gt; in there of course, but equally other public/private API's as well (&lt;a href="http://www.flickr.com/services/" target="_blank"&gt;Flickr&lt;/a&gt;,&amp;nbsp;&lt;a href="http://twitter.com/mossyblog" target="_blank"&gt;Twitter&lt;/a&gt; etc). I'd love to see concepts like &lt;a href="http://www.tangler.com" target="_blank"&gt;Tangler&lt;/a&gt; somehow get involved and so on, overall it's a good thing and it's purpose is to give the world a giant Web 2.0 sandpit, no strings attached.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2727280" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Browser/default.aspx">Browser</category><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/Tangler/default.aspx">Tangler</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/Silverlight/default.aspx">Silverlight</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/DHTML/default.aspx">DHTML</category></item><item><title>Thanks Silverlight, you just validated RIA (Wrong, here's why)</title><link>http://blogs.msdn.com/msmossyblog/archive/2007/04/22/thanks-silverlight-you-just-validated-ria-wrong-here-s-why.aspx</link><pubDate>Sun, 22 Apr 2007 06:06:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2225781</guid><dc:creator>scbarnes</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/msmossyblog/comments/2225781.aspx</comments><wfw:commentRss>http://blogs.msdn.com/msmossyblog/commentrss.aspx?PostID=2225781</wfw:commentRss><wfw:comment>http://blogs.msdn.com/msmossyblog/rsscomments.aspx?PostID=2225781</wfw:comment><description>&lt;p&gt;In 2002 one of the guys ( Jeremy Allaire)&amp;nbsp;whom I owe my house &amp;amp; lifestyle to, came up with an idea that Rich Internet Applications (RIA) should exist in a certain way, with a certain direction going forward. I trusted his idea, as the last one was Coldfusion and it paid off for me so I went with it (had been using Flash prior to this so figured it wouldn't hurt).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Redsquares were evil.&lt;/strong&gt;&lt;br&gt;I spent enormous amounts of time trying to either extend Flash's V1 Framework to suite my own needs or beat it with a version of my own framework. I was vocal about it, saying how hard and annoying it was and had zero love for "mix-in" approach (Decorator pattern to all you design pattern folks). I ended up supporting &lt;a href="http://www.ghostwire.com/" target="_blank"&gt;ghostwire.com's components&lt;/a&gt; as they were more mature and decided to build on from them.&lt;/p&gt; &lt;p&gt;The running joke in my cubicle in these days was "&lt;em&gt;Barnesy, you going to upgrade to a blue circle&lt;/em&gt;" as for weeks on end, I'd have a Redsquares on my screen which represented a placeholder for code. &lt;/p&gt; &lt;p&gt;Point, I wanted RIA to succeed like the next guy, but it meant time and energy to build it.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Royale with Cheese please.&lt;/strong&gt;&lt;br&gt;Around 2003. I remember reading up on &lt;a href="http://osflash.org/deng" target="_blank"&gt;DENG&lt;/a&gt;, this idea that &lt;a href="http://wahlers.com.br/claus/blog/" target="_blank"&gt;Claus&lt;/a&gt; had where you could use Flash to read XHTML pages and it would render accordingly (as Flash had most of the primitives in place). I thought this was awesome as from there you could extend upwards and take a normal web page to the next level, so it was kind of like having a runtime within a runtime.&lt;/p&gt; &lt;p&gt;I decided to have a go at using this &lt;a href="http://web.archive.org/web/20030623143401/http://w3blog.com/?id=32" target="_blank"&gt;concept&lt;/a&gt; by reading in XML that would produce runtime applications that talked to Coldfusion. I &lt;a href="http://web.archive.org/web/20030305043352/macrofun.pvpers.com/archives/000043.html" target="_blank"&gt;posted about it&lt;/a&gt; on &lt;a href="http://web.archive.org/web/20030305043352/macrofun.pvpers.com/archives/000043.html" target="_blank"&gt;Macrofun.pvpers.com&lt;/a&gt; a blog I ran at the time. &lt;strong&gt;Libby Freligh &lt;/strong&gt;(Former Product Manager for Flex) contacted me offline and asked if I would be interested in seeing this project Macromedia was working on, called Royale.&lt;/p&gt; &lt;p&gt;They showed me FLEX and I was hooked. I loved it's concept and it was 10 times more mature then anything I could ever come up with and so I built a career from there on out around it. I wanted RIA as badly as Jeremy had painted it.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Price is what killed RIA.&lt;/strong&gt;&lt;br&gt;I got a call one day, it was missed one at that. I remember hearing the message "&lt;em&gt;Scott, we are about to release the price tag and I know you don't like it, but could you not blog about it for a while&lt;/em&gt;" (as inside the GMC List for FLEX, we were told ahead of time and I was vocal about it). My blog at this time, Mossyblog.com was one of the first generation of Flex related blogs outside Macromedia and so I guess they thought folks would read and get spooked.&lt;/p&gt; &lt;p&gt;I hated the price tag, but I felt I owed Macromedia for letting me in on the Alpha, Beta and RC stages, so I complied. I also thought if more people use it, then it has to be a good thing for me right?&lt;/p&gt; &lt;p&gt;Wrong, the uptake was painfully slow, for weeks on end I'd get no love in the FLEX space and went back to coding Coldfusion 80% of the time.&lt;/p&gt; &lt;p&gt;People wanted FLEX SWF's outside the server but were told in order to use FLEX you must house the product on the server itself. Yet everyone whom knew FLEX agreed that the server was taking up valuable CPU and caught on that it was due to price tag that kept the reason for it's existence in place.&lt;/p&gt; &lt;p&gt;They got greedy.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Flex 2.0 came out and it was free.&lt;/strong&gt;&lt;br&gt;Finally FLEX was given back to the people, the RIA movement in 2002 would move on and I even wrote an article for &lt;a href="http://mx.sys-con.com/read/142730.htm" target="_blank"&gt;MX Developers Journal celebrating this&lt;/a&gt;. I thought, this is what we need, the RIA concept will take the world by storm and life would be good.&lt;/p&gt; &lt;p&gt;Adobe acquires Macromedia was the headline in blogs and I got nervous about all of this at the same time. I didn't know what was going on with Flash anymore and so I waited patiently. In doing this, A friend told me about Microsoft's movements have gotten mature, I had already known about XAML but didn't realize how mature it had become until around this time.&lt;/p&gt; &lt;p&gt;I was thinking "why would they want to enter the RIA space" as these guys aren't built for this kind of thing, design is foreign to them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Can't beat them, join them.&lt;/strong&gt;&lt;br&gt;I began to learn more about Microsoft, how Windows Form Development was easy to use and so on. These guys had their act together and once you got past the whole "Microsoft is evil" campaigns, you start to uncover that Microsoft has a valid offering here. If only they would use the technology in smarter ways. I caught onto WPF in its early form, and later WPF/e (Silverlight) and I started to see a picture immerge.&lt;/p&gt; &lt;p&gt;Late last year, I saw a job advert ("Developer Evangelist") and I actually thought it was Adobe, so I figured hell yeah, why not.&amp;nbsp; I got a phone call it was Microsoft, and I was shocked. I made the interviews and got the job and was sent to Seattle for chip implants.&lt;/p&gt; &lt;p&gt;I arrived and was shown around the product stacks, meet some of the brainstrust behind WPF and Silverlight, and was amazed at the level of thinking they have around the products. They got it, it's not about runtime it's about experience, going beyond the browser and doing so in as many ways as possible that reflect the developers themselves.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Good Experience (HTML/CSS/AJAX), Great Experience(Silverlight), Ultimate Experiences(WPF).&lt;/strong&gt;&lt;br&gt;These are the three tiers of emerging technology coming out of Microsoft and they are going to offer developers three channels of distribution. It's not about Flash being a killed, it's about offerings. &lt;/p&gt; &lt;p&gt;Did Microsoft come to the table late? or is Adobe just not equipped to handle Jeremy's theory? Are we competing? or did Microsoft just grow impatient with all this RIA development happening at snails pace? I don't think it's an evil plot, I just think it's Microsoft catching onto the simple fact that DHTML (AJAX) development still to this day happens in a wide variety of solutions. In order to help these web applications go beyond the browser were possible, they came up with the above three tiers of execution.&lt;/p&gt; &lt;p&gt;Adobe will do their thing and they will eventually do it well, much better than what they are doing today. I hope LiveCycle doesn't end up being the new price tag killer for the FLEX 3.0 equation and I'm seeing signs of this in Apollo (hence why I'm so vocal about it). I look back on the first days of RIA, FLEX &amp;amp; so on and ponder as to where we would all be if Flex 1.0 was given away and was integrated with Flash Professional instead of going after Enterprise aggressively as they did.&lt;/p&gt; &lt;p&gt;Microsoft are getting back to basics, empowering developers &amp;amp; designers to talk with one another through languages like XAML. Make no mistake, this isn't about validating Adobe, it's about focusing on the user experience.&lt;/p&gt; &lt;p&gt;I've been doing RIA both pre-2002 and post-2002, Jeremy put the ideas to words but i'd love an update to this RIA paper though.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2225781" 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/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/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/msmossyblog/archive/tags/LiveCycle/default.aspx">LiveCycle</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></channel></rss>