<?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>Mike Ormond's Blog</title><link>http://blogs.msdn.com/mikeormond/default.aspx</link><description>In my world, things would be simpler than this...</description><dc:language>en-GB</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Introducing .NET 4.0 (the book that is)</title><link>http://blogs.msdn.com/mikeormond/archive/2010/02/05/introducing-net-4-0-the-book-that-is.aspx</link><pubDate>Fri, 05 Feb 2010 17:56:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9958902</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9958902.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9958902</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.bookdepository.co.uk/book/9781430224556/Introducing-.NET-4.0"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title=".NET4" border="0" alt=".NET4" align="right" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/Introducing.NET4.0thebookthatis_FC52/.NET4_3.png" width="186" height="244" /&gt;&lt;/a&gt; Some time back &lt;a href="http://simpleisbest.co.uk/"&gt;Alex Mackey&lt;/a&gt; very kindly asked me to write a couple of paragraphs about what I was excited about in .NET 4.0 for inclusion in his book “&lt;a href="http://www.bookdepository.co.uk/book/9781430224556/Introducing-.NET-4.0"&gt;Introducing .NET 4.0 With Visual Studio 2010&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;First of all I should say I know Alex a little from &lt;a href="http://www.devevening.co.uk/"&gt;DevEvening&lt;/a&gt; and I provided a bit of help by putting him in touch with the right people on the Visual Studio team. I also received a free copy of the book (via &lt;a href="http://geekswithblogs.net/iupdateable/"&gt;Eric&lt;/a&gt; as it happens – thanks Eric). The publisher sent me an eBook link but I still struggle finding the time to read paper books never mind electronic ones (not that they take longer to read, they’re just never to hand when I find I have a spare moment).&lt;/p&gt;  &lt;p&gt;With that out the way (and the caveat that I haven’t read the whole thing yet, not be a long chalk) what are my first impressions?&lt;/p&gt;  &lt;p&gt;Excellent actually. I was taken aback by the sheer breadth of material Alex has covered; from the Visual Studio IDE, languages and the CLR, parallel, WF, WCF, EF etc etc through to jQuery, Silverlight and even a chapter on Windows Azure. That’s a whole lot of material both in terms of scope and volume.&lt;/p&gt;  &lt;p&gt;The style is quite informal and there’s a logical progression with Alex delving deeper to perhaps a code example or a practical exercise when required (and his judgement on this feels about right to me). Alex does a good job of separating the important from the merely interesting and outlining the “why” as well as the “how”. There’s even the odd joke in there that made me smile.&lt;/p&gt;  &lt;p&gt;As I said, I’ve got a long way to go but my initial impressions are very favourable. If you’re looking for a good introduction to .NET 4.0 &lt;a href="http://www.itwriting.com/blog/1915-visual-studio-2010-and-net-framework-4-0-a-simply-huge-release.html"&gt;and all its changes&lt;/a&gt;, you could do a lot worse.&lt;/p&gt;  &lt;p&gt;[That’s not an affiliate link BTW – just a link to the book at &lt;a href="http://www.bookdepository.co.uk/"&gt;The Book Depository&lt;/a&gt; and I have no connection with them either :)]&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958902" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Last chance for your MIX10 discount</title><link>http://blogs.msdn.com/mikeormond/archive/2010/02/05/last-chance-for-your-mix10-discount.aspx</link><pubDate>Fri, 05 Feb 2010 14:39:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9958796</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9958796.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9958796</wfw:commentRss><description>&lt;p&gt;&lt;img style="margin: 10px 0px 10px 10px; display: inline" alt="See You" align="right" src="http://live.visitmix.com/Skins/MIX10/Styles/img/Mix10_SeeYou_blk_240.jpg" /&gt;I’m very much looking forward to MIX10 (yes, I’m going this year) and I see a &lt;a href="http://live.visitmix.com/News/Joe-Belfiore-to-Keynote-MIX10--Eleven-New-Windows-Phone-Sessions-Announced"&gt;host of Windows Phone sessions&lt;/a&gt; have just been announced. “Announced” is perhaps too strong a word (there’s no detail on any of the sessions) but at least we know there’s going to be plenty of opportunity to hear about the next version of the mobile platform.&lt;/p&gt;  &lt;p&gt;Meanwhile if you are thinking of going, the earlybird discount of $400 runs out on Sunday (Feb 7th). After that the price goes up to $1395. With this in mind I diligently registered earlier in the week only to be presented with the full $1395 cost. Being a canny sort of chap I emailed the MIX10 registration team to ask whether the site was broken. They replied (quickly and politely) explaining that MS employees don’t qualify for the discount. Fair enough I suppose but I was left wondering how the site managed to deduce that I was an MS employee…&lt;/p&gt;  &lt;p&gt;Here are a few of the sessions that caught my eye:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/FT09"&gt;Pumping “Iron” on the Web: IronRuby and IronPython&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX17"&gt;IronRuby for the .NET Developer&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX22"&gt;6 Things Every jQuery Developer Must Know&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX03"&gt;Modern Web Form Design&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/FT03"&gt;Tips and Tricks for Making Web Forms Shine with ASP.NET 4&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/FT04"&gt;What's New in ASP.NET MVC2&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX10"&gt;Building a Next-Generation Web Application with ASP.NET MVC 2 and jQuery&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/SVC03"&gt;Using Ruby on Rails to Build Windows Azure Applications&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/SVC06"&gt;Silverlight and Windows Azure: A Match Made for the Web&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/CL03"&gt;Prototyping Rich Microsoft Silverlight 4 Applications with Expression SketchFlow&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/SVC01"&gt;Using Windows Identity Foundation For Creating Identity-Driven Experiences in Silverlight&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/CL01"&gt;Windows Phone Application and Game Development: Session 1&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;Understanding the Model-View-ViewModel Pattern&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/WKSP01"&gt;HTML5 Now: The Future of Web Markup Today (part 1 of 2)&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;h5&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/CL10"&gt;Stepping Outside the Browser with Silverlight 4&lt;/a&gt;&lt;/h5&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;and of course I know &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/02/01/mix10.aspx"&gt;Mike and John's Silverlight 4 Bootcamp&lt;/a&gt; will be excellent. Look forward to seeing you at MIX10.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a href="http://bit.ly/MIX10"&gt;MIX10 Main Site&lt;/a&gt; | &lt;a href="http://bit.ly/MIX10REG"&gt;MIX10 Registration&lt;/a&gt; | &lt;a href="http://bit.ly/MIX10SESSIONS"&gt;MIX10 Sessions&lt;/a&gt;&lt;/h4&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9958796" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Event+Q_2B00_A/default.aspx">Event Q+A</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Expression/default.aspx">Expression</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IE/default.aspx">IE</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/MIX10/default.aspx">MIX10</category></item><item><title>Catching up on some reading</title><link>http://blogs.msdn.com/mikeormond/archive/2010/01/22/catching-up-on-some-reading.aspx</link><pubDate>Fri, 22 Jan 2010 15:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9952013</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9952013.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9952013</wfw:commentRss><description>&lt;P&gt;My blog reader’s bursting at the seams so I thought I’d try and play catch-up this morning – not quite down to a 0 inbox but not a bad effort. Here are a few things that grabbed me:&lt;/P&gt;
&lt;P&gt;ASP.NET Related&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.ipona.com/davids/archive/2010/01/21/webforms-arenrsquot-dead.aspx" mce_href="http://blogs.ipona.com/davids/archive/2010/01/21/webforms-arenrsquot-dead.aspx"&gt;WebForms aren’t dead&lt;/A&gt; – &lt;A href="http://blogs.ipona.com/davids/Default.aspx" mce_href="http://blogs.ipona.com/davids/Default.aspx"&gt;Dave Sussman&lt;/A&gt; has his say on Web Forms vs MVC&lt;/LI&gt;
&lt;LI&gt;&lt;A title="ASP.NET MVC 2" href="http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2.aspx"&gt;ASP.NET MVC 2&lt;/A&gt; – A few posts by &lt;A href="http://weblogs.asp.net/scottgu/default.aspx" mce_href="http://weblogs.asp.net/scottgu/default.aspx"&gt;ScottGu&lt;/A&gt; on the next release of ASP.NET MVC&lt;/LI&gt;
&lt;LI&gt;&lt;A title="ASP.NET MVC 2- Strongly Typed Html Helpers" href="http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx"&gt;ASP.NET MVC 2- Strongly Typed Html Helpers&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="ASP.NET MVC 2- Model Validation" href="http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx"&gt;ASP.NET MVC 2- Model Validation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Server-side resizing with WPF- now with JPG" href="http://weblogs.asp.net/bleroy/archive/2010/01/21/server-side-resizing-with-wpf-now-with-jpg.aspx" mce_href="http://weblogs.asp.net/bleroy/archive/2010/01/21/server-side-resizing-with-wpf-now-with-jpg.aspx"&gt;Server-side resizing with WPF- now with JPG&lt;/A&gt; – &lt;A href="http://weblogs.asp.net/bleroy/default.aspx" mce_href="http://weblogs.asp.net/bleroy/default.aspx"&gt;Bertrand Le Roy&lt;/A&gt; revisits thumbnail image generation&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Office Related&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="VSTO Performance- Delay Loading and You (Stephen Peters)" href="http://blogs.msdn.com/vsto/archive/2010/01/07/vsto-performance-delay-loading-and-you.aspx" mce_href="http://blogs.msdn.com/vsto/archive/2010/01/07/vsto-performance-delay-loading-and-you.aspx"&gt;VSTO Performance- Delay Loading and You (Stephen Peters)&lt;/A&gt; – Enabling lazy-loading of your add-in&lt;/LI&gt;
&lt;LI&gt;&lt;A title="VSTO 2010 Runtime components explained (Aaron Cathcart)" href="http://blogs.msdn.com/vsto/archive/2010/01/21/vsto-2010-runtime-components-explained-aaron-cathcart.aspx" mce_href="http://blogs.msdn.com/vsto/archive/2010/01/21/vsto-2010-runtime-components-explained-aaron-cathcart.aspx"&gt;VSTO 2010 Runtime components explained (Aaron Cathcart)&lt;/A&gt; - Changes to the VSTO 2010 runtime&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Silverlight Related&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://channel9.msdn.com/shows/SilverlightTV/Silverlight-TV-Episode-2-Perspectives-on-Flash-and-Silverlight/" mce_href="http://channel9.msdn.com/shows/SilverlightTV/Silverlight-TV-Episode-2-Perspectives-on-Flash-and-Silverlight/"&gt;Silverlight TV – Perspectives on Flash and Silverlight&lt;/A&gt; (via &lt;A href="http://adamkinney.wordpress.com/" mce_href="http://adamkinney.wordpress.com/"&gt;Adam Kinney&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Flash to Silverlight Guide – Graphics, Images and Display List" href="http://adamkinney.wordpress.com/2010/01/15/flash-to-silverlight-guide-graphics-images-and-display-list/" mce_href="http://adamkinney.wordpress.com/2010/01/15/flash-to-silverlight-guide-graphics-images-and-display-list/"&gt;Flash to Silverlight Guide – Graphics, Images and Display List&lt;/A&gt; – Project Rosetta updated&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Image Blitting in Silverlight with WriteableBitmapEx" href="http://adamkinney.wordpress.com/2010/01/09/image-blitting-in-silverlight-with-writeablebitmapex/" mce_href="http://adamkinney.wordpress.com/2010/01/09/image-blitting-in-silverlight-with-writeablebitmapex/"&gt;Image Blitting in Silverlight with WriteableBitmapEx&lt;/A&gt; – nice image effects in Silverlight&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Web &amp;amp; IE Related&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="IE Cumulative Security Update Now Available" href="http://blogs.msdn.com/ie/archive/2010/01/21/ie-cumulative-security-update-now-available.aspx" mce_href="http://blogs.msdn.com/ie/archive/2010/01/21/ie-cumulative-security-update-now-available.aspx"&gt;IE Cumulative Security Update Now Available&lt;/A&gt; – install it asap&lt;/LI&gt;
&lt;LI&gt;&lt;A title="HTML5 does databases" href="http://blogs.msdn.com/pablo/archive/2010/01/04/html5-does-databases.aspx" mce_href="http://blogs.msdn.com/pablo/archive/2010/01/04/html5-does-databases.aspx"&gt;HTML5 does databases&lt;/A&gt; – Pablo Castro talks about the database in the browser&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Azure Related&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Colleague &lt;A href="http://geekswithblogs.net/iupdateable/Default.aspx" mce_href="http://geekswithblogs.net/iupdateable/Default.aspx"&gt;Eric Nelson&lt;/A&gt; has recently published a bunch of informative posts on practical aspects of Windows Azure&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Step by Step sign up for the 25 hour free Windows Azure Platform Introductory Special" href="http://geekswithblogs.net/iupdateable/archive/2010/01/13/step-by-step-sign-up-for-the-25-hour-free.aspx" mce_href="http://geekswithblogs.net/iupdateable/archive/2010/01/13/step-by-step-sign-up-for-the-25-hour-free.aspx"&gt;Step by Step sign up for the 25 hour free Windows Azure Platform Introductory Special&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Step by Step sign up for the MSDN Subscriber offer for the Windows Azure Platform" href="http://geekswithblogs.net/iupdateable/archive/2010/01/13/step-by-step-sign-up-for-the-msdn-subscriber-offer.aspx" mce_href="http://geekswithblogs.net/iupdateable/archive/2010/01/13/step-by-step-sign-up-for-the-msdn-subscriber-offer.aspx"&gt;Step by Step sign up for the MSDN Subscriber offer for the Windows Azure Platform&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="QandA- When do I get charged for compute hours on Windows Azure-" href="http://geekswithblogs.net/iupdateable/archive/2010/01/19/qanda-when-do-i-get-charged-for-compute-hours-on.aspx" mce_href="http://geekswithblogs.net/iupdateable/archive/2010/01/19/qanda-when-do-i-get-charged-for-compute-hours-on.aspx"&gt;QandA- When do I get charged for compute hours on Windows Azure&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title="QandA- How do you avoid being charged unnecessarily for Windows Azure compute hours-" href="http://geekswithblogs.net/iupdateable/archive/2010/01/20/qanda-how-do-you-avoid-being-charged-unnecessarily-for-windows.aspx" mce_href="http://geekswithblogs.net/iupdateable/archive/2010/01/20/qanda-how-do-you-avoid-being-charged-unnecessarily-for-windows.aspx"&gt;QandA- How do you avoid being charged unnecessarily for Windows Azure compute hours&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Other Stuff&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="What We Saw at CES- The Musical" href="http://www.woot.com/Blog/ViewEntry.aspx?Id=11080" mce_href="http://www.woot.com/Blog/ViewEntry.aspx?Id=11080"&gt;What We Saw at CES- The Musical&lt;/A&gt; – Brilliant video of CES set to music (via&lt;A href="http://blogs.msdn.com/oldnewthing/default.aspx" mce_href="http://blogs.msdn.com/oldnewthing/default.aspx"&gt; Raymond Chen&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A title="11 Most Painfully Obvious Newspaper Articles Ever" href="http://www.11points.com/News-Politics/11_Most_Painfully_Obvious_Newspaper_Articles_Ever" mce_href="http://www.11points.com/News-Politics/11_Most_Painfully_Obvious_Newspaper_Articles_Ever"&gt;11 Most Painfully Obvious Newspaper Articles Ever&lt;/A&gt; – ties in well with my &lt;A href="http://blogs.msdn.com/mikeormond/archive/2009/12/03/trusting-everything-you-find-on-the-internetz.aspx" mce_href="http://blogs.msdn.com/mikeormond/archive/2009/12/03/trusting-everything-you-find-on-the-internetz.aspx"&gt;current news theme&lt;/A&gt; (also via Raymond Chen)&lt;/LI&gt;
&lt;LI&gt;&lt;A title="How do I minimize a group of windows in Windows 7 from the taskbar-" href="http://blogs.msdn.com/oldnewthing/archive/2009/12/29/9941779.aspx" mce_href="http://blogs.msdn.com/oldnewthing/archive/2009/12/29/9941779.aspx"&gt;How do I minimize a group of windows in Windows 7 from the taskbar&lt;/A&gt; – nice little tip for the taskbar&lt;/LI&gt;
&lt;LI&gt;&lt;A title="T4MVC in MSDN Magazine" href="http://odetocode.com/Blogs/scott/archive/2010/01/13/t4mvc-in-msdn-magazine.aspx" mce_href="http://odetocode.com/Blogs/scott/archive/2010/01/13/t4mvc-in-msdn-magazine.aspx"&gt;T4MVC in MSDN Magazine&lt;/A&gt; – &lt;A href="http://odetocode.com/Blogs/scott/Default.aspx" mce_href="http://odetocode.com/Blogs/scott/Default.aspx"&gt;K.Scott Allen&lt;/A&gt; talks T4 templates for ASP.NET MVC in MSDN Magazine&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9952013" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Office/default.aspx">Office</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IE/default.aspx">IE</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>[Video] Spark View Engine Part 3</title><link>http://blogs.msdn.com/mikeormond/archive/2010/01/07/video-spark-view-engine-part-3.aspx</link><pubDate>Thu, 07 Jan 2010 15:45:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9945182</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9945182.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9945182</wfw:commentRss><description>&lt;p&gt;Here’s the final part of the video series covering my &lt;a href="http://bit.ly/mospark"&gt;Spark view engine posts&lt;/a&gt;. &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/21/video-spark-view-engine-part-1.aspx"&gt;Part 1 is here&lt;/a&gt;. &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/22/video-spark-view-engine-park-2.aspx"&gt;Part 2 is here&lt;/a&gt;. This one covers a slightly more complex view page using some strongly-typed viewdata and iterating over a list of items for display.&lt;/p&gt; &lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DCkKgBKTN_Q&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DCkKgBKTN_Q&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Here are the resources links from the videos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bit.ly/mospark"&gt;&lt;strong&gt;http://bit.ly/mospark&lt;/strong&gt;&lt;/a&gt; – my blog posts about Spark &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/aspmvc"&gt;&lt;strong&gt;http://bit.ly/aspmvc&lt;/strong&gt;&lt;/a&gt; – the ASP.NET MVC homepage &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/sparkve"&gt;&lt;strong&gt;http://bit.ly/sparkve&lt;/strong&gt;&lt;/a&gt; – the Spark home page &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/sparkcode"&gt;&lt;strong&gt;http://bit.ly/sparkcode&lt;/strong&gt;&lt;/a&gt; – the Spark CodePlex page for download &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/mvccontrib"&gt;&lt;strong&gt;http://bit.ly/mvccontrib&lt;/strong&gt;&lt;/a&gt; – the MVC Contrib CodePlex page &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/nerddinner"&gt;&lt;strong&gt;http://bit.ly/nerddinner&lt;/strong&gt;&lt;/a&gt; – the NerdDinner CodePlex page &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9945182" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>[Video] Spark View Engine Part 2</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/22/video-spark-view-engine-park-2.aspx</link><pubDate>Tue, 22 Dec 2009 08:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9939697</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9939697.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9939697</wfw:commentRss><description>&lt;P&gt;Here’s part 2 of the short video series covering &lt;A href="http://bit.ly/mospark" mce_href="http://bit.ly/mospark"&gt;the Spark view engine posts&lt;/A&gt;. &lt;A href="http://blogs.msdn.com/mikeormond/archive/2009/12/21/video-spark-view-engine-part-1.aspx" mce_href="http://blogs.msdn.com/mikeormond/archive/2009/12/21/video-spark-view-engine-part-1.aspx"&gt;Part 1 is here&lt;/A&gt;. Part 3 will have to wait ‘til the new year I’m afraid as I’m *officially* on holiday doing voluntary work for the big man (Santa that is).&lt;/P&gt;
&lt;OBJECT width=560 height=340&gt;&lt;PARAM NAME="movie" VALUE="http://www.youtube.com/v/ASBl2snQd9A&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowscriptaccess" VALUE="always"&gt;
&lt;embed src="http://www.youtube.com/v/ASBl2snQd9A&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" mce_src="http://www.youtube.com/v/ASBl2snQd9A&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;P&gt;Here are the resources links from the videos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/mospark" mce_href="http://bit.ly/mospark"&gt;&lt;STRONG&gt;http://bit.ly/mospark&lt;/STRONG&gt;&lt;/A&gt; – my blog posts about Spark &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/aspmvc" mce_href="http://bit.ly/aspmvc"&gt;&lt;STRONG&gt;http://bit.ly/aspmvc&lt;/STRONG&gt;&lt;/A&gt; – the ASP.NET MVC homepage &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/sparkve" mce_href="http://bit.ly/sparkve"&gt;&lt;STRONG&gt;http://bit.ly/sparkve&lt;/STRONG&gt;&lt;/A&gt; – the Spark home page &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/sparkcode" mce_href="http://bit.ly/sparkcode"&gt;&lt;STRONG&gt;http://bit.ly/sparkcode&lt;/STRONG&gt;&lt;/A&gt; – the Spark CodePlex page for download &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/mvccontrib" mce_href="http://bit.ly/mvccontrib"&gt;&lt;STRONG&gt;http://bit.ly/mvccontrib&lt;/STRONG&gt;&lt;/A&gt; – the MVC Contrib CodePlex page &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/nerddinner" mce_href="http://bit.ly/nerddinner"&gt;&lt;STRONG&gt;http://bit.ly/nerddinner&lt;/STRONG&gt;&lt;/A&gt; – the NerdDinner CodePlex page &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9939697" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>[Video] Spark View Engine Part 1</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/21/video-spark-view-engine-part-1.aspx</link><pubDate>Mon, 21 Dec 2009 08:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9939157</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9939157.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9939157</wfw:commentRss><description>&lt;p&gt;I decided to make a short video series covering the Spark view engine posts I did &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/17/extending-asp-net-mvc-replacing-the-view-engine.aspx"&gt;here&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/17/a-bit-about-spark.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/18/adding-a-bit-of-spark-to-nerd-dinner.aspx"&gt;here&lt;/a&gt;. This first part is about installing and configuring Spark in an ASP.NET MVC project (NerdDinner in my case).&lt;/p&gt; &lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1eBM_E6E5Wg&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1eBM_E6E5Wg&amp;amp;hl=en_GB&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Here are the resources links from the video&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bit.ly/mospark"&gt;&lt;strong&gt;http://bit.ly/mospark&lt;/strong&gt;&lt;/a&gt; – my blog posts about Spark&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/aspmvc"&gt;&lt;strong&gt;http://bit.ly/aspmvc&lt;/strong&gt;&lt;/a&gt; – the ASP.NET MVC homepage&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/sparkve"&gt;&lt;strong&gt;http://bit.ly/sparkve&lt;/strong&gt;&lt;/a&gt; – the Spark home page&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/sparkcode"&gt;&lt;strong&gt;http://bit.ly/sparkcode&lt;/strong&gt;&lt;/a&gt; – the Spark CodePlex page for download&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/mvccontrib"&gt;&lt;strong&gt;http://bit.ly/mvccontrib&lt;/strong&gt;&lt;/a&gt; – the MVC Contrib CodePlex page&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/nerddinner"&gt;&lt;strong&gt;http://bit.ly/nerddinner&lt;/strong&gt;&lt;/a&gt; – the NerdDinner CodePlex page&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Parts 2 and 3 cover converting the Home/Index view and the Dinner/Index view respectively. I’ll post them in the near future.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9939157" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>My Most Popular Posts of 2009</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/18/my-most-popular-posts-of-2009.aspx</link><pubDate>Fri, 18 Dec 2009 14:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938649</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9938649.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9938649</wfw:commentRss><description>&lt;p&gt;Inspired by &lt;a href="http://geekswithblogs.net/iupdateable/archive/2009/12/18/my-most-popular-blog-posts-of-2009.aspx"&gt;Eric doing this first&lt;/a&gt;, I thought I’d dig out my most popular posts of 2009.&lt;/p&gt;  &lt;h5&gt;Most popular by average time on page&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/04/28/an-introduction-to-the-ie8-developer-tools.aspx"&gt;An Introduction to the IE8 Developer Tools&lt;/a&gt; (Posted in April)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/04/24/dominick-baier-on-identity-geneva-and-openid.aspx"&gt;Dominick Baier on Identity, Geneva and OpenID&lt;/a&gt; (Posted in April)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/05/27/asp-net-mvc-and-iwantgreatcare-org.aspx"&gt;ASP.NET MVC and iWantGreatCare.org&lt;/a&gt; (Posted in May)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/08/05/getting-up-and-running-with-windows-azure.aspx"&gt;Getting Up and Running with Windows Azure&lt;/a&gt; (Posted in August – probably needs updating)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/15/web-platform-slideshow.aspx"&gt;Web Platform Slideshow&lt;/a&gt; (Posted a couple of days ago)&lt;/li&gt; &lt;/ol&gt;  &lt;h5&gt;Most popular by number of pageviews&lt;/h5&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/01/26/ie8-cross-site-scripting-xss-protection.aspx"&gt;IE8 Cross Site Scripting (XSS) Protection&lt;/a&gt; (Posted in January)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/06/22/bing-background-images.aspx"&gt;Bing Background Images&lt;/a&gt; (Posted in June)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/11/25/silverlight-4-resources-a-top-10-list.aspx"&gt;Silverlight 4 resources – a top 10 list&lt;/a&gt; (Posted in November)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/11/25/the-client-script-loader-is-cool.aspx"&gt;The client script loader is cool&lt;/a&gt; (Posted in November)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/10/09/boot-windows-7-from-vhd-without-installing-a-native-os.aspx"&gt;Boot Windows 7 from VHD without installing a native OS&lt;/a&gt; (Posted in October)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Not surprisingly, posts with embedded video often appear in the “average time on page” list. Aside from that it’s been a fun year and I hope you’ve got something out of all my postings. I’m not heading off for a Christmas break. I’ll see you all again in the New Year.&lt;/p&gt;  &lt;p&gt;Merry Christmas and a Happy New Year to you and yours. All the best for 2010.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938649" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IE/default.aspx">IE</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>The Perils of Blocking Online Ads</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/18/the-perils-of-blocking-online-ads.aspx</link><pubDate>Fri, 18 Dec 2009 11:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938626</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9938626.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9938626</wfw:commentRss><description>&lt;P&gt;In a fit of frustration the other day, having waited an eternity for some online ad on some now-forgotten site to load, I decided to revisit ad-blocking, something I haven’t done in a long time. Previously I’d used the technique of blocking ads via the HOSTS file using the technique (and HOSTS file) from &lt;A title=http://www.mvps.org/winhelp2002/hosts.htm href="http://www.mvps.org/winhelp2002/hosts.htm" mce_href="http://www.mvps.org/winhelp2002/hosts.htm"&gt;http://www.mvps.org/winhelp2002/hosts.htm&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;No reason not to start here again. And with a &lt;A href="http://mikeormond.posterous.com/become-a-web-debugging-virtuoso-with-fiddler" mce_href="http://mikeormond.posterous.com/become-a-web-debugging-virtuoso-with-fiddler"&gt;bit of help from Fiddler&lt;/A&gt; I was able to identify a couple of annoying domains and simply add them to the hosts file. The main reason I like this solution is I don’t have to install *anything* and it’s easy to modify / disable.&lt;/P&gt;
&lt;P&gt;All was well until a week or so later I was trying to upload a pptx to &lt;A href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;Slideshare&lt;/A&gt;. When I pressed the Upload button nothing happened. The form wasn’t being posted. Weird. I tried the single file upload. Didn’t work either. I loaded up Firefox and tried it in that. Nope. I cursed Slideshare a lot. I tried their email upload facility (that never seems to work for me and didn’t this time). Nothing worked so I do what I always do and asked &lt;A href="http://mtaulty.com/" mce_href="http://mtaulty.com"&gt;MikeT&lt;/A&gt; to try for me. Of course it worked for him. By now I’d wasted a few hours messing around with this…&lt;/P&gt;
&lt;P&gt;Then I had the eureka moment. I realised it might relate to my ad-block changes. I reverted to the old HOSTS file and sure enough, Slideshare was happy. Then a similar thing happened with Digg. I was getting the page but not as expected. Instead of this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg1_2.png" rel=lightbox mce_href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg1_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Digg1 border=0 alt=Digg1 src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg1_thumb.png" width=244 height=194 mce_src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg1_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I was getting this&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg2_2.png" rel=lightbox mce_href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg2_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=Digg2 border=0 alt=Digg2 src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg2_thumb.png" width=244 height=194 mce_src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ThePerilsofBlockingOnlineAds_8E4F/Digg2_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A bit of ferreting around with Fiddler and I discovered that my new HOSTS file was blocking cotnet.diggstatic.com which happens to be the domain from which Digg serves its stylesheets. Comment that out in HOSTS and we’re good to go.&lt;/P&gt;
&lt;P&gt;I don’t know if I’ll stick with the ad-blocking or not. It has pros and cons. I do feel I’m missing out in some small way. On the other hand I now know where the first place to look is when something stops behaving as it should do.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938626" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>Adding a bit of Spark to Nerd Dinner</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/18/adding-a-bit-of-spark-to-nerd-dinner.aspx</link><pubDate>Fri, 18 Dec 2009 08:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938308</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9938308.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9938308</wfw:commentRss><description>&lt;p&gt;Right, here we go. Having talked about &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/17/extending-asp-net-mvc-replacing-the-view-engine.aspx"&gt;how to get Spark set up&lt;/a&gt; and a little &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/17/a-bit-about-spark.aspx"&gt;about Spark usage&lt;/a&gt;, it’s time to put some rubber on the road and pedal to the metal etc&lt;/p&gt;  &lt;p&gt;First we need to sort out that master page, converting it to a Spark master layout. Here’s the site.master:&lt;/p&gt;  &lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;%@ Master Language=&amp;quot;C#&amp;quot; Inherits=&amp;quot;System.Web.Mvc.ViewMasterPage&amp;quot; %&amp;gt;

&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; 
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  &amp;lt;title&amp;gt;
    &amp;lt;asp:ContentPlaceHolder ID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;
  &amp;lt;/title&amp;gt;
  &amp;lt;link href=&amp;quot;../../Content/Site.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;
  &amp;lt;meta content=&amp;quot;Nerd, Dinner, Geek, Luncheon, Dweeb, Breakfast, Technology, Bar, Beer, Wonk&amp;quot;
    name=&amp;quot;keywords&amp;quot; /&amp;gt;
  &amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;Host and promote your own Nerd Dinner free!&amp;quot; /&amp;gt;
  &amp;lt;script src=&amp;quot;/Scripts/jquery-1.3.2.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;div class=&amp;quot;page&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;
      &amp;lt;div id=&amp;quot;title&amp;quot;&amp;gt;
        &amp;lt;h1&amp;gt;NerdDinner&amp;lt;/h1&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div id=&amp;quot;logindisplay&amp;quot;&amp;gt;
        &amp;lt;% Html.RenderPartial(&amp;quot;LoginStatus&amp;quot;); %&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div id=&amp;quot;menucontainer&amp;quot;&amp;gt;
        &amp;lt;ul id=&amp;quot;menu&amp;quot;&amp;gt;
          &amp;lt;li&amp;gt;&amp;lt;%= Html.ActionLink(&amp;quot;Find Dinner&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Home&amp;quot;)%&amp;gt;&amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;&amp;lt;%= Html.ActionLink(&amp;quot;Host Dinner&amp;quot;, &amp;quot;Create&amp;quot;, &amp;quot;Dinners&amp;quot;)%&amp;gt;&amp;lt;/li&amp;gt;
          &amp;lt;li&amp;gt;&amp;lt;%= Html.ActionLink(&amp;quot;About&amp;quot;, &amp;quot;About&amp;quot;, &amp;quot;Home&amp;quot;)%&amp;gt;&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;main&amp;quot;&amp;gt;
      &amp;lt;asp:ContentPlaceHolder ID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;And the Spark master-layout equivalent:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; 
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;global type='string' Title='&amp;quot;Title&amp;quot;'/&amp;gt;
    &amp;lt;title&amp;gt;${Title}&amp;lt;/title&amp;gt;
    &amp;lt;link href=&amp;quot;../../Content/Site.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;
    &amp;lt;meta content=&amp;quot;Nerd, Dinner, Geek, Luncheon, Dweeb, Breakfast, Technology, Bar, Beer, Wonk&amp;quot;
        name=&amp;quot;keywords&amp;quot; /&amp;gt; 
    &amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;Host and promote your own Nerd Dinner free!&amp;quot; /&amp;gt; 
    &amp;lt;script src=&amp;quot;/Scripts/jquery-1.3.2.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;    
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div class=&amp;quot;page&amp;quot;&amp;gt;
      &amp;lt;div id=&amp;quot;header&amp;quot;&amp;gt;
        &amp;lt;div id=&amp;quot;title&amp;quot;&amp;gt;
          &amp;lt;h1&amp;gt;NerdDinner&amp;lt;/h1&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&amp;quot;logindisplay&amp;quot;&amp;gt;
          &amp;lt;LoginStatus /&amp;gt;
        &amp;lt;/div&amp;gt; 
        &amp;lt;div id=&amp;quot;menucontainer&amp;quot;&amp;gt;
          &amp;lt;ul id=&amp;quot;menu&amp;quot;&amp;gt;      
            &amp;lt;li&amp;gt;!{ Html.ActionLink(&amp;quot;Find Dinner&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Home&amp;quot;) }&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;!{ Html.ActionLink(&amp;quot;Host Dinner&amp;quot;, &amp;quot;Create&amp;quot;, &amp;quot;Dinners&amp;quot;) }&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;!{ Html.ActionLink(&amp;quot;About&amp;quot;, &amp;quot;About&amp;quot;, &amp;quot;Home&amp;quot;) }&amp;lt;/li&amp;gt;   
          &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div id=&amp;quot;main&amp;quot;&amp;gt;
        &amp;lt;use content=&amp;quot;MainContent&amp;quot;/&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;Note the declaration and usage of the Title variable, the inclusion of a partial view template (LoginStatus) and the ContentPlaceHolder control equivalent (&amp;lt;use content=”” /&amp;gt; in div “main”).&lt;/p&gt;

&lt;p&gt;Let’s look at the partial view vs the Spark partial file equivalent. Here’s the Web Forms version:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; Inherits=&amp;quot;System.Web.Mvc.ViewUserControl&amp;quot; %&amp;gt;
&amp;lt;%
    if (Request.IsAuthenticated) {
%&amp;gt;
        Welcome &amp;lt;b&amp;gt;&amp;lt;%= Html.Encode(Page.User.Identity.Name) %&amp;gt;&amp;lt;/b&amp;gt;!
        [ &amp;lt;%= Html.ActionLink(&amp;quot;Log Off&amp;quot;, &amp;quot;LogOff&amp;quot;, &amp;quot;Account&amp;quot;) %&amp;gt; ]
&amp;lt;%
    }
    else {
%&amp;gt; 
        [ &amp;lt;%= Html.ActionLink(&amp;quot;Log On&amp;quot;, &amp;quot;LogOn&amp;quot;, &amp;quot;Account&amp;quot;) %&amp;gt; ]
&amp;lt;%
    }
%&amp;gt;&lt;/pre&gt;

&lt;p&gt;and the Spark version:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;if condition='Request.IsAuthenticated'&amp;gt;
  Welcome &amp;lt;b&amp;gt;${Context.User.Identity.Name}!&amp;lt;/b&amp;gt;
  [ !{Html.ActionLink(&amp;quot;Log Off&amp;quot;, &amp;quot;LogOff&amp;quot;, &amp;quot;Account&amp;quot;)} ] (Spark)
&amp;lt;/if&amp;gt;
&amp;lt;else&amp;gt;
[ !{Html.ActionLink(&amp;quot;Log On&amp;quot;, &amp;quot;LogOn&amp;quot;, &amp;quot;Account&amp;quot;)} ] (Spark)
&amp;lt;/else&amp;gt;&lt;/pre&gt;

&lt;p&gt;I could probably make the Web Forms one a bit more compact but the point here is to draw comparisons between implementing the two approaches rather than try and weigh up the relative merits of each. I leave that as an exercise for the reader.&lt;/p&gt;

&lt;p&gt;So, to actually render a page, lets look at the Home/Index view in both Web Forms and Spark versions. Web Forms:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Views/Shared/Site.Master&amp;quot;
   Inherits=&amp;quot;System.Web.Mvc.ViewPage&amp;quot; %&amp;gt;

&amp;lt;asp:Content ID=&amp;quot;Title&amp;quot; ContentPlaceHolderID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  Find a Dinner
&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;indexContent&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  &amp;lt;script src=&amp;quot;http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&amp;quot; 
      type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src=&amp;quot;/Scripts/Map.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;h2&amp;gt;Find a Dinner&amp;lt;/h2&amp;gt;
  &amp;lt;div id=&amp;quot;mapDivLeft&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;searchBox&amp;quot;&amp;gt;
      Enter your location:
      &amp;lt;%= Html.TextBox(&amp;quot;Location&amp;quot;) %&amp;gt;
      or
      &amp;lt;%= Html.ActionLink(&amp;quot;View All Upcoming Dinners&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Dinners&amp;quot;) %&amp;gt;.
      &amp;lt;input id=&amp;quot;search&amp;quot; type=&amp;quot;submit&amp;quot; value=&amp;quot;Search&amp;quot; /&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;theMap&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&amp;quot;mapDivRight&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;dinnerList&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;

    $(document).ready(function () {
      LoadMap();
    });

    $(&amp;quot;#search&amp;quot;).click(function (evt) {
      var where = jQuery.trim($(&amp;quot;#Location&amp;quot;).val());
      if (where.length &amp;lt; 1)
        return;

      FindDinnersGivenLocation(where);
    });

  &amp;lt;/script&amp;gt;
&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;

&lt;p&gt;and the Spark version:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;content name=&amp;quot;MainContent&amp;quot;&amp;gt;
  &amp;lt;set Title=&amp;quot;'Find a Dinner (Spark)'&amp;quot; /&amp;gt;
  &amp;lt;script src=&amp;quot;http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&amp;quot; 
          type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src=&amp;quot;/Scripts/Map.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;h2&amp;gt;${Title}&amp;lt;/h2&amp;gt;
  &amp;lt;div id=&amp;quot;mapDivLeft&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;searchBox&amp;quot;&amp;gt;
      Enter your location: 
      !{Html.TextBox(&amp;quot;Location&amp;quot;)} 
      or 
      !{Html.ActionLink(&amp;quot;View All Upcoming Dinners&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Dinners&amp;quot;)}.
      &amp;lt;input id=&amp;quot;search&amp;quot; type=&amp;quot;submit&amp;quot; value=&amp;quot;Search&amp;quot; /&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;theMap&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&amp;quot;mapDivRight&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;dinnerList&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;

    $(document).ready(function() {
    LoadMap();
    });

    $(&amp;quot;#search&amp;quot;).click(function(evt) {
    var where = jQuery.trim($(&amp;quot;#Location&amp;quot;).val());
    if (where.length &amp;lt; 1) 
            return;

        FindDinnersGivenLocation(where);
    });

  &amp;lt;/script&amp;gt;
&amp;lt;/content&amp;gt;&lt;/pre&gt;

&lt;p&gt;Note the use of the &amp;lt;content&amp;gt; tag and the setting of the Title variable. Other than that the file is very similar to the Web Forms version. Of course we can compare how the two different versions render (the (Spark) notations in the Spark version were added intentionally to distinguish the two)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/Nerdaspx_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Nerdaspx" border="0" alt="Nerdaspx" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/Nerdaspx_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/Nerdspark_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Nerdspark" border="0" alt="Nerdspark" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/Nerdspark_thumb.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The other page I tackled was the Dinners/Index page as it uses the common pattern of iterating over a collection of objects for display. Here’s the Web Forms version:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;%@ Page Inherits=&amp;quot;System.Web.Mvc.ViewPage&amp;lt;NerdDinner.Helpers.PaginatedList&amp;lt;NerdDinner.Models.Dinner&amp;gt;&amp;gt;&amp;quot;
  Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Views/Shared/Site.Master&amp;quot; %&amp;gt;

&amp;lt;asp:Content ID=&amp;quot;Title&amp;quot; ContentPlaceHolderID=&amp;quot;TitleContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  Upcoming Dinners
&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Content2&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
  &amp;lt;h2&amp;gt;Upcoming Dinners&amp;lt;/h2&amp;gt;
  &amp;lt;ul&amp;gt;
    &amp;lt;% foreach (var dinner in Model)
       { %&amp;gt;
    &amp;lt;li&amp;gt;
      &amp;lt;%= Html.ActionLink(dinner.Title, &amp;quot;Details&amp;quot;, new { id=dinner.DinnerID }) %&amp;gt;
      on
      &amp;lt;%= Html.Encode(dinner.EventDate.ToShortDateString())%&amp;gt;
      @
      &amp;lt;%= Html.Encode(dinner.EventDate.ToShortTimeString())%&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;% } %&amp;gt;
  &amp;lt;/ul&amp;gt;
  &amp;lt;div class=&amp;quot;pagination&amp;quot;&amp;gt;
    &amp;lt;% if (Model.HasPreviousPage)
       { %&amp;gt;
    &amp;lt;%= Html.RouteLink(&amp;quot;&amp;lt;&amp;lt;&amp;lt;&amp;quot;, 
                               &amp;quot;UpcomingDinners&amp;quot;, 
                               new { page=(Model.PageIndex-1) }) %&amp;gt;
    &amp;lt;% } %&amp;gt;
    &amp;lt;% if (Model.HasNextPage)
       { %&amp;gt;
    &amp;lt;%= Html.RouteLink(&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;quot;, 
                               &amp;quot;UpcomingDinners&amp;quot;, 
                               new { page = (Model.PageIndex + 1) })%&amp;gt;
    &amp;lt;% } %&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;

&lt;p&gt;And the Spark version:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;content name=&amp;quot;MainContent&amp;quot;&amp;gt;
&amp;lt;viewdata model=&amp;quot;NerdDinner.Helpers.PaginatedList[[NerdDinner.Models.Dinner]]&amp;quot; /&amp;gt;
&amp;lt;set Title=&amp;quot;'Upcoming Dinners (Spark)'&amp;quot; /&amp;gt;
    &amp;lt;h2&amp;gt;${Title}&amp;lt;/h2&amp;gt;
    &amp;lt;ul&amp;gt;
        &amp;lt;li each=&amp;quot;var dinner in Model&amp;quot;&amp;gt;     
            !{ Html.ActionLink(dinner.Title, &amp;quot;Details&amp;quot;, new { id=dinner.DinnerID }) }
            on 
            !{ Html.Encode(dinner.EventDate.ToShortDateString()) }
            @
            !{ Html.Encode(dinner.EventDate.ToShortTimeString()) }
        &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
    &amp;lt;div class=&amp;quot;pagination&amp;quot;&amp;gt;
        &amp;lt;if condition='Model.HasPreviousPage'&amp;gt;     
            !{ Html.RouteLink(&amp;quot;&amp;lt;&amp;lt;&amp;lt;&amp;quot;, 
                               &amp;quot;UpcomingDinners&amp;quot;, 
                               new { page=(Model.PageIndex-1) }) }        
        &amp;lt;/if&amp;gt;        
        &amp;lt;if condition='Model.HasNextPage'&amp;gt;       
            !{ Html.RouteLink(&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;quot;, 
                               &amp;quot;UpcomingDinners&amp;quot;, 
                               new { page = (Model.PageIndex + 1) }) }
        &amp;lt;/if&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/content&amp;gt;&lt;/pre&gt;

&lt;p&gt;Note the viewdata tag and the succinct syntax for generating the &amp;lt;li&amp;gt;s. Again we can play spot the difference.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/NerdDaspx_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NerdDaspx" border="0" alt="NerdDaspx" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/NerdDaspx_thumb.png" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/NerdDspark_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NerdDspark" border="0" alt="NerdDspark" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/AddingabitofSparktoNerdDinner_F950/NerdDspark_thumb.png" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hopefully that’s give you at least a flavour of Spark itself and how easy it is to swap out the view engine in ASP.NET MVC. The Web Forms syntax is familiar to many of us but I must admit I’m impressed with the intuitive and succinct way in which Spark can represent my intent. I’d definitely like to spend more time with it exploring its capabilities.&lt;/p&gt;

&lt;p&gt;I should close by saying I claim no particular expertise in Spark. There are almost certainly better ways of doing some of the things I’ve done. Please leave a comment if you think you can improve things. Thanks!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938308" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>A Bit About Spark</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/17/a-bit-about-spark.aspx</link><pubDate>Thu, 17 Dec 2009 17:21:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938277</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9938277.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9938277</wfw:commentRss><description>&lt;p&gt;In my &lt;a href="http://blogs.msdn.com/mikeormond/archive/2009/12/17/extending-asp-net-mvc-replacing-the-view-engine.aspx"&gt;last post&lt;/a&gt; I installed and configured &lt;a href="http://sparkviewengine.com/"&gt;Spark&lt;/a&gt; as an alternative view engine for ASP.NET MVC. Before we do anything else with it though, we need to understand a little of the syntax.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Spark View Page&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First of all, a Spark page looks much like an HTML page. It supports HTML tags as you’d expect but allows you to intersperse code and do some other clever things very succinctly. So, for example, the following is a valid Spark view page:&lt;/p&gt;  &lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;p&amp;gt;Hello World.&amp;lt;/p&amp;gt;&lt;/pre&gt;

&lt;p&gt;It’s not a very good view page – it doesn’t have a valid structure or DOCTYPE for example – but it is a view page.&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; 
    &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;p&amp;gt;Hello World.&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;Is better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How about we want to add some code?&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;p&amp;gt;Hello ${Context.User.Identity.Name}.&amp;lt;/p&amp;gt;&lt;/pre&gt;

&lt;p&gt;Would greet the (authenticated) user. The ${} syntax executes the embedded code and generates output. This output is automatically HTML encoded (set in configuration). If you want to bypass HTML encoding use !{} instead. So, for example, to use an HTML helper method we would use:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;p&amp;gt;Hello ${Context.User.Identity.Name}.&amp;lt;/p&amp;gt;
&amp;lt;div&amp;gt;!{ Html.ActionLink(&amp;quot;Log On&amp;quot;, &amp;quot;LogOn&amp;quot;, &amp;quot;Account&amp;quot;) }&amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Conditionals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Conditional statements take the form&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;if condition='Some Condition'&amp;gt;
  Do Something
&amp;lt;/if&amp;gt;
&amp;lt;else&amp;gt;
  Do Something Else
&amp;lt;/else&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s possible to create local and global variables (useful for sharing data across view, master and partial views).&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;global type='string' Title='&amp;quot;Title&amp;quot;'/&amp;gt;&lt;/pre&gt;

&lt;p&gt;And you can then set them using&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;set Title=&amp;quot;'Find a Dinner (Spark)'&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Accessing ViewData&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have access to the ViewData. You can use ${ViewData[&amp;quot;key&amp;quot;]} but there is a better way:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;viewdata 
  Caption=&amp;quot;string&amp;quot; 
  Products=&amp;quot;System.Collections.Generic.IList[[MyApp.Models.Product]]&amp;quot;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;This gives me strongly-types access to two objects stored in ViewData, Caption (of type string) and Products (of type IList&amp;lt;MyApp.Models.Product&amp;gt;. The [[]] syntax is used in the markup to avoid the editor trying to add matching closing elements when you’re trying to indicate a generic type.&lt;/p&gt;

&lt;p&gt;If I have a strongly-typed Model, I can do this instead:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;viewdata model=&amp;quot;NerdDinner.Helpers.PaginatedList[[NerdDinner.Models.Dinner]]&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;And I then have strongly-typed access to my Model which is a PaginatedList of Dinners (see Nerd Dinner for more info – this is the model type used for Dinners/Index view).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Looping / Enumerating Collections&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is then a very neat syntax for enumerating a collection – along the lines of:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;li each=&amp;quot;var dinner in Model&amp;quot;&amp;gt;     
    !{ Html.ActionLink(dinner.Title, &amp;quot;Details&amp;quot;, new { id=dinner.DinnerID }) }
    on 
    !{ Html.Encode(dinner.EventDate.ToShortDateString()) }
    @
    !{ Html.Encode(dinner.EventDate.ToShortTimeString()) }
&amp;lt;/li&amp;gt;&lt;/pre&gt;

&lt;p&gt;Which essentially says for each dinner in the Model (collection of dinners) create me an &amp;lt;li&amp;gt; element of this shape.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Masterpages and Partial Views&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We haven’t yet touched on how to create the standardised look and feel that a Web Forms masterpage can create and how to manage re-usable templates (the equivalent of partial views in the Web Forms view engine). Good news! Both are possible…&lt;/p&gt;

&lt;p&gt;For master pages (master-layouts in Spark), there a &lt;a href="http://sparkviewengine.com/documentation/master-layouts"&gt;number of options&lt;/a&gt;, I managed to get away with the easiest which is simply to create an Application.spark file in the Shared views folder. This is the equivalent of your Web Forms master page. This master-layout file can reference “named content” which happens to be the result of rendering the view page itself. So for example, the master-layout might contain something like:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;div id=&amp;quot;main&amp;quot;&amp;gt;
    &amp;lt;use content=&amp;quot;MainContent&amp;quot;/&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
And the view page would be: 

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;content name=&amp;quot;MainContent&amp;quot;&amp;gt;
  &amp;lt;div&amp;gt;Hello World!&amp;lt;/div&amp;gt;
&amp;lt;/content&amp;gt;&lt;/pre&gt;

&lt;p&gt;When the view is rendered, the resulting markup is “injected” into the master-layout at the appropriate place.&lt;/p&gt;

&lt;p&gt;Partial views are similar and again there a number of options but if you follow the right convention, you can use a syntax like this in your view:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;div id=&amp;quot;logindisplay&amp;quot;&amp;gt;
  &amp;lt;LoginStatus /&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;And the the LoginStatus partial view will be rendered inside the &amp;lt;div&amp;gt; tags. The convention is to name your partial view file starting with an underscore, so in the case _LoginStatus.spark, and place it in the shared directory or the view directory for the controller.&lt;/p&gt;

&lt;p&gt;In the next post I’ll go through the equivalent Spark code I used to replace a few of the pages in the Nerd Dinner site.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938277" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>Extending ASP.NET MVC – Replacing the View Engine</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/17/extending-asp-net-mvc-replacing-the-view-engine.aspx</link><pubDate>Thu, 17 Dec 2009 15:55:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9938228</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9938228.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9938228</wfw:commentRss><description>&lt;p&gt;One of the less discussed aspects of ASP.NET MVC is its extensibility. Pretty much any component can be replaced if it doesn’t suit your needs. Don’t like our ControllerFactory (maybe you want to use &lt;a href="http://blog.wekeroad.com/smackdown/200-page-manual-on-inversion-of-control-plus-or-minus-199/"&gt;Dependency Injection&lt;/a&gt;)? That’s okay, use another one. Don’t like the Web Forms view engine? That’s okay, use another one.&lt;/p&gt;  &lt;p&gt;In a rash moment I decided to take a look at replacing the Web Forms view engine for &lt;a href="http://nerddinner.codeplex.com/"&gt;Nerd Dinner&lt;/a&gt; with an alternative. There are quite a few out there (take a look at &lt;a href="http://mvccontrib.codeplex.com/documentation"&gt;MVC Contrib&lt;/a&gt; for a selection including Brail, NDjango, NHaml, NVelocity etc) but I decided to &lt;a href="http://sparkviewengine.com/"&gt;run with Spark&lt;/a&gt; as I’d used it once before. (When I say used I really mean I’d managed to get it to render something once so it wasn’t such a great foundation to build on but hey ho).&lt;/p&gt;  &lt;p&gt;The idea was just to replace a few pages in Nerd Dinner rather than overhaul the whole thing. I also ran into a few problems as I’m using VS2010 and I have an updated version of Nerd Dinner that I’d created that was running on .NET 4.0. Spark didn’t like this much so I had to re-target to .NET 3.5 which broke a few things. Anyway, that’s by the by.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkContents_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SparkContents" border="0" alt="SparkContents" align="right" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkContents_thumb.png" width="244" height="166" /&gt;&lt;/a&gt;Download Spark&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First things first – start by &lt;a href="http://sparkviewengine.codeplex.com/Release/ProjectReleases.aspx"&gt;downloading Spark&lt;/a&gt;. The download contains the binaries, samples, documentation etc. Unzip the download to a suitable location.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Register Spark&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Next you need to register the Spark view engine in your application.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add references to &lt;strong&gt;Spark.dll &lt;/strong&gt;and &lt;strong&gt;Spark.Web.Mvc.dll&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Add the following line of code to Application_Start() in Global.asax &lt;/li&gt; &lt;/ol&gt;  &lt;pre class="brush:csharp;tab-size:2;"&gt;ViewEngines.Engines.Add(new SparkViewFactory());&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkRef_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SparkRef" border="0" alt="SparkRef" align="right" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkRef_thumb.png" width="140" height="244" /&gt;&lt;/a&gt;This registers the Spark view engine in addition to the Web Forms view engine. In my case this is what I want as I’m not going to replace every view with a Spark version. To keep the full site working some will render with Spark and some with Web Forms. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure Spark&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can either do your configuration declaratively or in code. I choose to go declarative so. This involves editing Web.config to add a &amp;lt;spark&amp;gt; config section. Make sure you edit the right Web.config file as I spent a while scratching my head wondering why changes weren’t taking effect before I realised I’d edited the one in the Views folder. I added the following:&lt;/p&gt;

&lt;pre class="brush:xml;tab-size:2;"&gt;&amp;lt;configSections&amp;gt;
  &amp;lt;section name=&amp;quot;spark&amp;quot; type=&amp;quot;Spark.Configuration.SparkSectionHandler, Spark&amp;quot;/&amp;gt;
&amp;lt;/configSections&amp;gt;

&amp;lt;spark&amp;gt;
  &amp;lt;compilation debug=&amp;quot;true&amp;quot;&amp;gt;
    &amp;lt;assemblies&amp;gt;
    &amp;lt;/assemblies&amp;gt;
  &amp;lt;/compilation&amp;gt;
  &amp;lt;pages automaticEncoding=&amp;quot;true&amp;quot; &amp;gt;
    &amp;lt;namespaces&amp;gt;
      &amp;lt;add namespace=&amp;quot;System&amp;quot;/&amp;gt;
      &amp;lt;add namespace=&amp;quot;System.Collections.Generic&amp;quot;/&amp;gt;
      &amp;lt;add namespace=&amp;quot;System.Linq&amp;quot;/&amp;gt;
      &amp;lt;add namespace=&amp;quot;System.Web.Mvc&amp;quot;/&amp;gt;
      &amp;lt;add namespace=&amp;quot;System.Web.Mvc.Html&amp;quot;/&amp;gt;
    &amp;lt;/namespaces&amp;gt;
    &amp;lt;resources&amp;gt;
    &amp;lt;/resources&amp;gt;
  &amp;lt;/pages&amp;gt;
&amp;lt;/spark&amp;gt;&lt;/pre&gt;

&lt;p&gt;This enables debug mode, automatic HTML encoding of output and registers a set of namespaces for use in Spark view pages.&lt;/p&gt;

&lt;p&gt;To test things were working I created a Spark view page: /Views/Home/Index.spark which looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkHello_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SparkHello" border="0" alt="SparkHello" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkHello_thumb.png" width="644" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkHelloOP_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SparkHelloOP" border="0" alt="SparkHelloOP" align="right" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/ExtendingAS.NETMVCReplacingtheViewEngine_DFBA/SparkHelloOP_thumb.png" width="244" height="184" /&gt;&lt;/a&gt;Notice (in Solution Explorer) I also renamed the Index.aspx view page so it wouldn’t be resolved to the Web Forms view engine and the Spark view engine would get a look in. Amazingly, this worked.&lt;/p&gt;

&lt;p&gt;Admittedly it’s not really exploring any of Spark’s capabilities but it represented progress nonetheless.&lt;/p&gt;

&lt;p&gt;Next up was to try and replace the Web Forms homepage with an identical Spark version. Before I could do that I need to learn a little about Spark syntax (and how it handled master pages and partial views etc). I’ll take a look at that in my next post.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9938228" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category></item><item><title>Search Engine Optimisation</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/15/search-engine-optimisation.aspx</link><pubDate>Tue, 15 Dec 2009 16:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937121</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9937121.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9937121</wfw:commentRss><description>&lt;P&gt;Here I go again on the importance of SEO and the benefits of the SEO Toolkit :). I put together a short slide deck summarising things. The important things to know are [a] it’s good at what it does [b] it’s free [c] it works with IIS7.x so if you have Windows Vista / 7 / Server 2008 / Server 2008 R2 then you’re set. Just make sure IIS is enabled and download the SEO Toolkit. The simplest way to do both this things is with the &lt;A href="http://bit.ly/web_pi"&gt;Web Platform Installer&lt;/A&gt;. Simples.&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; WIDTH: 425px" id=__ss_2721780&gt;&lt;A style="MARGIN: 12px 0px 3px; DISPLAY: block; FONT: 14px helvetica,arial,sans-serif; TEXT-DECORATION: underline" title="Optimising your site for search engines" href="http://www.slideshare.net/ukdpe/optimising-your-site-for-search-engines-2721780" mce_href="http://www.slideshare.net/ukdpe/optimising-your-site-for-search-engines-2721780"&gt;Optimising your site for search engines&lt;/A&gt;
&lt;OBJECT style="MARGIN: 0px" width=425 height=355&gt;&lt;PARAM NAME="movie" VALUE="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seotoolkit-091215055219-phpapp01&amp;amp;stripped_title=optimising-your-site-for-search-engines-2721780"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowScriptAccess" VALUE="always"&gt;
&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seotoolkit-091215055219-phpapp01&amp;amp;stripped_title=optimising-your-site-for-search-engines-2721780" mce_src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seotoolkit-091215055219-phpapp01&amp;amp;stripped_title=optimising-your-site-for-search-engines-2721780" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;DIV style="FONT-FAMILY: tahoma,arial; HEIGHT: 26px; FONT-SIZE: 11px; PADDING-TOP: 2px"&gt;View more &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;presentations&lt;/A&gt; from &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/ukdpe" mce_href="http://www.slideshare.net/ukdpe"&gt;ukdpe&lt;/A&gt;.&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Clickable links from the deck:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/seotoolkit" mce_href="http://bit.ly/seotoolkit"&gt;http://bit.ly/seotoolkit&lt;/A&gt; (more on the SEL Toolkit)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/seotoolkitdl" mce_href="http://bit.ly/seotoolkitdl"&gt;http://bit.ly/seotoolkitdl&lt;/A&gt; (SEO Toolkit download)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://bit.ly/web_pi" mce_href="http://bit.ly/web_pi"&gt;http://bit.ly/web_pi&lt;/A&gt; (Web Platform Installer)&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937121" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Event+Q_2B00_A/default.aspx">Event Q+A</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Web Platform Slideshow</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/15/web-platform-slideshow.aspx</link><pubDate>Tue, 15 Dec 2009 16:25:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937113</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9937113.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9937113</wfw:commentRss><description>&lt;p&gt;This is a deck from a session I delivered recently trying to round-up some of the highlights of the next wave of .NET from a web dev perspective. There’s not much of a narrative to it but it hits most of the ‘futures’ highlights (with a brief detour into current MVC). Feel free to use any / all of it if you find it useful.&lt;/p&gt;  &lt;div style="text-align: left; width: 425px" id="__ss_2682661"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="Microsoft&amp;#39;s Web Platform" href="http://www.slideshare.net/ukdpe/microsofts-web-platform"&gt;Microsoft's Web Platform&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webplatformupload-091209083621-phpapp01&amp;amp;stripped_title=microsofts-web-platform" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webplatformupload-091209083621-phpapp01&amp;amp;stripped_title=microsofts-web-platform" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/ukdpe"&gt;ukdpe&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Clickable links from slide deck:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.asp.net/"&gt;http://www.asp.net/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/mvc/"&gt;http://www.asp.net/mvc/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/products/2010/"&gt;http://www.microsoft.com/visualstudio/products/2010/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/"&gt;http://www.microsoft.com/web/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://bit.ly/sl_net"&gt;http://www.silverlight.net/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I just spotted that ScottGu has &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/12/15/search-engine-optimization-seo-toolkit.aspx"&gt;blogged about the SEO Toolkit again today&lt;/a&gt;, reflecting on the fact that so few people are using it. He also links to an &lt;a href="http://www.iis.net/expand/SEOToolkit"&gt;excellent 5 minute video&lt;/a&gt; which talks through some of the capabilities. One important point he emphasizes is that although you need IIS7.x to run the SEO Toolkit, you can use it to analyse any website running on any web-server. It crawls this site just as a search engine would.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937113" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Event+Q_2B00_A/default.aspx">Event Q+A</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IIS/default.aspx">IIS</category></item><item><title>MIX10 Registration Open</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/09/mix10-registration-open.aspx</link><pubDate>Wed, 09 Dec 2009 18:17:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934719</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9934719.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9934719</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/MIX10RegistrationOpen_F3B6/Mix10_LoveTheWeb_grn_240_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 15px 15px; display: inline; border-top: 0px; border-right: 0px" title="Mix10_LoveTheWeb_grn_240" border="0" alt="Mix10_LoveTheWeb_grn_240" align="right" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/MIX10RegistrationOpen_F3B6/Mix10_LoveTheWeb_grn_240_thumb.jpg" width="244" height="324" /&gt;&lt;/a&gt;Yes, it’s that time of year again when March (and MIX) seem to be both in the distant future and almost upon us at the same time. The conference is billed as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“A 3 day conference for web designers and developers building the world's most innovative web sites.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;But it’s even broader than that. If I understood Ray Ozzie correctly (&lt;a href="http://microsoftpdc.com/Sessions/KEY01"&gt;in the PDC keynote&lt;/a&gt;) this is also where we’ll hear about developing apps for the next generation of Windows Phone and the Windows Live Platform. So it’s about Silverlight, Expression, ASP.NET, AJAX, standards, user experience, cloud, media and a whole lot more…&lt;/p&gt;  &lt;h4&gt;&lt;a href="http://bit.ly/MIX10"&gt;MIX10 Main Site&lt;/a&gt;&lt;/h4&gt;  &lt;h4&gt;&lt;a href="http://bit.ly/MIX10REG"&gt;Registration&lt;/a&gt;&lt;/h4&gt;  &lt;h4&gt;&lt;a href="http://bit.ly/MIX10SESSIONS"&gt;Sessions (announced so far)&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;ScottGu and Bill Buxton will be keynoting again. I see &lt;a href="http://live.visitmix.com/Speakers/Miguel-de-Icaza"&gt;Miguel de Icaza&lt;/a&gt; has a session on the Mono Project, &lt;a href="http://johnpapa.net/"&gt;John Papa&lt;/a&gt; is running a SL4 Bootcamp and &lt;a href="http://weblogs.asp.net/jgalloway/"&gt;Jon Galloway&lt;/a&gt; is running an ASP.NET MVC Bootcamp. I wonder if I can make it to both?&lt;/p&gt;  &lt;p&gt;Registration before 15th Jan costs $795 ($1395 thereafter). You can add the precon workshops for $295 and there’s a special academic rate (for full-time teachers / students) of $595.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934719" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Event+Q_2B00_A/default.aspx">Event Q+A</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Expression/default.aspx">Expression</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Mix08/default.aspx">Mix08</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/IE/default.aspx">IE</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Azure/default.aspx">Azure</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Trusting everything you find on the internetz</title><link>http://blogs.msdn.com/mikeormond/archive/2009/12/03/trusting-everything-you-find-on-the-internetz.aspx</link><pubDate>Thu, 03 Dec 2009 19:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9932122</guid><dc:creator>MikeOrmond</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mikeormond/comments/9932122.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikeormond/commentrss.aspx?PostID=9932122</wfw:commentRss><description>&lt;P&gt;News. Pah. I remember the days when I (perhaps foolishly) believed what I read in the papers. Today somewhat less so but newspapers remain in a different league to much of the so-called journalism we find ourselves surrounded with today. The trouble is we’re under attack on so many fronts we risk being out-manoeuvred…&lt;/P&gt;
&lt;H3&gt;It's Not News!&lt;/H3&gt;
&lt;P&gt;Firstly there is, as Charlie Brooker so elegantly puts it, the “IT’S NOT NEWS” problem. &lt;A href="http://news.bbc.co.uk/1/hi/programmes/breakfast/default.stm" mce_href="http://news.bbc.co.uk/1/hi/programmes/breakfast/default.stm"&gt;BBC Breakfast&lt;/A&gt; I do love you but you are oh so guilty of confusing news with nonsense. While I might not be looking for a hard-core news and analysis program at 7am, I’m also not interested in Bill and Sian alternately reading our text messages with opposing views from ill (if at all) informed viewers.&lt;/P&gt;
&lt;P&gt;WARNING: Some strong language is used in this video to emphasize certain points.&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; DISPLAY: inline; FLOAT: left; PADDING-TOP: 0px" id=scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:51bab9f3-3790-4fad-acd6-d0afc295c635 class=wlWriterEditableSmartContent&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id=44774014-3c5f-460d-8a42-9daec66a9aa2&gt;
&lt;DIV&gt;&lt;A href="http://www.youtube.com/watch?v=0gIH6Em-go0" target=_new mce_href="http://www.youtube.com/watch?v=0gIH6Em-go0"&gt;&lt;IMG style="BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none" alt="" src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/Trustingeverythingyoufindontheinternetz_FF2D/video123302771962.jpg" onload="var downlevelDiv = document.getElementById('44774014-3c5f-460d-8a42-9daec66a9aa2'); downlevelDiv.innerHTML = &amp;quot;&lt;div&gt;&amp;#13;&amp;#10;&amp;#13;&amp;#10;&lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&gt;&amp;#13;&amp;#10;&amp;#13;&amp;#10;&lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/0gIH6Em-go0&amp;amp;hl=en\&amp;quot;&gt;&lt;\/param&gt;&amp;#13;&amp;#10;&amp;#13;&amp;#10;&lt;embed src=\&amp;quot;http://www.youtube.com/v/0gIH6Em-go0&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&amp;quot;;" mce_src="http://blogs.msdn.com/blogfiles/mikeormond/WindowsLiveWriter/Trustingeverythingyoufindontheinternetz_FF2D/video123302771962.jpg" galleryimg="no"&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;Differentiating between “news” and “not news”&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;“… because they’re not news. They’re ******* snowmen pictures. If the snowman’s learned to talk or he’s hanging Saddam Hussein, that’s news.”&lt;/P&gt;
&lt;P&gt;I echo those sentiments with a “hear hear!”&lt;/P&gt;
&lt;H3 style="CLEAR: left"&gt;Syndicate vs Generate&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;Then there’s the problem of syndication vs generation. I have some sympathy with Rupert Murdoch on this one (never thought I’d hear myself say that). If we expect to consume “news” for free, what happens to quality? Who pays for this and how? I &lt;U&gt;like&lt;/U&gt; the idea of Sky / BBC / The Times / CNN / xyz actually sending qualified people on location to report on incidents and provide some sort of context. I value this. I value it personally and I wholeheartedly believe society needs such a thing for the greater good. To hold people to account, to understand world events, to appreciate other cultures, to act as a catalyst and change things for the better.&lt;/P&gt;
&lt;P&gt;Is &lt;A href="http://uk.reuters.com/article/idUKTRE5B23ED20091203" mce_href="http://uk.reuters.com/article/idUKTRE5B23ED20091203"&gt;Murdoch right and Google et al wrong&lt;/A&gt;? I don’t profess to know the answer to that but I sure as heck worry about the outcome. Get this one wrong (or fail to resolve it) and we will all be worse-off in the long-term.&lt;/P&gt;
&lt;H3&gt;News at the&amp;nbsp;Speed of Light&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;And then there’s the “speed of news” problem. Today, it’s more important to be first than to be right. (Of course this is true in blogging too – be first to “break the news” and bathe in the hits and inbound links that send your Technorati authority soaring &amp;lt;irony /&amp;gt; – Technorati, oh how the mighty have fallen).&lt;/P&gt;
&lt;P&gt;There seems to be little in the way of consequences for those that peddle inaccuracies, rumour, myths or straightforward lies so wherein lies the motivation to be accurate? Checking facts takes time. Do that and run this risk of watching others break the story first (if indeed there is a story at all).&lt;/P&gt;
&lt;P&gt;And of course the resonance of a story, the part that sticks, tends to be whatever first breaks. Not the aftermath. The cleanup is a much more subdued affair. The “Black screen of death” story is a recent example and &lt;A href="http://blogs.zdnet.com/Bott/?p=1575" mce_href="http://blogs.zdnet.com/Bott/?p=1575"&gt;Ed Bott sums things up pretty well&lt;/A&gt; I think.&lt;/P&gt;
&lt;P&gt;I wouldn’t consider myself an avid consumer of news. In a way I’m surprised I feel strongly about the subject. But I do believe we’ve reached a turning point. There’s no going back but we should be very careful about the path we choose. Many roads ultimately lead to a sensationalised world where news is exclusively reported by anonymous, ill-informed people constrained to 140 characters.&lt;/P&gt;
&lt;P&gt;That’s not to say there’s no place for ill-informed people reporting news constrained by 140 characters (phew!). Just that there has to be more than that. There has to be true journalism. Journalism we can trust. Journalism to keep ourselves honest.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9932122" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Musings/default.aspx">Musings</category><category domain="http://blogs.msdn.com/mikeormond/archive/tags/Technology+General/default.aspx">Technology General</category></item></channel></rss>