<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.southworks.net/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.5.1" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Southworks Master Site Feed</title>
	<link>http://blogs.southworks.net</link>
	<description>Shows all posts, comments, and pages from all blogs</description>
	<pubDate>Fri, 19 Mar 2010 15:15:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.southworks.net/master-feed" /><feedburner:info uri="master-feed" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://blogs.southworks.net</link><url>http://static.southworksinc.com/images-v1/sw_logo.png</url><title>Southworks</title></image><item>
		<title>Metro Training at Buenos Aires</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/YU1SeDgxZgI/</link>
		<comments>http://blogs.southworks.net/msalias/2010/03/19/metro-training-at-buenos-aires/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 15:15:36 +0000</pubDate>
		<dc:creator>msalias</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/msalias/?p=15</guid>
		<description><![CDATA[I’m finishing today a whole week of Metro Training courses, covering VS 2010 and Silverlight 4. Here is a brief recap and some interesting resources for attendees and everyone else.
 
Monday to Wednesday:     Visual Studio 2010 and .NET Framework 4
Most of the content of this course came from the kit we [...]]]></description>

		<content:encoded><![CDATA[<p>I’m finishing today a whole week of Metro Training courses, covering VS 2010 and Silverlight 4. Here is a brief recap and some interesting resources for attendees and everyone else.</p>
<p><img style="margin: 0px 0px 0px 10px" border="0" alt="2010-03-17 14.49.10" align="right" src="http://blogs.southworks.net/msalias/files/2010/03/20100317144910.jpg" width="244" height="183" /> </p>
<p><font size="3">Monday to Wednesday:     <br /></font><font size="3"><strong>Visual Studio 2010 and .NET Fram</strong><strong>ework 4</strong></font></p>
<p>Most of the content of this course came from the kit we at Southworks built for DPE, which is available at Channel 9:</p>
<p><a title="http://channel9.msdn.com/learn/courses/VS2010/" href="http://channel9.msdn.com/learn/courses/VS2010/">http://channel9.msdn.com/learn/courses/VS2010/</a></p>
<p>You can check a good part of the course online, including additional videos, or you can download the offline Training Kit which gets you the full content and also includes the Dependency Checker tool for every lab. Running this tool your system is inspected to see if you have all the needed components for this lab, and you get links to download and install any missing part. To make your lab exercise even easier, the tools usually installs a series of Visual Studio snippets also, so you save a lot of typing.</p>
<p>While I was teaching the course, MIX 10 was running in Las Vegas, and had the chance to comment some of the announcements, many related to our latest cool projects, like the launch of Windows Phone 7 Series, and the release of our WP7 training kit, also available at Channel 9: <a title="http://channel9.msdn.com/learn/courses/WP7TrainingKit/" href="http://channel9.msdn.com/learn/courses/WP7TrainingKit/">http://channel9.msdn.com/learn/courses/WP7TrainingKit/</a></p>
<p>One of the topics that get people more excited was the ASP.NET Ajax Library, with all the client template stuff, and it was good that Microsoft just announced that they are investing more heavily in jQuery, as <a href="http://blog.jquery.com/2010/03/16/microsoft-to-expand-its-collaboration-with-the-jquery-community/">John Resig himself explains in this post</a>.</p>
<p>Also related is the imminent release of the&#160; <a href="Web Client Developer Guidance ">Web Client Developer Guidance</a> we are building with <a href="http://microsoft.com/practices">p&amp;p</a>. </p>
<p><a href="http://twitter.com/DeboraDiPiano"><img style="margin: 0px 0px 0px 10px" border="0" alt="Deb on Twitter" align="right" src="http://a3.twimg.com/profile_images/481647451/Deeeb_bigger.jpg" width="73" height="73" /></a>Special thanks in this course for <a href="http://dipiano.wordpress.com/">Debora Di Piano</a>, who helped me sharing her incredible expertise in Team Foundation Server with the audience.    </p>
<p><font size="3">Thursday and Friday:     <br /><strong>Line of Business Applications with Silverlight 4</strong> </font></p>
<p><a href="http://twitter.com/juliandominguez"><img style="margin: 0px 0px 0px 10px" border="0" alt="Julius on Twitter" align="right" src="http://a3.twimg.com/profile_images/80350775/space_needle_bigger.jpg" width="73" height="73" /></a>I’m finishing this course today, although it is mostly run by two good friends, colleagues and real Silverlight gurus: <a href="http://blogs.southworks.net/jdominguez/">Julian Dominguez</a> and <a href="http://blogs.southworks.net/ejadib/">Ezequiel Jadib</a>.</p>
<p>Julian is one of the masterminds behind the Web Guidance mentioned above, and he was also at the core of the <a href="http://compositewpf.codeplex.com/">Composite Application Guidance for WPF and Silverlight</a>, also known as <strong>Prism</strong> (which is way easier to remember).</p>
<p><a href="http://twitter.com/ejadib"><img style="margin: 0px 0px 0px 10px" border="0" alt="E-Sql on Twitter" align="right" src="http://a3.twimg.com/profile_images/54198833/twitter_bigger.jpg" width="73" height="73" /></a>Ezequiel worked in many awsome projects too, and is the main author of the Silverlight Rough Cut Editor, which may be well one of the more complex Silverlight applications, used to edit video from many sources in complex scenarios like the latest Winter Olympic games. You can see a whole <a href="http://live.visitmix.com/MIX10/Sessions/CL26">presentation Jason Suess about it from MIX 10</a>.</p>
<p>Here is the content of the course, also in Channel 9: <a title="http://channel9.msdn.com/learn/courses/Silverlight4/" href="http://channel9.msdn.com/learn/courses/Silverlight4/">http://channel9.msdn.com/learn/courses/Silverlight4/</a></p>
<p>Of course, you can find <a href="http://live.visitmix.com/Sessions#/tags/Silverlight">many sessions on Silverlight 4 from MIX 10</a>, as well as tons of other interesting stuff.</p>
<p>Another interesting resource we mentioned during the course, more oriented to designers, but also to the new <em>devigner</em> fellows, is the <a href="http://www.microsoft.com/design/toolbox/school/">Design Toolbox</a>.</p>
<p><img style="float: none;margin-left: auto;margin-right: auto" border="0" alt="Jadib &amp; Julius" src="http://blogs.southworks.net/msalias/files/2010/03/20100319111428.jpg" width="244" height="183" /></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=YU1SeDgxZgI:VVmLbmG4JG4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=YU1SeDgxZgI:VVmLbmG4JG4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=YU1SeDgxZgI:VVmLbmG4JG4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/YU1SeDgxZgI" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/msalias/2010/03/19/metro-training-at-buenos-aires/</feedburner:origLink></item>
	<item>
		<title>Prism v2.1: Creating a Region Adapter for the Accordion control</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/Z0BuicJk0kw/</link>
		<comments>http://blogs.southworks.net/dschenkelman/2010/03/18/prism-v21-creating-a-region-adapter-for-the-accordion-control/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 18:47:26 +0000</pubDate>
		<dc:creator>Damian Schenkelman</dc:creator>
		
		<category><![CDATA[Composite Application Guidance for WPF &amp; SL]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Prism-v2]]></category>

		<category><![CDATA[Prism-v2.1]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Silverlight 3]]></category>

		<category><![CDATA[p&amp;p]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/dschenkelman/?p=162</guid>
		<description><![CDATA[Today with Guido Maliandi, we set to find a way to use the Accordion from the Silverlight toolkit as region in a Prism application. As the Accordion inherits from ItemsControl, Prism already provided some functionality to get that control working as a region. However, we wanted it to have the following behavior:

Only one view in [...]]]></description>

		<content:encoded><![CDATA[<p>Today with <a href="http://blogs.southworks.net/gmaliandi/">Guido Maliandi</a>, we set to find a way to use the <a href="http://silverlight.codeplex.com/wikipage?title=Silverlight%20Toolkit%20Overview%20Part%201&amp;referringTitle=Home&amp;ANCHOR#Accordion">Accordion from the Silverlight toolkit</a> as region in a Prism application. As the Accordion inherits from <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.aspx">ItemsControl</a>, Prism already provided some functionality to get that control working as a region. However, we wanted it to have the following behavior:</p>
<ul>
<li>Only one view in the accordion region should be active at a time.</li>
<li>It should be possible to set the header for each <strong>AccordionItem</strong>.</li>
<li>It should be easy to extend with other required functionality.</li>
</ul>
<p>If you are familiar with Prism&#8217;s source code, you might probably notice that is quite similar to the way Prism handles <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.tabcontrol%28VS.95%29.aspx">Silverlight&#8217;s TabControl</a> as a region. Our approach was creating two classes:</p>
<ul>
<li><strong>AccordionRegionAdapter</strong>: This class would be in charge of creating the region and hooking it up with the control.</li>
<li><strong>AccordionRegionSyncBehavior</strong>: This class would provide the region&#8217;s functionality.</li>
</ul>
<p>Any other functionality that was necessary could be added through other <strong>RegionBehaviors</strong>. This document from the Prism documentation explains the usual process of <a href="http://msdn.microsoft.com/en-us/library/dd458901.aspx">creating a custom Region Adapter</a>.</p>
<p>As the code for both those classes is quite long, I decided to simply provide the download at the bottom of this post.</p>
<h5>Setting the AccordionItem&#8217;s Header Text</h5>
<p>As it can be done with the <strong>TabControl</strong> region, the following syntax can be used to show some text in the header of each <strong>AccordionItem</strong> (in this case the View&#8217;s DataContext is simply a string). The outcome can be seen in the picture placed after the code.</p>
<pre><span style="color: blue">&lt;</span><span style="color: #a31515">tk:Accordion </span><span style="color: red">Name</span><span style="color: blue">=</span>&#8220;<span style="color: blue">MainRegion</span>&#8221; <span style="color: red">Regions:RegionManager.RegionName</span><span style="color: blue">=</span>&#8220;<span style="color: blue">MainRegion</span>&#8220;<span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">shell:AccordionRegionAdapter.ItemContainerStyle</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">Style </span><span style="color: red">TargetType</span><span style="color: blue">=</span>&#8220;<span style="color: blue">tk:AccordionItem</span>&#8220;<span style="color: blue">&gt;
      &lt;</span><span style="color: #a31515">Setter </span><span style="color: red">Property</span><span style="color: blue">=</span>&#8220;<span style="color: blue">HeaderTemplate</span>&#8220;<span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;
          &lt;</span><span style="color: #a31515">DataTemplate</span><span style="color: blue">&gt;
            &lt;</span><span style="color: #a31515">TextBlock </span><span style="color: red">Text</span><span style="color: blue">=</span>&#8220;<span style="color: blue">{Binding}</span>&#8220;<span style="color: blue">/&gt;
          &lt;/</span><span style="color: #a31515">DataTemplate</span><span style="color: blue">&gt;
        &lt;/</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;
      &lt;/</span><span style="color: #a31515">Setter</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #a31515">Style</span><span style="color: blue">&gt;
  &lt;/</span><span style="color: #a31515">shell:AccordionRegionAdapter.ItemContainerStyle</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">tk:Accordion</span><span style="color: blue">&gt;
</span></pre>
<h5>Sample Application</h5>
<p><a href="http://blogs.southworks.net/dschenkelman/files/2010/03/image.png"><img src="http://blogs.southworks.net/dschenkelman/files/2010/03/image-thumb.png" border="0" alt="image" width="203" height="205" /></a></p>
<p>I created a small sample application which shows this scenario working. You can download it from <a href="http://cid-09f63fc7ac065e5e.skydrive.live.com/self.aspx/p%5E0p%20Samples/AccordionRegionAdapter.zip">here</a>. The code is provided &#8220;AS IS&#8221; with no warranties and confers no rights.</p>
<p>I hope you can make good use of it.</p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Prism-v21-Creating-a-Region-Adapter-for-the-Accordion-control"><img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fdschenkelman%2F2010%2F03%2F18%2Fprism-v21-creating-a-region-adapter-for-the-accordion-control%2F"></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=Z0BuicJk0kw:XvKVuwBfbTY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=Z0BuicJk0kw:XvKVuwBfbTY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=Z0BuicJk0kw:XvKVuwBfbTY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/Z0BuicJk0kw" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/dschenkelman/2010/03/18/prism-v21-creating-a-region-adapter-for-the-accordion-control/</feedburner:origLink></item>
	<item>
		<title>Windows Phone 7 Series announced at MIX 10</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/3RYSolWfFB8/</link>
		<comments>http://blogs.southworks.net/srenzi/2010/03/15/windows-phone-7-series-announced-at-mix-10/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 18:35:33 +0000</pubDate>
		<dc:creator>srenzi</dc:creator>
		
		<category><![CDATA[MIX 10]]></category>

		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/srenzi/2010/03/15/windows-phone-7-series-announced-at-mix-10/</guid>
		<description><![CDATA[
As it was announced by ScottGu a few minutes ago in the MIX 10 keynote , Microsoft has launched the new mobile platform. It&#8217;s called Windows Phone 7 Series. One of the principal drivers for this new platform is the user experience .
Developers using Windows Phone 7 Series will take advantage of Silverlight, the XNA [...]]]></description>

		<content:encoded><![CDATA[<p><img border="0" src="http://cache.windowsphone7series.com/images/logo.jpg" /></p>
<p>As it was announced by <a href="http://weblogs.asp.net/scottgu/" target="_blank">ScottGu</a> a few minutes ago in the MIX 10 keynote , <a href="http://www.microsoft.com" target="_blank">Microsoft</a> has launched the new mobile platform. It&#8217;s called <a href="http://www.windowsphone7series.com/" target="_blank">Windows Phone 7 Series</a>. One of the principal drivers for this new platform is the user experience .</p>
<p>Developers using Windows Phone 7 Series will take advantage of <a href="http://silverlight.net/" target="_blank">Silverlight</a>, the <a href="http://msdn.microsoft.com/en-us/aa937791.aspx" target="_blank">XNA Framework</a> and a great set of tools to build rich applications.     <br />This means that all Silverlight and XNA developers are now Windows Phone Developers automatically <img src='http://blogs.southworks.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Another great news is that developers&#160; will write the code once and then optimize across mobile devices, web, desktop or Xbox, adjusting basically the resolution and the screen size.</p>
<p>If you want to start playing you can download the Windows Phone Developers Tools as a free single download from <a href="http://developer.windowsphone.com" target="_blank">developer.windowsphone.com</a> .     </p>
<p>Windows Phone Developers Tools includes:</p>
<ul>
<li>Visual Studio 2010 Express for Windows Phone </li>
<li>Windows Phone 7 Series Add-in for Visual Studio (For developers already working with Visual Studio 2010) </li>
<li>Windows Phone 7 Series emulator </li>
<li>Expression Blend for Windows Phone <strong>(NOT YET, COMING IN THE MONTHS AHEAD)</strong> </li>
</ul>
<p>You can also browse the Channel 9 Online Training Course in <a href="http://channel9.msdn.com/learn/courses/WP7TrainingKit/" target="_blank">here</a>.</p>
<p>Stay tuned that I will post a Hello World example application for Windows Phone. </p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=3RYSolWfFB8:2yGQIQq2LmU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=3RYSolWfFB8:2yGQIQq2LmU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=3RYSolWfFB8:2yGQIQq2LmU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/3RYSolWfFB8" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/srenzi/2010/03/15/windows-phone-7-series-announced-at-mix-10/</feedburner:origLink></item>
	<item>
		<title>Silverlight Rough Cut Editor Session at MIX</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/i05WzA9GuHk/</link>
		<comments>http://blogs.southworks.net/tosborn/2010/03/13/silverlight-rough-cut-editor-session-at-mix/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 01:44:18 +0000</pubDate>
		<dc:creator>Tim Osborn</dc:creator>
		
		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/tosborn/?p=75</guid>
		<description><![CDATA[ If you are attending MIX 2010, be sure to plan to come to Jason Suess&#8217;s session on Tuesday where he&#8217;ll demonstrate the RCE, a Silverlight video editing application. We worked closely with Microsoft, NBC and Canadian TV to create this application that broadcast editors used in the recent Vancouver Winter Olympics to create highlights [...]]]></description>

		<content:encoded><![CDATA[<p><a href="http://blogs.southworks.net/tosborn/files/2010/03/nbc1.png"><img style="margin: 0px 5px 0px 0px" border="0" alt="nbc1" align="left" src="http://blogs.southworks.net/tosborn/files/2010/03/nbc1-thumb.png" width="254" height="175" /></a> If you are attending <a href="http://live.visitmix.com/">MIX 2010</a>, be sure to plan to come to Jason Suess&#8217;s <a href="http://live.visitmix.com/Speakers/Jason-Suess">session</a> on Tuesday where he&#8217;ll demonstrate the RCE, a Silverlight video editing application. We worked closely with Microsoft, NBC and Canadian TV to create this application that broadcast editors used in the recent Vancouver Winter Olympics to create highlights and online replays of Olympic events. </p>
<p>Built upon the <a href="http://msdn.microsoft.com/en-us/library/dd458809.aspx">Composite Application Guidance for WPF and Silverlight</a> (aka PRISM), the application is modular and extensible, allowing you to easily use it with custom content systems and workflows. Hope to see you there at Jason&#8217;s session! </p>
<blockquote><p>This session will provide an overview and technical details of the Silverlight Rough Cut Editor.&#160; This open source tool provides real time editing for Silverlight Smooth Streaming content, and has been used to create content for high profile events such as the 2010 Vancouver Winter Olympics and Sunday Night Football.&#160; Content publishers can use this tool to create real-time highlights, control dynamic meta-data (ad insertions and content meta-data), and create a modular approval &amp; publishing workflow for live and on demand media content (CMS integration).&#160; This session will review the core architecture (modularity, UI composition, services, and data providers) and detail how this tool is being used to meet the needs of content providers worldwide.</p>
</blockquote>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=i05WzA9GuHk:x5KRjh3EAaY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=i05WzA9GuHk:x5KRjh3EAaY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=i05WzA9GuHk:x5KRjh3EAaY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/i05WzA9GuHk" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/tosborn/2010/03/13/silverlight-rough-cut-editor-session-at-mix/</feedburner:origLink></item>
	<item>
		<title>Sharepoint 2010 and ADFS</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/ZsEMd6ie1Y8/</link>
		<comments>http://blogs.southworks.net/mwoloski/2010/03/05/sharepoint-2010-and-adfs/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:47:21 +0000</pubDate>
		<dc:creator>Matias Woloski</dc:creator>
		
		<category><![CDATA[ADFS]]></category>

		<category><![CDATA[Claim-Based Identity]]></category>

		<category><![CDATA[Identity]]></category>

		<category><![CDATA[Sharepoint 2010]]></category>

		<category><![CDATA[Windows Identity Foundation]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/mwoloski/2010/03/05/sharepoint-2010-and-adfs/</guid>
		<description><![CDATA[I’ve seen a few questions on identity federation with SharePoint before, so I thought about sharing this more broadly.   I recorded a 9 minutes screencast showing the capabilities of ADFSv2 + SharePoint 2010. This is using Microsoft STS, LiveID and our own company STS allowing the following usecases:

Manage access to employees that belong [...]]]></description>

		<content:encoded><![CDATA[<p>I’ve seen a few questions on identity federation with SharePoint before, so I thought about sharing this more broadly.   <br />I recorded a <a href="http://snipurl.com/sp2010adfs">9 minutes screencast</a> showing the capabilities of ADFSv2 + SharePoint 2010. This is using Microsoft STS, LiveID and our own company STS allowing the following usecases:</p>
<ul>
<li>Manage access to employees that belong to the Active Directory</li>
<li>Manage access to partners that has their own STS</li>
<li>Manage access to certain webparts, doc libraries or lists through Sharepoint groups and claims</li>
<li>Allow/deny access to Windows LiveID users</li>
</ul>
<p><a href="http://snipurl.com/sp2010adfs"><img border="0" alt="image" src="http://blogs.southworks.net/mwoloski/files/2010/03/image2.png" width="400" height="307" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=ZsEMd6ie1Y8:zzEbiajk_wU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=ZsEMd6ie1Y8:zzEbiajk_wU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=ZsEMd6ie1Y8:zzEbiajk_wU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/ZsEMd6ie1Y8" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/mwoloski/2010/03/05/sharepoint-2010-and-adfs/</feedburner:origLink></item>
	<item>
		<title>Claims-based Identity and Access Control Guide RTM!</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/y3OSsCVK1rU/</link>
		<comments>http://blogs.southworks.net/mwoloski/2010/03/05/claims-based-identity-and-access-control-guide-rtm/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:42:10 +0000</pubDate>
		<dc:creator>Matias Woloski</dc:creator>
		
		<category><![CDATA[ADFS]]></category>

		<category><![CDATA[Claim-Based Identity]]></category>

		<category><![CDATA[Federation]]></category>

		<category><![CDATA[Geneva Server]]></category>

		<category><![CDATA[Identity]]></category>

		<category><![CDATA[Windows Identity Foundation]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/mwoloski/2010/03/05/claims-based-identity-and-access-control-guide-rtm/</guid>
		<description><![CDATA[I found myself posting more on twitter than my blog. However this deserved a post.     The RTM of the guide is finally out there in PDF version.

Book content online on MSDN. 
Book PDF download 
Final samples download 
Discuss at Codeplex 


Looking at my name in the cover of a book together [...]]]></description>

		<content:encoded><![CDATA[<p>I found myself posting more on <a href="http://twitter.com/woloski">twitter</a> than my blog. However this deserved a post.     <br />The RTM of the guide is finally out there in PDF version.</p>
<ul>
<li>Book content online <a href="http://msdn.microsoft.com/en-us/library/ff423674.aspx">on MSDN</a>. </li>
<li>Book <a href="http://download.microsoft.com/download/C/7/6/C7680C21-E148-4240-A8CA-4D810FD7B055/A Guide to Claims-based Identity.pdf">PDF download</a> </li>
<li>Final samples <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=33829bcf-f5ea-4650-b807-57c63a753753&amp;displaylang=en">download</a> </li>
<li>Discuss at <a href="http://claimsid.codeplex.com">Codeplex</a> </li>
</ul>
<p><a href="http://download.microsoft.com/download/C/7/6/C7680C21-E148-4240-A8CA-4D810FD7B055/A Guide to Claims-based Identity.pdf"><img border="0" alt="image" src="http://blogs.southworks.net/mwoloski/files/2010/03/image.png" width="345" height="422" /></a></p>
<p>Looking at my name in the cover of a book together with such a group of experts is really a significant milestone in my career. I want to specially thanks <a href="http://blogs.msdn.com/eugeniop">Eugenio</a> for trusting me and inviting me to participate in this project. Hope you find the content useful. If you have any questions or you want to discuss about claims, identity, federation towards your next project feel free to mail me at matias at southworks dot net.</p>
<p><em>Now heading towards the second book: Cloud Guidance! Stay tuned…</em></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=y3OSsCVK1rU:lDrQPWK9XD8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=y3OSsCVK1rU:lDrQPWK9XD8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=y3OSsCVK1rU:lDrQPWK9XD8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/y3OSsCVK1rU" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/mwoloski/2010/03/05/claims-based-identity-and-access-control-guide-rtm/</feedburner:origLink></item>
	<item>
		<title>Fridays @ Southworks</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/vzoXuI2v7Rc/</link>
		<comments>http://blogs.southworks.net/nicopaez/2010/03/01/fridays-southworks/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 02:00:00 +0000</pubDate>
		<dc:creator>nicopaez</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/nicopaez/2010/03/01/fridays-southworks/</guid>
		<description><![CDATA[Every Friday at 9 o&#8217;clock we have the &#8220;Friday Presentations&#8221;. Any Southie can propose a presentation, there is no restriction about the topic, so you could be watching someone talking about dynamic languages or sharing his experiences during the last PDC. However, most presentations talk about projects that are currently executing or that we have [...]]]></description>

		<content:encoded><![CDATA[<p>Every Friday at 9 o&#8217;clock we have the &#8220;Friday Presentations&#8221;. Any <em>Southie</em> can propose a presentation, there is no restriction about the topic, so you could be watching someone talking about dynamic languages or sharing his experiences during the last PDC. However, most presentations talk about projects that are currently executing or that we have executed lately. Each presenter has a slot of 15 minutes to talk about the topic he chose. In general we have one presentation per Friday, but in some occasions we have 2 presentations.</p>
<p>Once presentations are finished we have an &#8220;Open Discussion&#8221; space. We sit in a circle and any <em>Southie</em> can propose a topic for discussion. After introducing all topics, we vote them and the TOP 2 voted topics are discussed. The open discussions topics are generally related to our daily practice, improvement opportunities, update on different things, etc.</p>
<p>Both, the presentations and discussion are recorded and published in our network to allow any <em>Southie </em>to consume them later if they could not make it.</p>
<p>All these effort is coordinated by the communications team lead by Julian Scopinaro.</p>
<p>Personally, I found these spaces very useful; they help to keep us up to date with things that are happening in the company and also allow us to talk about improvement opportunities.</p>
<p>This is part Southworks&#8217; culture.</p>
<p>Below some pictures from the last Friday.</p>
<p><a href="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0065.jpg"><img src="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0065-thumb.jpg" border="0" alt="Imagen0065" width="244" height="184" /></a><a href="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0066.jpg"><img src="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0066-thumb.jpg" border="0" alt="Imagen0066" width="244" height="184" /></a></p>
<p><a href="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0067.jpg"><img src="http://blogs.southworks.net/nicopaez/files/2010/03/imagen0067-thumb.jpg" border="0" alt="Imagen0067" width="244" height="184" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=vzoXuI2v7Rc:1IVq5YI0AZE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=vzoXuI2v7Rc:1IVq5YI0AZE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=vzoXuI2v7Rc:1IVq5YI0AZE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/vzoXuI2v7Rc" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/nicopaez/2010/03/01/fridays-southworks/</feedburner:origLink></item>
	<item>
		<title>self rebase #01</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/9gN_Cmd9sXY/</link>
		<comments>http://blogs.southworks.net/jhalife/2010/02/20/self-rebase-01/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 15:53:40 +0000</pubDate>
		<dc:creator>jhalife</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jhalife/2010/02/20/self-rebase-01/</guid>
		<description><![CDATA[Taken from the rebase concept of git which is also used by GitHub to show they newsworthy and notable projects, I’m using the post to do the same with bunch of Open Source, shared, hacking projects I’ll be doing lately.
Since 2010 started, I didn’t blogged that often, but there were a couple of projects that [...]]]></description>

		<content:encoded><![CDATA[<p>Taken from the <a href="http://mirror.averse.net/pub/software/scm/git/docs/v1.6.0.6/git-rebase.html">rebase concept of git</a> which is also used by <a href="http://github.com/blog/593-github-rebase-35">GitHub</a> to show they newsworthy and notable projects, I’m using the post to do the same with bunch of Open Source, shared, hacking projects I’ll be doing lately.</p>
<p>Since 2010 started, I didn’t blogged that often, but there were a couple of projects that I’ve been working lately. Throughout this post, I’ll describe each one and the futures.</p>
<p>Every piece of feedback will be welcome, as every other contribution too.</p>
<p>Enjoy the ride,<br />
~johnny</p>
<h2>Rack::Auth::WRAP, the OAuth WRAP Middleware</h2>
<p>Yesterday, with <a href="http://twitter.com/jpgd">Juan Pablo</a>, we published our first version of <strong>Rack::Auth::WRAP</strong> the first version of the <a href="http://rack.rubyforge.org/">Rack</a>. If you are familiar with the protocol, you can skip the next section if not, take a look at it. Extracted from the read me at <a href="http://github.com/johnnyhalife/rack-oauth-wrap">github.com</a>.</p>
<h3>What the heck is WRAP?</h3>
<p>Web Resource Authorization Protocol (WRAP) is a profile of OAuth, also called OAuth WRAP. While similar in pattern to OAuth 1.0A, the WRAP profile(s) have a number of important capabilities that were not available previously in OAuth. This specification is being contributed to the IETF OAuth WG.</p>
<p>Also this same group owns the specification for the SWT (Simple-Web-Token), for more information read <a href="wiki.oauth.net/OAuth-WRAP">wiki.oauth.net/OAuth-WRAP</a> or visit the <a href="groups.google.com/group/oauth-wrap-wg">groups.google.com/group/oauth-wrap-wg</a>.</p>
<p>The latest specification for the complete protocol can be found at Google Group as HTML (RFC properly formatted) on <a href="groups.google.com/group/oauth-wrap-wg/attach/981df73f2839b8ef/draft-hardt-oauth-wrap-01.html?part=5">groups.google.com/group/oauth-wrap-wg/attach/981df73f2839b8ef/draft-hardt-oauth-wrap-01.html?part=5</a></p>
<h3>Creating your first protected resource</h3>
<p>As you might be thinking, our first resource will be a <a href="www.sinatrarb.com">Sinatra</a> application.</p>
<p>First of all we need to install the gem, as</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c">[sudo] gem install rack-oauth-wrap</pre>
<p>To make the sample easier let’s create our own shared key, we can all share this for demo purpose <strong>NjkzNTczOTAtMDA2MC0wMTJkLTQ1M2YtMDAyMzMyYjFmYWY4\n</strong></p>
<p>So let’s start by creating the protected resource</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c;width: 660px;padding: 5px">require 'rubygems'
require 'sinatra'
require 'rack/auth/wrap'

use Rack::Auth::WRAP, :shared_secret =&gt;t; "NjkzNTczOTAtMDA2MC0wMTJkLTQ1M2YtMDAyMzMyYjFmYWY4",
                      :audiences =&gt;; "http://localhost:4567",
                      :trusted_issuers =&gt;; "urn:demo-issuer"

get "/" do
    if @env["REMOTE_USER"]
        return &#8220;You are authenticated as #{@env["REMOTE_USER"]['Email']}&#8221;
    else
        return &#8220;You are an unauthenticated user&#8221;
    end
end</pre>
<p>Now we can start this on a Terminal (cmd, or whatever) and let’s jump to the consumer, but first if you try it without sending a token, and using the client we are going to build, you will get:</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c">?&gt; curl http://localhost:45678
You are unauthenticated</pre>
<p>Now lets create a client trying to access a protected resource with a token on the header (requires <a href="http://rest-client.heroku.com">restclient</a>)</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c;width: 900px;padding: 5px">require 'rubygems'
require 'cgi'
require 'base64'
require 'restclient'
require 'hmac/sha2'

SHARED_SECRET = "NjkzNTczOTAtMDA2MC0wMTJkLTQ1M2YtMDAyMzMyYjFmYWY4\n"

simple_web_token = {'Audience' =&gt;; "http://localhost:4567",
                    'Issuer' =&gt;; "urn:demo-issuer",
                    'ExpiresOn' =&gt;; (Time.now.to_i + 60).to_s,
                    'Email' =&gt;; 'johnny.halife@sample.com'}.map{|k, v| "#{k}=#{CGI.escape(v)}"}.join("&amp;")

signature = Base64.encode64(HMAC::SHA256.new(Base64.decode64(SHARED_SECRET)).update(simple_web_token.toutf8).digest).strip
simple_web_token += "&amp;HMACSHA256=#{CGI.escape(signature)}"

puts RestClient.get("http://localhost:4567/", "Authorization" =&gt;; "WRAP access_token=#{CGI.escape(simple_web_token)}")</pre>
<p>Now let’s try our client, and see if there’s any difference with the <em>curl</em> request:</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c">?&gt; ruby client.rb
You are authenticated as johnny.halife@sample.com</pre>
<p>As you can see, we have our first end to end, Rack::Auth::WRAP Sample.</p>
<p><strong>DISCLAIMER: On a real world application you won’t generate your own token as we are doing on the client code. We are doing it for demo purposed, but probably on you app you will get a token from an authorization server. </strong></p>
<p>Both snippets are available as gits on github: <a href="http://gist.github.com/309717">Protected Resource</a> / <a href="http://gist.github.com/309732">Client</a>. We are assuming that this is running on localhost:4567</p>
<h3>TODO’s and futures</h3>
<p>On the upcoming days/weeks/months we are going to get on the middleware support for the other ways of getting the token, like Query String and/or method body. Also we would like to implement the <em>Web Profile</em> of WRAP, so stay tuned.</p>
<p>You can read the freshly published documentation at <a href="http://rack-oauth-wrap.heroku.com">http://rack-oauth-wrap.heroku.com</a></p>
<p><strong>Source Code available at</strong>:  <a href="http://github.com/johnnyhalife/rack-oauth-wrap">http://github.com/johnnyhalife/rack-oauth-wrap</a></p>
<h2>OAuth WRAP 0.9 for Tcl</h2>
<p>First of all, if you aren’t familiar with Tcl it’s “originally from “Tool Command Language”, but conventionally<br />
rendered as Tcl is a scripting language created by John Ousterhout”. I encourage you to test it and also if you are interested read <a href="http://blogs.activestate.com/2010/02/where-is-tcl-hiding/">Where’s Tcl hiding?</a>.</p>
<p>This project was born after half an hour spiking on how hard it will be to parse a token on a bare linux distro that only has Tcl. After we noticed that Tcl is really straightforward language for design, prototype and is fun to write, we packed this lib and make it available for anyone interested.</p>
<p>Here’s an snippet of the intended usage of the lib</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c;width: 675px;padding: 5px">package require ::oauth::wrap

set rawToken "access_token=something&amp;other_parameters_to_ignore" #=&gt; the token from the IP

# =&gt; creates a configuration dictionary for the values
dict set configuration signingKey {valid_key} # =&gt; signing key used by the Identity Provider
dict set configuration issuer {valid_issuer} # =&gt; the identity provider URI
dict set configuration audience {valid_audience}  # =&gt; my application audience URI

# this will return the token when it's valid else it will return false
set token [oauth::wrap::authenticate $configuration $rawToken]

# at this point if the token valid you can mess around with its claims
# that are returned on a dictionary form
set name [dict get $token name]</pre>
<p>It’s fun to give it a shot, check out the source code at <strong><a href="http://github.com/johnnyhalife/tcl-oauth-wrap">http://github.com/johnnyhalife/tcl-oauth-wrap</a></strong></p>
<h2>Windows Azure Storage for Ruby v1.0</h2>
<p>On the 4th February, 2010 <strong>I’ve published the version 1.0 of ruby gem I wrote for Windows Azure Storage</strong>. This time it has the great contribution of my friend <a href="http://twitter.com/jpgd">Juan Pablo Garcia Dalolla</a> <strong>who has implemented the Windows Azure Tables support</strong>.</p>
<p>This version of the gem also includes support for the version 2009-09-19.</p>
<p>Here’re are some code snippets from the Windows Azure Tables support</p>
<pre style="border:solid 1px #cccbba;font:normal normal normal 12px LuxiMono,'Bitstream Vera Sans Mono',Monaco,'Courier New',monospace;color:#1c360c;width: 800px;padding: 5px">require 'waz-storage'
require 'waz-tables'

# The same connection of Windows Azure Storage Core (Queues, Blobs) can be reused
WAZ::Storage::Base.establish_connection!(:account_name =&gt;; account_name,
                                         :access_key =&gt;; access_key)

# Grab the service instance
service = WAZ::Tables::Table.service_instance

# Query the customer table
service.query('customer_table', {:expression =&gt;; "(PartitionKey eq 'customer') and (Age eq 23)", :top =&gt;; 15} )

# Insert something into the customer table
serivce.query('customer_table', {:row_key =&gt;; 'my_custom_id', :name =&gt;; 'johnny'})</pre>
<p>There’s also a DataMapper adapter effort going on for Windows Azure Storage Tables, <strong>I recommend you to check out Juan Pablo’s post about <a href="http://blogs.southworks.net/jpgarcia/2010/02/08/windows-azure-tables-adapter-for-datamapper/">Windows Azure Tables Adapter for Datamapper</a></strong></p>
<p><strong>Source Code available at: <a href="http://github.com/johnnyhalife/waz-storage">http://github.com/johnnyhalife/waz-storage</a></strong></p>
<p><strong>RDoc available at: <a href="http://waz-storage.heroku.com">http://github.com/johnnyhalife/waz-storage</a></strong></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=9gN_Cmd9sXY:cPJqicbZHUE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=9gN_Cmd9sXY:cPJqicbZHUE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=9gN_Cmd9sXY:cPJqicbZHUE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/9gN_Cmd9sXY" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jhalife/2010/02/20/self-rebase-01/</feedburner:origLink></item>
	<item>
		<title>About SQL Server Users and Logins</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/xWC3hERr9nw/</link>
		<comments>http://blogs.southworks.net/nicopaez/2010/02/20/about-sql-server-users-and-login/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 15:08:00 +0000</pubDate>
		<dc:creator>nicopaez</dc:creator>
		
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/nicopaez/2010/02/20/about-sql-server-users-and-login/</guid>
		<description><![CDATA[I think that many developers that work SQL Server do not have a clear understanding of this topic (I used to be one of them) and because of that is that I am writing this post.
Logins vs. User accounts
To connect to a SQL Server instance you first need a login so the instance can authenticate [...]]]></description>

		<content:encoded><![CDATA[<p>I think that many developers that work SQL Server do not have a clear understanding of this topic (I used to be one of them) and because of that is that I am writing this post.</p>
<h2>Logins vs. User accounts</h2>
<p>To connect to a SQL Server instance you first need a login so the instance can authenticate you (know who you are). But to perform operations on a specific database you will need a user account in that database. The user account is used for database access and permission validation. So you could have a login, but if you don&#8217;t have a user account associated to that login, you  won&#8217;t be able to access that database.</p>
<h2>Logins</h2>
<p>To create a login you can use the following code snippet.</p>
<p>&#8211; To create a login that uses Windows Authentication:<br />
CREATE LOGIN &lt;name of Windows User&gt; FROM WINDOWS; GO</p>
<p>&#8211; To create a login that uses SQL Server Authentication:<br />
CREATE LOGIN &lt;login name&gt; WITH PASSWORD = &#8216;&lt;the password&gt;&#8217; ; GO</p>
<p>The actions you can perform with a SQL Server instance (like create, backup and restore databases) depend on the server roles associated with your login. Once the login is created you can assign it server roles by using the [<em>sp_addsrvrolemember</em>] stored procedure. Possible server roles are: dbcreator, sysadmin and serveradmin among others.</p>
<p><a href="http://blogs.southworks.net/nicopaez/files/2010/02/image.png"><img src="http://blogs.southworks.net/nicopaez/files/2010/02/image-thumb.png" border="0" alt="image" width="485" height="454" /></a></p>
<h2>User Accounts</h2>
<p>User accounts are defined at database instance level, and every user account must be associated to a login, so to create a user account you must provide login.</p>
<p>&#8211; To create a user for the myLogin login for the myDatabase database<br />
use myDatabase<br />
create user myUser for login mylogin with default_schema=dbo</p>
<p>As you can see, when creating a user you don&#8217;t need to provide a password, because there is already a password associated with the login.What a user can do with the  database is defined by the user&#8217;s permissions. Permissions are grouped into Roles and there are three different kind of roles:</p>
<ul>
<li>Database Fixed roles: are pre-defined roles by the system</li>
<li>User-defined roles: are roles created by the user</li>
<li>Application roles:  are created to support the security needs of an application. (often database applications<br />
enforce their own security based on the application logic)</li>
</ul>
<p>When a user is created it is automatically added to the <em>public</em> (fixed) role. To add a user to a role you can use the [<em>sp_addrolemember</em>] stored procedure.</p>
<p><a href="http://blogs.southworks.net/nicopaez/files/2010/02/image1.png"><img src="http://blogs.southworks.net/nicopaez/files/2010/02/image-thumb1.png" border="0" alt="image" width="436" height="488" /></a></p>
<p>Hope you find this useful.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=xWC3hERr9nw:yK1Onj_JVVA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=xWC3hERr9nw:yK1Onj_JVVA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=xWC3hERr9nw:yK1Onj_JVVA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/xWC3hERr9nw" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/nicopaez/2010/02/20/about-sql-server-users-and-login/</feedburner:origLink></item>
	<item>
		<title>Troubleshooting Windows Azure Deployment</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/nHr3nLzdTL4/</link>
		<comments>http://blogs.southworks.net/jcisneros/2010/02/19/troubleshooting-windows-azure-deployment/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 21:09:37 +0000</pubDate>
		<dc:creator>jcisneros</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jcisneros/2010/02/19/troubleshooting-windows-azure-deployment/</guid>
		<description><![CDATA[Usually, when Windows Azure fails to initialize the services, the portal shows the services cycling between the Initializing, Busy and Stopping states and it gets stuck in an infinite loop between these states. The following list are the most common causes for a deployment to Windows Azure may fail (even if it works locally) and [...]]]></description>

		<content:encoded><![CDATA[<p>Usually, when Windows Azure fails to initialize the services, the portal shows the services cycling between the Initializing, Busy and Stopping states and it gets stuck in an infinite loop between these states. The following list are the most common causes for a deployment to Windows Azure may fail (even if it works locally) and how to fix them:</p>
<ol>
<li><strong>Missing referenced assemblies</strong>: set <b>CopyLocal = True</b> for referenced assemblies not in .NET Framework 3.5 or <i>Microsoft.WindowsAzure.ServiceRuntime</i> (these assemblies are the only ones present in Windows Azure).       <br /><img style="float: none;margin-left: auto;margin-right: auto" border="0" alt="clip_image001" src="http://blogs.southworks.net/jcisneros/files/2010/02/clip-image001.png" width="385" height="656" /> </li>
<li><strong>Project built for 32bits only</strong>: Use <b>Platform target = Any CPU</b> (or x64). Windows Azure runs on 64 bits.&#160; <br /><img style="float: none;margin-left: auto;margin-right: auto" border="0" alt="image" src="http://blogs.southworks.net/jcisneros/files/2010/02/image.png" width="519" height="299" /> </li>
<li><strong>Path too long</strong>: Use project names with less than <b>28</b> characters. Sometimes no exception is shown, to know if this is the issue, exclude all the roles but one from the Cloud Service project and run once each time to be able to view the error details in the output window when running on the Development Fabric. You should see the following error message <em>â€œERR: Failed to complete setup of assembly (hr = 0&#215;8007006f)â€.</em> </li>
<li><strong>Missing files</strong>: Include all the used files in the project. Files that are not included are not published (for instance, images) </li>
</ol>
<p>If you will perform a service upgrade, first suspend it. If you do not suspend the service and you perform an upgrade, it will never end. Apparently, it tries to return to the previous version state as part of the upgrade process, if our new version has the same issue (fails to initialize by iterating between the stopping to initializing states), it will get stuck in the middle of the process and you wonâ€™t be able to perform any action from the Azure portal, you cannot even delete the service. If this happened to you, you can try using the <a href="http://code.msdn.microsoft.com/azurecmdlets">Azures Cmdlets</a> to set the deployment status.</p>
<p>If you continue having issues, the following blog post includes more possible causes and suggestions:</p>
<ul>
<li>
<h5><a href="http://blog.toddysm.com/2010/01/windows-azure-deployment-stuck-in-initializing-busy-stopping-why.html" target="_blank">Windows Azure Deployment Stuck in Initializing, Busy, Stopping â€“ Why?</a></h5>
</li>
</ul>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=nHr3nLzdTL4:cfWnEilcJlc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=nHr3nLzdTL4:cfWnEilcJlc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=nHr3nLzdTL4:cfWnEilcJlc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/nHr3nLzdTL4" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jcisneros/2010/02/19/troubleshooting-windows-azure-deployment/</feedburner:origLink></item>
	<item>
		<title>Progressive Enhancement</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/JIjq5_ExdXE/</link>
		<comments>http://blogs.southworks.net/jdominguez/2010/02/progressive-enhancement/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:10:03 +0000</pubDate>
		<dc:creator>jdominguez</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jdominguez/?p=82</guid>
		<description><![CDATA[Progressive Enhancement (PE) is an approach for building Web Applications that starts from the perspective that a user browser experience will support a minimum functionality, this is called base line, but has hooks to allow functional enhancements when a browser can support them. PE benefits users by supporting older browsers, but also supporting users with [...]]]></description>

		<content:encoded><![CDATA[<p>Progressive Enhancement (PE) is an approach for building Web Applications that starts from the perspective that a user browser experience will support a minimum functionality, this is called base line, but has hooks to allow functional enhancements when a browser can support them. PE benefits users by supporting older browsers, but also supporting users with modern browsers and technologies by providing them an improved experience.</p>
<p>The progressive enhancement and its counterpart, Graceful Degradation, are approaches that can help rich Web Applications support more browsers and have a wider reach.</p>
<blockquote><p><strong>Disclaimer</strong>: We are writing this documentation as part of the new <strong><a href="http://webclientguidance.codeplex.com/">Web Client Guidance</a></strong> that is being done in <a href="http://www.microsoft.com/practices">patterns &amp; practices</a>. We are close to finishing this project, so I would like to get more feedback or validation from everyone that gets the chance to read this before we release. Have in mind that the content of this topic can change both in content and in form (it can change because of YOUR feedback).</p></blockquote>
<h2>Progressive Enhancement vs. Graceful Degradation</h2>
<p><strong>Graceful degradation</strong> is the practice of building an application for modern browsers while ensuring it remains functional in older browsers and other user agents (for example, accessibility tooling and mobile devices).</p>
<p>Progressive enhancement is usually preferable to graceful degradation: it starts with the simple basics and improves usability and aesthetics on top of that. When developing using Progressive enhancement you should define a development base, for example when using MVC the base could be a user that does not have JavaScript enabled. Therefore, the expectation is that you should have the basic functionality available without JavaScript; but with JavaScript, the experience is richer, including functionality, such as client-side form validation, predictive fetching, and preview.</p>
<p>It is strongly recommended to use progressive enhancement, when designing something from scratch. Graceful degradation can be tedious, difficult and requires more work to implement.</p>
<p>However, if you are maintaining an existing site, the easiest choice is to provide graceful degradation, unless you want to rewrite the whole site.</p>
<p>It is also possible to combine both approaches in the application. Even some features may end up being the same, independent of the approach used.</p>
<p><strong>Note: </strong>For more information about both concepts, see <a href="http://www.sitepoint.com/blogs/2009/09/23/progressive-enhancement-graceful-degradation-choice">Progressive Enhancements and Graceful Degradation: Making a Choice</a>.</p>
<h2>Core Principles</h2>
<ul>
<li>Progressive Enhancement consists of the following core principles:</li>
<li>The basic content should be accessible to all browsers</li>
<li>The basic functionality should be accessible to all browsers</li>
<li>Semantic markup contains all content</li>
<li>Enhanced layout is provided by externally linked CSS</li>
<li>Enhanced behavior is provided by unobtrusive, externally linked JavaScript</li>
<li>End user browser preferences are respected</li>
</ul>
<p>There are several scenarios to consider for using these patterns:</p>
<ol>
<li>Browsers that have JavaScript turned off</li>
<li>Different browsers that:
<ol>
<li>implement JavaScript and DOM features differently</li>
<li>implement CSS differently</li>
</ol>
</li>
<li>The need for SEO (Search Engine Optimization)</li>
</ol>
<h4>Browsers that Have JavaScript Turned Off</h4>
<p>Browsers may have JavaScript disabled due to company policies, screen readers, or other accessibility issues. This is usually the biggest challenge of all, as it requires the most development effort. If it is not done correctly, it could prevent the user from interacting with the site at all.</p>
<p>To address this scenario, you should start developing the site using HTML for the basic content. You should use semantic markup and CSS to enhance the layout. Then you should start adding functionality for browsers that do support JavaScript and other client technologies.</p>
<p>The following are some advantages and disadvantages of creating applications without JavaScript.</p>
<p><strong>Advantages</strong>:</p>
<ul>
<li>Can support browsers without JavaScript</li>
<li>It is SEO friendly (as search engine spiders do not use JavaScript)</li>
<li>Easier to create an accessible site as a side effect without too much effort</li>
<li>Possibility to open links in new tabs and bookmark it (for example if you use the middle mouse, it will open the link in <strong>href</strong> instead of executing the JavaScript defined for the <strong>click</strong> event).</li>
</ul>
<p><strong>Disadvantages</strong>:</p>
<ul>
<li>There is usually a need to create a server-side version of a view, and a separate client version of the same view or portions of it.</li>
</ul>
<p>The developer has to be aware of the scripted and non-scripted features of the application, instead of just assuming that JavaScript will always be present.</p>
<h4>Different Browsers that Implement JavaScript and DOM Features Differently</h4>
<p>This challenge is typically known as cross-browser incompatibility. Compared to the previous scenario, when not implemented successfully, might prevent the user from interacting with the site in some cases, which causes frustration for the user, or even breaking JavaScript functionality completely, and cause a situation similar to the previous scenario.</p>
<p>This challenge has been a major pain point for web developers in past years, which led to using mostly server-side controls made by expert web developers that emit islands of JavaScript automatically, in order to prevent the application developer to have to learn all the browser differences, which in turn led to application developers from getting away from learning any JavaScript at all, even for simple tasks.</p>
<p>In recent years several JavaScript libraries have emerged that provide a cross browser experience for all of the most common tasks. By writing your code on top of these base libraries, in most cases you can avoid dealing with branching logic for the different browsers, which leads to a better appealing to the JavaScript language as a renewed development tool.</p>
<h4>Different Browsers that Implement CSS Differently</h4>
<p>CSS differences between browsers, though it is generally good to account for, it is usually not a big problem if bypassed. The reason is that having CSS that do not work in all browsers might cause some browsers to render the page with some inconsistencies in sizes, placement, overlapping of sections, but this will generally not prevent the user from interacting with the site entirely.</p>
<p>The following are some tips for dealing with these CSS inconsistencies:</p>
<ul>
<li>Use a CSS reset, which improve a lot of the cross-browser inconsistencies in size, placement, and overlapping issues.</li>
<li>Develop the site with standards in mind (consider targeting XHTML 1.0 Transitional here), which almost always works in IE8, Firefox, Safari, Chrome, and usually Opera.</li>
<li>If the standards targeted HTML/CSS has IE6/7 issues, fix those issues by including CSS â€œhacksâ€ in separate stylesheets referenced through <a href="http://www.quirksmode.org/css/condcom.html">conditional comments</a>.</li>
</ul>
<p>It is up to the business to decide the ROI for creating a site that looks identical across all the browsers. Because not supporting all versions of CSS implementations will not prevent users from interacting with your site, you could typically decide to support the CSS features in the browsers with the largest market shares, while ignoring older browsers.</p>
<h3>How to Achieve Progressive Enhancement</h3>
<p>To implement PE you should begin with the basic version, and then add enhancements for those browsers that can handle them.</p>
<p>First, you should start developing your application in plain HTML. Plain HTML is understood by all browsers. Furthermore, search spiders will be able to access and index your site content.</p>
<p>This also means that all anchors and forms must have a working target URL for navigating or posting data without the need for JavaScript.</p>
<p>Then, add styles using CSS in an external file to improve the look and feel of the site. Almost all browsers support CSS, and those which do not support it, will simply ignore the styling.</p>
<p>Finally, add JavaScript support, using unobtrusive JavaScript. Unobtrusive scripts are silently ignored by browsers that do not support JavaScript, but it is applied by those that do it.</p>
<p>Unobtrusive JavaScript separates content from behavior. This means you should avoid having inline JavaScript as in the following example.</p>
<blockquote><p><strong>HTML<br />
</strong><span style="font-family: Courier New">&lt;form id=&#8221;profile&#8221; action=&#8221;http://mySite.com/SaveProfile&#8221;&gt;<br />
  &lt;input type=&#8221;text&#8221; name=&#8221;age&#8221; /&gt;<br />
  &lt;input type=&#8221;submit&#8221; value=&#8221;Save&#8221; <strong>onclick=&#8221;SaveProfileWithAjax();&#8221;</strong> /&gt;<br />
&lt;/form&gt;</span></p></blockquote>
<p>This is because the purpose of markup is to describe a document&#8217;s structure, not its programmatic behavior.</p>
<p>The unobtrusive solution is to register the necessary event handlers programmatically, rather than inline. This is commonly achieved by assigning a particular CSS selector to all elements which are affected by the script, to reduce the amount of script code. The JavaScript code should reside in a separate file. In the following code the id attribute is used for identifying a form:</p>
<blockquote><p><strong>HTML</strong><br />
&lt;form id=&#8221;profile&#8221; action=&#8221;http://mySite.com/SaveProfile&#8221;&gt;<br />
  &lt;input type=&#8221;text&#8221; name=&#8221;age&#8221; /&gt;<br />
  &lt;input type=&#8221;submit&#8221; value=&#8221;Save&#8221; /&gt;<br />
&lt;/form&gt;</p></blockquote>
<p>It is recommended that you use libraries that provide an abstraction of the DOM. The jQuery and ASP.NET Ajax libraries do a good job at this.</p>
<p>The following jQuery script binds the submit event of the form with id=&#8221;profile&#8221;, to the SaveProfileWithAjax function:</p>
<p><strong>Note: </strong>jQuery simplifies this, by providing a CSS-like selector, instead of just getting the elements by ID.</p>
<blockquote><p><strong>JavaScript using jQuery</strong><br />
<span style="font-family: Courier New">$(document).ready(function(){ //Wait for the page to load.<br />
    $(&#8217;form#profile&#8217;).bind(&#8217;submit&#8217;, SaveProfileWithAjax);<br />
});</span></p>
<p><span style="font-family: Courier New">function SaveProfileWithAjax(event){<br />
<strong>    event.preventDefault();</strong> // this will prevent the browser for submitting the form in the default way, as we will handle the post programmatically using AJAX<br />
    // Post the data using an AJAX call<br />
}</span></p></blockquote>
<p><strong>Note:</strong> The <strong>event.preventDefault</strong> JavaScript method cancels the event if it is cancelable, meaning any default action normally taken by the implementation as a result of the event will not occur.</p>
<p>The following code shows the implementation in ASP.NET Ajax Library.</p>
<blockquote><p><strong>JavaScript using ASP.NET Ajax Library</strong><br />
<span style="font-family: Courier New">Sys.Application.add_init(function() {<br />
    $addHandler($get(&#8217;#profile&#8217;), &#8217;submit&#8217;, SaveProfileWithAjax);<br />
});</span></p>
<p><span style="font-family: Courier New">function SaveProfileWithAjax(event){<br />
    event.preventDefault();<br />
    // Post the data using an AJAX call<br />
}</span></p></blockquote>
<p><strong>Note: </strong>To attach events, modern browsers use the <strong>addEventListener</strong> function specified in the DOM Level 2 (Events) specification, while Internet Explorer will use its proprietary <strong>attachEvent</strong> function.<strong> </strong>For this reason,<strong> </strong>if you want to achieve cross-browser compatibility in a simple manner, you<strong> </strong>should always attach events using a library like <strong>jQuery</strong> or <strong>ASP.NET Ajax Library</strong>, which automatically deals with these compatibility issues.<strong></strong></p>
<h3>Tips for Achieving Progressive Enhancement in ASP.NET MVC</h3>
<p>Consider the following tips when implementing the progressive enhancement pattern in ASP.NET MVC.</p>
<p>First, build an HTML feature that works without JavaScript. For example, the song rating functionally of the Reference Implementation, which was created using radio buttons.</p>
<p>The following rules are applied to every web application (not just ASP.NET MVC ones) to achieve PE.</p>
<ol>
<li>Use semantic markup to render the basic content.</li>
<li>Use CSS to enhance the layout.</li>
<li>Anchors should always have the href attribute set to return a working view from a controller.</li>
<li>Forms should always have the action attribute set to post the data to a working action in a controller, based on the input elements in the form. Consider rendering hidden inputs for preset values that the users donâ€™t need to update or see.</li>
</ol>
<p>Once the basic functionality works without JavaScript, consider the following:</p>
<ol>
<li>Enhance the experience using <a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">Unobtrusive JavaScript</a>. This typically includes:
<ul>
<li>Adding client-side validation to acquire immediate feedback without requiring a full post.</li>
<li>Converting full page POST/GET requests into AJAX calls that update portions of the page.</li>
<li>Adding animations / eye candy features.</li>
</ul>
</li>
<li>When converting a full page request into an AJAX call, hijack and prevent the default action of the anchor link or form submit, and replace it with the AJAX call. You typically do this by calling the <strong>preventDefault</strong> method of the arguments object received when handling the click/submit event using JavaScript.</li>
<li>Avoid having different URLs for accomplishing the same business result for these cases. You can add branching code in your controller that checks the Requestâ€™s headers to see if it is an AJAX call as opposed to a typical GET or POST call, and return a different result in this case.
<ul>
<li>Typical approaches include returning partial HTML markup to be inserted without processing into the DOM, or data represented in JSON that requires some processing in the browser to display it.</li>
<li>ASP.NET MVC provides a standard way of checking if the request was initiated using XmlHttpRequest by calling the Request.IsAjaxRequest() extension method<br />
<strong>Note:</strong> If you use ASP.NET WebForms instead of ASP.NET MVC, you might need to create different endpoints, such as Web Services, ASP.NET Page Methods, or even expose MVC controllers for these actions, as there is no easy way of reusing the same endpoint, because a URL maps to a physical ASPX file.</li>
</ul>
</li>
<li>In the cases where you return JSON, you might need to use JavaScript to directly manipulate the DOM, or when possible, have a template view that renders data that was retrieved in JSON format. Having templates can help you better separate UI logic from the model in the JavaScript code. The ASP.NET Ajax Library has a very good templating engine that allows you to bind to a ViewModel in a somewhat similar way as WPF &amp; Silverlight. For more information, see Isolating the Domain Model from the Presentation Layer (this is in the Web Client Guidance documentation).</li>
<li>In some cases, you may have DOM elements that only make sense in a non-JavaScript version of the page. This is common, and you might want to remove these elements by using JavaScript if it is available in the browser.<br />
For example, you may have a link that redirects to a different page, but when you enhance it with JavaScript, you might hide those links entirely, and replace it with a much richer experience that does not require a redirect for example.<br />
<strong>Note: </strong>You can also use the <strong>noscript</strong> HTML element to render content when JavaScript is not enabled or not supported by your browser.</li>
<li>Cascading drop-downs is another canonical example: If you have a State drop down, that once selected will set available cities in another drop-down, the non-JavaScript version will have a visible submit button, and so after setting the State, the user can POST back to the server and get the same page with the available cities already populated. When JavaScript is enabled, after the page is loaded, you might want to hide this button, and on selection change of the State dropdown, request the available cities with an AJAX call that returns JSON, and update the dependant Cities dropdown. There is no need for the user to explicitly click the button to get the cities.</li>
</ol>
<p>Finally, move on to the next feature. Remember, to always build a non-JavaScript version of a feature, and enhance it afterwards. There might be secondary features in the application where you can decide to implement in browsers that only have JavaScript enabled, but you should make this decision consciously, identifying the risks for not supporting that scenario.</p>
<h3>Sources</h3>
<ul>
<li><a href="http://www.sitepoint.com/blogs/2009/09/23/progressive-enhancement-graceful-degradation-choice/comment-page-1/">Progressive Enhancement and Graceful Degradation: Making a Choice</a></li>
<li><a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Progressive enhancement</a></li>
<li><a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">Unobtrusive JavaScript</a></li>
</ul>
<h2>More Web Client Guidance</h2>
<p>You can find this and many other topics and key decisions for creating web client applications (both in ASP.NET Web Forms and ASP.NET MVC) in our latest <a href="http://webclientguidance.codeplex.com/releases/">Web Client Guidance drops</a>. We are close to finishing this guidance, so your prompt feedback is invaluable to us. Make sure you check it out and comment in this topic or in the <a href="http://webclientguidance.codeplex.com/Thread/List.aspx?TagName=Web%20Guidance%20v-Next%20%28not%20WCSF%29">codeplex forums</a> (there is a special tag to mark conversations for this new guidance)</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fjdominguez%2f2010%2f02%2fprogressive-enhancement%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fjdominguez%2f2010%2f02%2fprogressive-enhancement%2f" border="0" alt="kick it on DotNetKicks.com" /></a> <a rev="vote-for" href="http://dotnetshoutout.com/Progressive-Enhancement"><img style="border:0px" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fjdominguez%2F2010%2F02%2Fprogressive-enhancement%2F" alt="Shout it" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=JIjq5_ExdXE:l7rDTXadGCM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=JIjq5_ExdXE:l7rDTXadGCM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=JIjq5_ExdXE:l7rDTXadGCM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/JIjq5_ExdXE" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jdominguez/2010/02/progressive-enhancement/</feedburner:origLink></item>
	<item>
		<title>The Single Page Interface Pattern</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/NYoWnl__klM/</link>
		<comments>http://blogs.southworks.net/jdominguez/2010/02/the-single-page-interface-pattern/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 22:05:24 +0000</pubDate>
		<dc:creator>jdominguez</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jdominguez/?p=81</guid>
		<description><![CDATA[Problem
Typically, the user interface in Web Applications is composed of multiple pages. Now with the increasing popularity of AJAX, it is common that people want to develop Web applications that are similar and provide the same user experience as desktop applications. One common problem in Web applications is the constant page reloads and flickering when [...]]]></description>

		<content:encoded><![CDATA[<h2>Problem</h2>
<p>Typically, the user interface in Web Applications is composed of multiple pages. Now with the increasing popularity of AJAX, it is common that people want to develop Web applications that are similar and provide the same user experience as desktop applications. One common problem in Web applications is the constant page reloads and flickering when navigating the application.</p>
<blockquote><p><strong>Disclaimer</strong>: We are writing this documentation as part of the new <strong><a href="http://webclientguidance.codeplex.com/">Web Client Guidance</a></strong> that is being done in <a href="http://www.microsoft.com/practices">patterns &amp; practices</a>. We are close to finishing this project, so I would like to get more feedback or validation from everyone that gets the chance to read this before we release. Have in mind that the content of this topic can change both in content and in form (it can change because of YOUR feedback).</p></blockquote>
<h2>Forces</h2>
<p>Any of the following conditions suggest using the solution described in this pattern:</p>
<ul>
<li>You want to minimize the page reloads and flickering when navigating through the application.</li>
<li>You want to change only the content of the page and maintain the general layout; that is the header, footer, and menus, when updating the page.</li>
<li>You want the user to keep the context of most of the page, while only manipulating the data on part of the page.</li>
<li>You want to have long running processes and/or avoid losing/refreshing dynamic content state while navigating (for example, uploading files or a chat window).</li>
<li>You want to improve the user experience of Web applications, by simulating the look and feel, and usability of desktop applications.</li>
</ul>
<h2>Solution</h2>
<p>Have all of your page features, or at least most of them, in a single page. This is known as the Single-Page Interface (SPI) model. In the SPI model, all browser interactions with a Web application occur inside the boundaries of one page.</p>
<p>The SPI pattern improves the UI navigability of Web applications because it decreases the number of page reloads and eliminates flickering.</p>
<p>The SPI model requires a number of highly interactive features, which include in-place editing, context-sensitive user interface, immediate user feedback prompts, and asynchronous operations.</p>
<blockquote><p><em>The Single-page Interface pattern elements</em></p>
<p><a href="http://blogs.southworks.net/jdominguez/files/2010/02/image1.png"><img src="http://blogs.southworks.net/jdominguez/files/2010/02/image-thumb1.png" border="0" alt="image" width="459" height="144" /></a></p></blockquote>
<p> </p>
<p>SPI is an AJAX pattern that suggests you have only a main page in your Web Application. This page interface is rearranged as a result of user interaction with the application.</p>
<p>Having a single-page interface, may result in your application using less-distinct URLs. Therefore, this pattern may not provide good support for search engines, unless explicit mechanisms for also allowing the navigation of the site by using full redirects are implemented.</p>
<h2>Liabilities</h2>
<p>The Single-page Interface pattern has the following liabilities:</p>
<ul>
<li>As all interactions occur within a page, there are less distinct URLs. Therefore, this pattern does not inherently provide good support for search engines</li>
<li>You need to implement a mechanism to identify the different states of the application; this is for providing history browsing support and bookmarking. It might be used also for supporting <strong>permanent link</strong>. Unique URLs and deep linking can be supported in an SPI app but with additional development cost. Web applications built using more traditional full page refreshes support unique URLs and deep linking more easily.</li>
<li>You have to be careful with memory leaks, because as the page is not refreshed as often, the memory is not cleaned automatically by the browser. Therefore you have to manually dispose objects, handlers, and so on, when navigating through the page.</li>
<li>The SPI pattern requires a lot of JavaScript. If JavaScript is turned off, the user will not be able to use the application. This then requires down-level support in addition to the SPI pattern. It makes more sense to implement the SPI pattern if you have more control of your browsers, for example, if you have an intranet application and you know the corporate image does not restrict JavaScript, then SPI might work here. For the Internet case, it is more mixed because some users will enable JavaScript and some will not.</li>
<li>Consider using the Progressive Enhancement or Graceful Degradation pattern, for addressing accessibility, browsers where JavaScript is disabled, and search engine optimization. Otherwise older browsers or readers will not be able to use your application. If you choose to support accessing the website without the use of JavaScript, the complexity of the application increases exponentially, as you would typically need to create server and client side version of most of the views. This approach can also help to add better support for search engines.</li>
</ul>
<h3>Identifying the State of an Application with Distinct URLs</h3>
<p>When using AJAX and the SPI pattern, an application may perform different operations, and therefore pass through different states while the URL in the browser stays constant. This creates the need of a mechanism to identify different states of the application, for example, for moving back to a previous state.</p>
<p>Browsers implement the Back and Forward buttons functionality by caching the list of visited URLs.</p>
<p>In AJAX, the server communication is done through XMLHttpRequests, and these requests do not change the page URL. Therefore, the list of visited URLs is not modified.</p>
<p>The Unique URLs pattern helps addressing this problem, by assigning a unique and expressive URL to each significant application state.</p>
<p>Scripting does not provide a mechanism to modify the list of visited URLs, but it provides mechanisms to modify the URLs.</p>
<p>You can manipulate the URL with JavaScript using the <strong>window.location.href</strong> property, but this will trigger a page reload; fortunately you can use the <strong>window.location.hash</strong> property. The hash property is used for fragment identifiers, which are optional components of URLs that came after the hash character (#). The string that comes after the hash character is not sent to the server; therefore, the browser is responsible for restoring the state through client scripts, and retrieving the appropriate views. Because they are like normal links, but within a single page, no page reload occurs, and the browser behaves as if you have clicked a standard link, adding the URLs to the list of visited URLs. This also enables history navigation, bookmarking and sharing URLs with other people.</p>
<blockquote><p><strong>Note: </strong>Setting the hash property does not work reliably on all browsers, and you do not get change notifications on all browsers either. For this reason, it is recommended using some library that handles these differences in a cross-browser way, such as the Microsoft Ajax Library History control.<strong></strong></p></blockquote>
<p>Therefore, when there is an important state change in your application, modify the URL hash property. In this way the changes will be tracked by the browser.</p>
<blockquote><p><strong>JavaScript<br />
</strong><span style="font-family: Courier New">window.location.hash = stateData;</span></p></blockquote>
<p>The resulting URL will look like the following.</p>
<blockquote><p><strong>URL<br />
</strong><span style="font-family: Courier New">http://www.mycompany.com/mypage.aspx#someState</span></p></blockquote>
<p>Once you have identified each relevant state of the application, you need to implement code to parse the URL. You can choose the format based on your specific needs to represent a state, you can even add parameters in the URL, as seen in the following example.</p>
<blockquote><p><strong>URL</strong><br />
<span style="font-family: Courier New">http://www.mycompany.com/mypage.aspx#viewProduct=5529</span></p></blockquote>
<p>Finally, after parsing the URL, you should restore the application to the corresponding state based on the hash data, keep in mind that the hash data is not sent to the server as part of the URL. In the previous example, when loading that URL, the application should go to the product details form, showing the details of the product with ID 5529.</p>
<h2>More Information</h2>
<p>For more information about the Single-Page Interface pattern, see the following:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/magazine/cc507641.aspx">Single-Page Interface and AJAX patterns</a> on MSDN Magazine</li>
</ul>
<p>For more information about software design patterns applied in the Web Client Guidance, see Patterns in the Web Client Guidance.</p>
<p>You can find this and many other topics and key decisions for creating web client applications (both in ASP.NET Web Forms and ASP.NET MVC) in our latest <a href="http://webclientguidance.codeplex.com/releases/">Web Client Guidance drops</a>. We are close to finishing this guidance, so your prompt feedback is invaluable to us. Make sure you check it out and comment in this topic or in the <a href="http://webclientguidance.codeplex.com/Thread/List.aspx?TagName=Web%20Guidance%20v-Next%20%28not%20WCSF%29">codeplex forums</a> (there is a special tag to mark conversations for this new guidance).</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fjdominguez%2f2010%2f02%2fthe-single-page-interface-pattern%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fjdominguez%2f2010%2f02%2fthe-single-page-interface-pattern%2f" border="0" alt="kick it on DotNetKicks.com" /></a> <a rev="vote-for" href="http://dotnetshoutout.com/Julian-Dominguezs-Blog-%C3%82-Blog-Archive-The-Single-Page-Interface-Pattern"><img style="border:0px" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fjdominguez%2F2010%2F02%2Fthe-single-page-interface-pattern%2F" alt="Shout it" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=NYoWnl__klM:6pw5X5RhzOI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=NYoWnl__klM:6pw5X5RhzOI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NYoWnl__klM:6pw5X5RhzOI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/NYoWnl__klM" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jdominguez/2010/02/the-single-page-interface-pattern/</feedburner:origLink></item>
	<item>
		<title>Enabling Water Cooler Moments</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/NBO4BlwttZs/</link>
		<comments>http://blogs.southworks.net/tosborn/2010/02/09/enabling-water-cooler-moments/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 05:51:26 +0000</pubDate>
		<dc:creator>Tim Osborn</dc:creator>
		
		<category><![CDATA[Smooth Streaming]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/tosborn/?p=72</guid>
		<description><![CDATA[ In just a few days the world will turn its attention to the Winter Olympic Games hosted by Vancouver, Canada. Thanks to the great smooth streaming technology available in IIS Media Services, sports fans around the globe will be able to view their favorite events online, in HD.&#160; Yesterday&#8217;s CNET article, Microsoft aims for [...]]]></description>

		<content:encoded><![CDATA[<p><a href="http://www.nbcolympics.com/index.html"><img style="margin: 0px 10px 0px 0px" border="0" alt="image" align="left" src="http://blogs.southworks.net/tosborn/files/2010/02/image.png" width="218" height="153" /></a> In just a few days the world will turn its attention to the Winter Olympic Games hosted by Vancouver, Canada. Thanks to the great <a href="http://www.iis.net/expand/smoothstreaming">smooth streaming technology</a> available in IIS Media Services, sports fans around the globe will be able to view their favorite events online, in HD.&#160; Yesterday&#8217;s CNET article, <a href="http://news.cnet.com/8301-13860_3-10448352-56.html?tag=newsLeadStoriesArea.1" target="_blank">Microsoft aims for smooth streaming in Vancouver</a>,&#160; describes another feature we are particularly excited about, the ability for fans to view highlights of an event online, even before the event has concluded. </p>
<blockquote><p>NBC is also tapping the capabilities of Silverlight to allow for the creation of more highlights packages more quickly. Whereas traditional highlights require an editor to cut the video clip, Silverlight allows for highlights to be created just by creating an XML file of the various time that one wants to start and stop. </p>
<p>That&#8217;s important, because the demand for highlights is actually higher than for full streams of events, said Perkins Miller, Senior Vice President of Digital Media for NBC Universal. </p>
<p>&quot;It&#8217;s about that water cooler moment,&quot; Miller said in a telephone interview.</p>
</blockquote>
<p>To generate the highlights, editors at NBC and CTV will be using a Silverlight application, the Rough Cut Editor, to consume smooth streamed content, assemble clips, insert ads, and publish highlights for immediate viewing online. Southworks developed the Rough Cut Editor (previously used for creating highlights of Sunday Night Football) and has been working closely with Microsoft, DeltaTre, NBC, CTV and other partners over the last several months to prepare the application for the Olympics. When the opening flame has been lit and the games have begun, be sure to visit the <a href="http://www.nbcolympics.com/video/index.html">NBC Olympics</a> and <a href="http://www.universalsports.com/olympics/index.html">Universal Sports</a> sites to enjoy the live events and some amazing highlights.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=NBO4BlwttZs:WrxXFUqHIY0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=NBO4BlwttZs:WrxXFUqHIY0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=NBO4BlwttZs:WrxXFUqHIY0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/NBO4BlwttZs" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/tosborn/2010/02/09/enabling-water-cooler-moments/</feedburner:origLink></item>
	<item>
		<title>ASP.NET Ajax Library or jQuery?</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/x2OO7r3mHpk/</link>
		<comments>http://blogs.southworks.net/jdominguez/2010/02/aspnet-ajax-library-or-jquery/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:03:29 +0000</pubDate>
		<dc:creator>jdominguez</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Patterns &amp; Practices]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jdominguez/?p=78</guid>
		<description><![CDATA[I get this question very often. Should I you the one or the other?
Well, my short answer in most circumstances is &#8220;you should use both&#8220;.
My long answer is &#8220;it depends on what you are trying to achieve&#8221;, and this blog post will try to cover what are the strengths of each of the libraries, and [...]]]></description>

		<content:encoded><![CDATA[<p>I get this question very often. Should I you the one or the other?<br />
Well, my short answer in most circumstances is &#8220;<strong>you should use both</strong>&#8220;.<br />
My long answer is &#8220;it depends on what you are trying to achieve&#8221;, and this blog post will try to cover what are the strengths of each of the libraries, and also why it&#8217;s OK to use both with the overhead this &#8220;might&#8221; have.</p>
<p><a href="http://blogs.southworks.net/jdominguez/files/2010/02/image.png"><img src="http://blogs.southworks.net/jdominguez/files/2010/02/image-thumb.png" border="0" alt="ASP.NET Ajax Library vs jQuery functionality overlap" width="553" height="287" /></a></p>
<blockquote><p><strong>Disclaimer</strong>: We are writing this documentation as part of the new <strong><a href="http://webclientguidance.codeplex.com/" target="_blank">Web Client Guidance</a></strong> that is being done in <a href="http://www.microsoft.com/practices" target="_blank">patterns &amp; practices</a>. We are close to finishing this project, so I would like to get more feedback or validation from everyone that gets the chance to read this before we release. Have in mind that the content of this topic can change both in content and in form (it can change because of YOUR feedback).<br />
Also, this topic was created using <strong>ASP.NET Ajax Library 0911 beta</strong> and <strong>jQuery 1.3.2</strong>.</p></blockquote>
<h1>Guidelines for using ASP.NET Ajax Library and jQuery</h1>
<p>There are different JavaScript libraries that can assist you in authoring JavaScript code that runs on the browser, and using at least one of them is an absolute must in today&#8217;s environment. Though ASP.NET WebForms is better suited -but not limited to- for using the ASP.NET Ajax Library, ASP.NET MVC has no preference over either ASP.NET Ajax Library, jQuery or other 3rd party libraries. Furthermore, ASP.NET Ajax Library and jQuery can work especially well together and complement each other, whether you render markup using WebForms or MVC.</p>
<p>ASP.NET Ajax Library and jQuery can be used together in the same Web application, and they both have support from Microsoft. These libraries do not conflict with each other, but they complement each other greatly. The overlap between functionality is not big, and since jQuery&#8217;s official support by Microsoft, this overlap is getting reduced in every release.</p>
<p>ASP.NET Ajax Library has made important changes to its core to leverage jQuery functionality when it detects that jQuery is also loaded. For example, ASP.NET Ajax Library provides some basic jQuery-like selector support for selecting DOM elements for its <strong>Sys.get(selector)</strong> method, which is used internally by many other components. Nevertheless, when jQuery is available, the selector passed into this method can be very complex, because it will delegate the DOM selection to jQuery under the hoods.  Furthermore, all ASP.NET Ajax Library controls and plugins, are also exposed automatically as jQuery plugins.</p>
<p>We found that in most cases, although there is an additional cost for downloading the 2 libraries instead of just one, the productivity and features covered by both libraries working together far outweighs that cost. Also, keep in mind, that if your application is hosted in the internet, as opposed to an Intranet, it is strongly recommended that you use the Microsoft CDN, so the download time gets reduced, and sometimes skipped, as the files may be cached by the browser.</p>
<p>The following sections define some pros that we found when using a particular library over the other. This list should not be taken as completely objective or closed, as depending on what plugins you decide to use, there might be advantages or disadvantages for each. These guidelines are based on the experience developed by using both ASP.NET Ajax Library and jQuery when building web applications in the last few months, as Microsoft has recently added support for jQuery from within Visual Studio, and the ASP.NET Ajax Library has taken huge steps towards supporting both libraries side by side.</p>
<h2>Why should you use jQuery</h2>
<p>One of the more important reasons for using jQuery is for DOM (Document Object Model) manipulation.</p>
<ul>
<li>The jQuery library is extremely easy to use for finding elements using selectors, for moving elements to different locations inside the DOM, changing element classes, basic animations, and so on.</li>
<li>jQuery has a simple API for handling DOM events. However, this functionality is comparable to what can be accomplished with ASP.NET Ajax Library. Due to this, in the Reference Implementations both approaches are used interchangeably; depending on what was the handling logic being used for (that is, DOM manipulation, controlling logic, and so on).</li>
</ul>
<p>Another strong point of jQuery is the Developer community behind it.</p>
<ul>
<li>Because jQuery supports only client-side functionality, it is server-side technology agnostic, and has a powerful extension mechanism.</li>
<li>For the previous reasons, it has been more widely used to develop plugins for a lot of different situations. These plugins are available through the official jQuery site, although each of them has its own license. Nevertheless, a big percentage of these plugins use very permissive open source licenses, an most of them use the same license as the jQuery core, to ease adoption for users who are already using jQuery.</li>
</ul>
<h2>Why should you use the ASP.NET Ajax Library</h2>
<p>We found the ASP.NET Ajax Library to be especially useful for writing JavaScript logic whose objective was not just manipulating or animating the DOM. Also, the script loading capabilities was of great help in both the perceived performance of the application and in the development and organization of the JavaScript code.</p>
<p>Some other strong points of the ASP.NET Ajax Library are the following:</p>
<ul>
<li>API and syntax similar to the .NET framework. The library imitates the .NET framework API, type system and namespaces hierarchies, therefore the developers familiar with the .NET framework can learn this framework with ease.</li>
<li>The Ajax Script Loader that comes with the library is useful for loading scripts in parallel and for managing dependencies. Using the Script Loader gives you the following advantages.
<ul>
<li>Minimize an Ajax application&#8217;s render time</li>
<li>Handle loading script dependencies</li>
<li>Leverage script combining techniques</li>
<li>Perform lazy loading of scripts behind the scene</li>
</ul>
</li>
</ul>
<blockquote><p><em>Note: For more information about the ASP.NET Ajax Library Script Loader, there is a specialized Script Loading document in the Web Client Guidance, make sure to check it out.</em></p></blockquote>
<ul>
<li>It is especially useful for writing logic that does not only manipulate the DOM. It provides infrastructure for creating JavaScript controls and behaviors (extending the Sys.Component type), and also provides memory management, easy control creation/instantiation.</li>
<li>You can use Client Templates to bind the UI to an observable view model. This allows separating the concerns of UI specific code (or DOM manipulation) from the presentation logic. This also simplifies unit testing the JavaScript code by avoiding the need to test the DOM state and user interaction directly.</li>
<li>Browser history:  When the state of a web page changes by using Ajax calls to the server, the URL in the browser does not change automatically. The ASP.NET Ajax Library simplifies working with the browser history, with a cross-browser approach.</li>
<li>The Ajax Control Toolkit is a set of reusable controls that can be used from both ASP.NET Ajax Library and jQuery using JavaScript code, and is also very friendly for using it from server-side generated JavaScript, especially when using ASP.NET WebForms server controls.</li>
<li>It provides auto-generated proxy classes that simplify calling Web service methods from client scripts.</li>
<li>When using ASP.NET WebForms, the ASP.NET Ajax Library is the easiest to use in several scenarios, as many of the controls and functionality can be used from their server-side controls counterparts.</li>
<li>Working with ADO.NET Data Services is very easy with the ASP.NET Ajax Library. This, in combination with Client Templates can help creating client side views that consume data from the server very easy.</li>
</ul>
<p> </p>
<h1>More Web Client Guidance</h1>
<p>You can find this and many other topics and key decisions for creating web client applications (both in ASP.NET WebForms and ASP.NET MVC) in our latest <a href="http://webclientguidance.codeplex.com/Release/ProjectReleases.aspx" target="_blank">Web Client Guidance drops</a>. We are close to finishing this guidance, so your prompt feedback is invaluable to us. Make sure you check it out and comment in this topic or in the <a href="http://webclientguidance.codeplex.com/Thread/List.aspx?TagName=Web%20Guidance%20v-Next%20%28not%20WCSF%29" target="_blank">codeplex forums</a> (there is a special tag to mark conversations for this new guidance)</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=x2OO7r3mHpk:hGmT2_SF0HQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=x2OO7r3mHpk:hGmT2_SF0HQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=x2OO7r3mHpk:hGmT2_SF0HQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/x2OO7r3mHpk" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jdominguez/2010/02/aspnet-ajax-library-or-jquery/</feedburner:origLink></item>
	<item>
		<title>Windows Azure Tables adapter for DataMapper</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/HllOoGlTwOU/</link>
		<comments>http://blogs.southworks.net/jpgarcia/2010/02/08/windows-azure-tables-adapter-for-datamapper/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 12:17:27 +0000</pubDate>
		<dc:creator>jpgarcia</dc:creator>
		
		<category><![CDATA[DataMapper]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Windows Azure]]></category>

		<category><![CDATA[azure]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/jpgarcia/?p=73</guid>
		<description><![CDATA[The Past
Last Friday, we shipped the first Major version (v1.0.0) of the Windows Azure Storage API gem for ruby, started a few months ago by my friend Johnny Halife. As it is an open-source project, I had the opportunity to contribute with:

Support for table service to query, get_one, insert, update, merge and delete entities.
Support for running against [...]]]></description>

		<content:encoded><![CDATA[<h1>The Past</h1>
<p>Last Friday, we shipped the first Major version (v1.0.0) of the Windows Azure Storage API gem for ruby, started a few months ago by my friend <a href="http://blogs.southworks.net/jhalife/">Johnny Halife</a>. As it is an open-source project, I had the opportunity to contribute with:</p>
<ul>
<li>Support for table service to query, get_one, insert, update, merge and delete entities.</li>
<li>Support for running against the Storage Developement Fabriq shipped with Microsoft SDK.</li>
<li>Signature support for Tables service according to <a href="http://msdn.microsoft.com/en-us/library/dd179428.aspx">msdn.microsoft.com/en-us/library/dd179428.aspx</a></li>
<li>Support to enumerate, create, and delete tables on give storage account.</li>
<li>Give feedback to Improve the support for stacked connection management.</li>
</ul>
<p>This release of waz-storage for ruby includes numerous features collected thru 0.5.6 to 1.0.0, for more information you can visit the <a href="http://waz-storage.heroku.com/">http://waz-storage.heroku.com/</a> where you will find all the gem documentation, or if you like to read the source code, contribute or giving us feedback you can get it from on <a href="http://github.com/johnnyhalife/waz-storage/">http://github.com/johnnyhalife/waz-storage</a>.</p>
<h2>The Present</h2>
<p>One of the objectives of having Tables support on the gem was to have an interface to interact with Tables and Entities that we can consume from an adapter as we usually do with our favorite ORM written in ruby which is DataMapper.</p>
<p>This is why this weekend was pretty much to make the dream come true, creating a new project on github called <strong>dm-waztables-adapter</strong> (<a href="http://github.com/jpgarcia/dm-waztables-adapter">http://github.com/jpgarcia/dm-waztables-adapter</a>) and spitting some lines of code.</p>
<h3>Writing the adapter</h3>
<p>As everything in Ruby wonderful world, it was really easy to have a first version running with the features provided by Datamapper.</p>
<p>It took me a few hours to write down <strong>85 lines of code </strong>to cover the whole adapter (Create, Read, Update and Delete methods)</p>
<p>Sorry, I&#8217;m forgetting the aditional 30 minutes I spent on writing <strong>32 more lines</strong> to cover the Migrations stuff. So you won&#8217;t worry about creating the tables when you design your models (As Windows Azure doesn&#8217;t have support for schemas inside tables, migrations exists just to make sure that you have the tables. It won&#8217;t modify attributes of existing data).</p>
<p>Below you will find some code samples. I hope you like it.</p>
<h3>Getting started</h3>
<pre>sudo gem install dm-waztables-adapter --source http://gemcutter.org</pre>
<h3>Usage</h3>
<pre>require 'dm-waztables-adapter'

# set up a DataMapper with your Windwows Azure account
DataMapper.setup(:default, { :adapter =&gt; 'WAZTables',
                                         :account_name =&gt; 'name',
                                         :access_key =&gt; 'your_access_key' })

# define a new model
class Guitarist
    include DataMapper::Resource

    property :id, String, :key =&gt; true
    property :name, String
    property :age, Integer
end

# set up database table on Windows Azure for a specific model
Guitarist.auto_migrate! # (destructive)
Guitarist.auto_upgrade! # (safe)

# set up database table on Windows Azure for all defined models
Datamapper.auto_migrate! # (destructive)
Datamapper.auto_upgrade! # (safe)

# play with DataMapper as usual
Guitarist.create(:id =&gt; '1', :name =&gt; 'Ritchie Blackmore', :age =&gt; 65)

yngwie = Guitarist.new(:id =&gt; '2', :name =&gt; 'Yngwio Malmsteen', :age =&gt; 46)
yngwie.name = "Yngwie Malmsteen"
yngwie.save

# retrieving a unique record by its id
ritchie = Guitarist.get('1')
ritchie.age # =&gt; 65

# updating records
ritchie.age = 66
ritchie.save

# retrieving all guitarists
    Guitarist.all.length # =&gt; 2

# performing queries
    older_guitar_players = Guitarist.all( { :age.gte =&gt; 50 } )

# deleting records
older_guitar_players.destroy!</pre>
<h3>TODO</h3>
<ul>
<li>Allow users to define the model partition key by using :partition_key =&gt; true option on the property.</li>
<li>Allow users to set the partition key as an additional attribute of the model with a lambda as default value.</li>
<li>Allow users to set the partition key as a method on the model.</li>
<li>Implement “in” operator in queries</li>
<li>Implement “order” query option</li>
<li>Retrieve more than 1000 fields using Windows Azure :continuation_token</li>
</ul>
<h3>Known Issues</h3>
<ul>
<li>Like statements are not working since Microsoft service API is throwing a NotImplemented exception when<br />
using <em>startswith</em> and <em>endswith</em> filters (<a href="http://msdn.microsoft.com/en-us/library/dd541448.aspx">more information here</a>)</li>
<li>There&#8217;s no way to tell thru the entity which is the partition key of our entity, so there&#8217;s no out-of-the-box load balancing support (for mor info on the tables model that a look at http://msdn.microsoft.com/en-us/library/dd179338.aspx)</li>
</ul>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=HllOoGlTwOU:z32_m7hDpn4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=HllOoGlTwOU:z32_m7hDpn4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=HllOoGlTwOU:z32_m7hDpn4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/HllOoGlTwOU" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/jpgarcia/2010/02/08/windows-azure-tables-adapter-for-datamapper/</feedburner:origLink></item>
	<item>
		<title>SQL Server 2008 R2 Update for Developers Training Kit Released!</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/jr2uL9HTXdc/</link>
		<comments>http://blogs.southworks.net/mconverti/2010/02/08/sql-server-2008-r2-update-for-developers-training-kit-released/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 03:07:00 +0000</pubDate>
		<dc:creator>mconverti</dc:creator>
		
		<category><![CDATA[DPE]]></category>

		<category><![CDATA[SQL Server 2008 R2]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/mconverti/?p=158</guid>
		<description><![CDATA[
As Roger announced in his blog, the first release of the SQL Server 2008 R2 Update for Developers Training Kit is available for free download from the Microsoft Download center at:

http://go.microsoft.com/?linkid=9710868 

The SQL Server 2008 R2 Update for Developers Training Kit is ideal for developers who want to understand how to take advantage of the [...]]]></description>

		<content:encoded><![CDATA[<p><img style="margin: 0px" border="0" alt="Microsoft SQL Server 2008 R2" src="http://blogs.southworks.net/mconverti/files/2010/02/sqlserver2008r2logo-thumb.png" width="240" height="44" /></p>
<p>As Roger announced in his <a href="http://blogs.msdn.com/rdoherty/archive/2010/02/03/announcing-the-sql-server-2008-r2-update-for-developers-training-kit.aspx">blog</a>, the first release of the <strong>SQL Server 2008 R2 Update for Developers Training Kit</strong> is available for free download from the Microsoft Download center at:</p>
<ul>
<li><a title="http://go.microsoft.com/?linkid=9710868" href="http://go.microsoft.com/?linkid=9710868">http://go.microsoft.com/?linkid=9710868</a> </li>
</ul>
<p>The SQL Server 2008 R2 Update for Developers Training Kit is ideal for developers who want to understand how to take advantage of the key improvements introduced in <strong>Microsoft SQL Server 2008</strong> and <strong>Microsoft SQL Server 2008 R2</strong> in their applications, as well as for developers who are new to SQL Server.</p>
<p>Stay tuned because new releases of this training kit are going to be published every two weeks approximately containing new labs, demos, presentations and videos related to SQL Server 2008 R2 features.</p>
<h3>Training Kit Content</h3>
<p>This release contains all the original content from the <a href="http://go.microsoft.com/?linkid=9665942">SQL Server 2008 Developer Training Kit</a> (but targeting <strong>Microsoft SQL Server 2008 R2</strong>) and also the following new one:</p>
<ul>
<li><strong>How to build your first web application with SQL Server and ASP.NET</strong>: This hands-on lab shows how to connect to SQL Server and perform Create, Read, Update and Delete (CRUD) operations on SQL Server 2008 from an ASP.NET Web application. It also shows you how to work with images stored in SQL Server in a web application. This lab is ideal for developers who are new to building web applications with SQL Server and ASP.NET. </li>
<li><strong>Data-tier Applications in SQL Server 2008 R2 and Visual Studio 2010</strong>: This hands-on lab shows how to perform the basic steps in creating, developing, deploying, managing and upgrading a Data-tier Application (DAC) using the new features in Microsoft SQL Server 2008 R2 and Microsoft Visual Studio 2010. It also shows some of the new IDE tools and enhancements included in Microsoft Visual Studio 2010 to work with Database projects. </li>
<li><strong>Introduction To StreamInsight and Complex Event Processing</strong>: Microsoft SQL Server StreamInsight is Microsoft&#8217;s new Complex Event Processing technology to help businesses derive better insights by correlating event streams from multiple sources with near-zero latency. This hands-on lab shows how to leverage the new StreamInsight framework released as part of Microsoft SQL Server 2008 R2 while developing a StreamInsight sample application. It also explains the basics about Complex Event Processing. </li>
<li><strong>Using the New Features of Reporting Services 2008 R2</strong>: This hands-on lab introduces the new features included in Microsoft SQL Server 2008 R2 Reporting Services like the Map Wizard to display geospatial data, the lookup functions in report expressions so that data from multiple datasets can be shown in a single data region and the capability to export report data to an Atom data feed. It also shows the new features in Report Builder 3.0. </li>
<li><strong>PowerPivot in SQL Server 2008 R2</strong>: This hands-on lab introduces to the Microsoft SQL Server PowerPivot for Excel 2010 add-in and shows how to load data into it and how to create PowerPivot pivot tables. It also introduces DAX expressions for multidimensional calculations against PowerPivot data and explains how to publish PowerPivot workbooks to Microsoft SQL Server PowerPivot for SharePoint 2010. </li>
<li><strong>7 Introductory Videos</strong>: these videos introduce and review the new features and enhancements in Microsoft SQL Server 2008 and Microsoft SQL Server 2008 R2.
<ul>
<li>SQL Server 2008 R2 Update for Developers Overview Part I - SQL Server 2008 Review </li>
<li>SQL Server 2008 R2 Update for Developers Overview Part II - Introducing SQL Server 2008 R2 </li>
<li>Introducing SQL Server 2008 R2 StreamInsight </li>
<li>Demo: Real Time Analytics with SQL Server 2008 R2 StreamInsight </li>
<li>Introducing SQL Server 2008 R2 Application and Multi-Server Management </li>
<li>Introducing SQL Server 2008 R2 Reporting Services </li>
<li>Introducing PowerPivot for Excel 2010 and SharePoint 2010 </li>
</ul>
</li>
</ul>
<p><a href="http://blogs.southworks.net/mconverti/files/2010/02/sqlserver2008r2tk.png"><img style="float: none;margin-left: auto;margin-right: auto" border="0" alt="SQL Server 2008 R2 Update for Developers Training Kit" src="http://blogs.southworks.net/mconverti/files/2010/02/sqlserver2008r2tk-thumb.png" width="586" height="480" /></a></p>
<h3>Resources</h3>
<ul>
<li><a href="http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx">Microsoft SQL Server 2008 R2 November CTP</a> </li>
<li><a href="http://msftdbprodsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24854">AdventureWorks 2008 R2 Sample Databases</a> </li>
<li><a href="http://www.microsoft.com/visualstudio/try/default.mspx">Microsoft Visual Studio 2010 Ultimate 2010 Beta 2</a> </li>
<li><a href="http://www.powerpivot.com/download.aspx">Microsoft SQL Server PowerPivot for Excel</a> </li>
<li><a href="http://www.microsoft.com/office/2010/">Microsoft Office 2010 Excel Beta</a> </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=77c30c6c-47fc-416d-88e7-8122534b3f37">Microsoft SharePoint Server 2010 Beta</a> </li>
</ul>
<p>Enjoy</p>
<p>Mariano</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=jr2uL9HTXdc:nhgtif8Vu1I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=jr2uL9HTXdc:nhgtif8Vu1I:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=jr2uL9HTXdc:nhgtif8Vu1I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/jr2uL9HTXdc" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/mconverti/2010/02/08/sql-server-2008-r2-update-for-developers-training-kit-released/</feedburner:origLink></item>
	<item>
		<title>Common mistakes / issues when creating and using Composite Stream Manifests (.CSM)</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/bAGOvGAe1Z0/</link>
		<comments>http://blogs.southworks.net/ejadib/2010/02/05/common-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 21:39:49 +0000</pubDate>
		<dc:creator>ejadib</dc:creator>
		
		<category><![CDATA[Adaptive Streaming]]></category>

		<category><![CDATA[CSM]]></category>

		<category><![CDATA[Composite Stream Manifest]]></category>

		<category><![CDATA[IIS7]]></category>

		<category><![CDATA[Live Smooth Streaming]]></category>

		<category><![CDATA[RCE]]></category>

		<category><![CDATA[Rough Cut Editing]]></category>

		<category><![CDATA[SSME]]></category>

		<category><![CDATA[Smooth Streaming]]></category>

		<category><![CDATA[Smooth Streaming Media Element]]></category>

		<category><![CDATA[Smooth Streaming Player Development Kit]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/ejadib/?p=213</guid>
		<description><![CDATA[One of the greatest features added on the Beta 2 version of the IIS Smooth Streaming Player Development Kit (SSPDK) is the support for Composite Stream Manifests for Rough Cut Editing. This a powerful feature which I really recommend looking at, and if you want to learn the basics of the CSMs you must take [...]]]></description>

		<content:encoded><![CDATA[<p>One of the greatest features added on the Beta 2 version of the IIS Smooth Streaming Player Development Kit (SSPDK) is the support for Composite Stream Manifests for Rough Cut Editing. This a powerful feature which I really recommend looking at, and if you want to learn the basics of the CSMs you must take a look at the following posts:</p>
<ul>
<li><a href="http://blogs.iis.net/vsood/archive/2010/01/22/composite-manifest-support-for-rough-cut-editing-scenarios-in-ssme.aspx" target="_blank">Composite Manifest Support for Rough Cut Editing scenarios in SSME</a> by <a href="http://blogs.iis.net/vsood" target="_blank">Vishal Sood</a></li>
<li><a href="http://blog.johndeutscher.com/2010/01/22/new-composite-manifest-support-for-building-rough-cut-editing-rce-scenarios-with-smooth-streaming/" target="_blank">New Composite Manifest support for building Rough Cut Editing (RCE) scenarios with Smooth Streaming</a> by <a href="http://blog.johndeutscher.com" target="_blank">John Deutscher</a></li>
</ul>
<p>I&#8217;ve been working with CSMs for three months now, so in this post I would like to share with you the lessons I&#8217;ve learnt during the process of creation and usage of the CSMs.</p>
<p>There are a few common mistakes and issues you might face during that process, so I hope this post will be helpful for the community. </p>
<h4><strong></strong> </h4>
<h4><strong>Configure IIS to serve .CSM files</strong></h4>
<p>In order to do that, you have to add a mime type entry on IIS for the .CSM extension on every IIS server that is serving up the .csm files. The mime type for the .csm must be &#8220;text/xml&#8221;. You can do this on the IIS Manager. Also you can achieve the same by editing the applicationHost.config and adding the following line:</p>
<p> &lt;mimeMap fileExtension=&#8221;.csm&#8221; mimeType=&#8221;text/xml&#8221; /&gt;</p>
<p> </p>
<h4><strong>&#8220;Error encountered on HEAD request to manifest uri &lt;your manifest&gt; for &lt;position&gt; clip in RCE manifest&#8221;</strong></h4>
<p>This will likely be the first issue you will encounter after trying to use a CSM. When using a CSM the Smooth Streaming Media Element (SSME) attempts to do a HEAD request on the manifest for each clip to make sure that the content hasn&#8217;t been moved (and if it has, it will used the new URL on the response).</p>
<p>There are two changes you have to make in order to fix this issue.</p>
<p>The first one is related to an existing known-issue on the applicationHost.config file of IIS. This server bug prevents the On-Demand smooth streaming handler from responding to HEAD request. To fix this go to the <a href="http://www.iis.net/downloads/files/media/smoothstream_readme.htm" target="_blank">Smooth Streaming Readme page</a> and check the <strong>Known Issues</strong> section, specifically the &#8220;Configuring the SmoothHandler handler mapping to process HTTP Head requests&#8221; item.</p>
<p>The second change must be done on the clientaccesspolicy.xml file, essentially to indicate that HEAD requests are allowed. To fix this make sure that your clientaccesspolicy.xml file includes <strong>http-methods=&#8221;*&#8221;</strong>or <strong>http-methods=&#8221;GET,HEAD,POST&#8221;</strong>:</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;access-policy&gt;<br />
  &lt;cross-domain-access&gt;<br />
    &lt;policy&gt;<br />
      &lt;allow-from <strong>http-methods=&#8221;*&#8221;</strong> http-request-headers=&#8221;*&#8221;&gt;     <br />
        &lt;domain uri=&#8221;*&#8221;/&gt;<br />
      &lt;/allow-from&gt;     <br />
      &lt;grant-to&gt;     <br />
        &lt;resource path=&#8221;/&#8221; include-subpaths=&#8221;true&#8221;/&gt;<br />
      &lt;/grant-to&gt;     <br />
    &lt;/policy&gt;<br />
  &lt;/cross-domain-access&gt;<br />
&lt;/access-policy&gt;</p>
<p> </p>
<h4><strong>&#8220;Caught exception trying to parse main manifest: V2 Manifest: Audio stream requires CodecPrivateData attribute&#8221;</strong></h4>
<p>This is because the CSM contains a clip that is referring a V1 Manifest, which is not a valid source for a CSM.</p>
<p> </p>
<h5><strong></strong></h5>
<h4><strong>&#8220;Caught exception trying to parse main manifest: First video (audio) chunk in clip &lt;position&gt; [start time = &lt;start time&gt;, duration = &lt;duration&gt;] does not contain clip start position &lt;clipStartPosition&gt;&#8221;</strong></h4>
<p>This message indicates that the first chunk time + the first chunk duration of the reported stream is smaller or larger that the clip&#8217;s begin position. Therefore the first chunk time + the first chunk duration of the stream must contain the clip&#8217;s begin position.</p>
<p> </p>
<h4><strong>&#8220;Caught exception trying to parse main manifest: Last video (audio) chunk in clip &lt;position&gt; [start time = &lt;start time&gt;, duration = &lt;duration&gt;] does not contain clip end position &lt;clipEndPosition&gt;&#8221;</strong></h4>
<p>This message indicates that the last chunk time + the last chunk duration of the reported stream is smaller or larger that the clip&#8217;s end position. Therefore the last chunk time + the last chunk duration of the stream must contain the clip&#8217;s end position.</p>
<p> </p>
<h4><strong>Different A</strong><strong>udio encoding settings in the CSM clips</strong></h4>
<p>If you have clips with different audio encoding settings, then the playback will suddenly stop. Due to a limitation on Silverlight, the audio settings have to be the same. The Silverlight pipeline is not able to handle audio property changes on the fly. So make sure that the audio of the clips are being encoded at same bit rate.</p>
<p> </p>
<h4><strong></strong></h4>
<h4><strong>Sparse stream data within the clip</strong></h4>
<p>This will likely not cause any issue, but as today having sparse stream data within a clip is not supported I decided to include it on this list.</p>
<p> </p>
<p>As you see, there are a couple of things to have in mind when creating and using composite stream manifests. I hope this post encourages you to use this amazing feature.</p>
<p> </p>
<p>Happy streaming!</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f02%2f05%2fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.southworks.net%2fejadib%2f2010%2f02%2f05%2fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<p><a rev="vote-for" href="http://dotnetshoutout.com/Ezequiel-Jadibs-Blog-Common-mistakes-issues-when-creating-and-using-Composite-Stream-Manifests-CSM"><img src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fblogs.southworks.net%2Fejadib%2F2010%2F02%2F05%2Fcommon-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm%2F" alt="Shout it" /></a></p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=bAGOvGAe1Z0:DPZWTp4sVx8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=bAGOvGAe1Z0:DPZWTp4sVx8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=bAGOvGAe1Z0:DPZWTp4sVx8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/bAGOvGAe1Z0" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/ejadib/2010/02/05/common-mistakes-issues-when-creating-and-using-composite-stream-manifests-csm/</feedburner:origLink></item>
	<item>
		<title>Sharepoint 2010 – How to deploy custom Webparts</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/70hR_k38vJI/</link>
		<comments>http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-how-to-deploy-custom-webparts/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:43:27 +0000</pubDate>
		<dc:creator>aortega</dc:creator>
		
		<category><![CDATA[Sharepoint Technologies]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-how-to-deploy-custom-webparts/</guid>
		<description><![CDATA[I have found many post in the web about how easy is to develop and debug custom Visual Webpart, here are a couple of great references

http://blogs.msdn.com/bethmassi/archive/2010/01/28/creating-a-sharepoint-visual-web-part-using-visual-studio-2010.aspx
http://www.helloitsliam.com/archive/2009/10/20/sharepoint-2010-–-create-a-visual-web-part.aspx
http://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=32

The problem is that there is not much talking about how to deploy the packaged Webpart on a different server. I run into this issue following the last post mentioned [...]]]></description>

		<content:encoded><![CDATA[<p>I have found many post in the web about how easy is to develop and debug custom Visual Webpart, here are a couple of great references</p>
<ul>
<li><a href="http://blogs.msdn.com/bethmassi/archive/2010/01/28/creating-a-sharepoint-visual-web-part-using-visual-studio-2010.aspx">http://blogs.msdn.com/bethmassi/archive/2010/01/28/creating-a-sharepoint-visual-web-part-using-visual-studio-2010.aspx</a></li>
<li><a href="http://www.helloitsliam.com/archive/2009/10/20/sharepoint-2010-%E2%80%93-create-a-visual-web-part.aspx">http://www.helloitsliam.com/archive/2009/10/20/sharepoint-2010-–-create-a-visual-web-part.aspx</a></li>
<li><a href="http://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=32">http://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=32</a></li>
</ul>
<p>The problem is that there is not much talking about how to deploy the packaged Webpart on a different server. I run into this issue following the last post mentioned above because I am trying to deploy a custom Webpart to analyze the Claims inside a Token in a Claims based Authentication Sharepoint Web Application.</p>
<p>I finally came across this post (<a href="http://dotnet.sys-con.com/node/1208275">http://dotnet.sys-con.com/node/1208275</a>) which details the deployment process as follows and is a recommended reading BWT. I am considering that you have a .WSP Webpart packaged by Visual Studio 2010 Beta.</p>
<ol>
<li>Add-SPSolution c:\code\SharePointProject2\bin\debug\SharePointProject2.wsp</li>
<li>Install-SPSolution –Identity SharePointProject2.wsp –WebApplication <a href="http://sp2010">http://sp2010</a> -GACDeployment</li>
</ol>
<p>I will complement that post adding the final steps you should run to actually be able to see that webpart on your web application!</p>
<p>When adding a web part while editing a sharepoint page you might find that not all available webparts are show. This might happen if your Site Collection has not enabled all features and is also necessary for activating custom webparts. You should do the following as a Site Collection administrator,</p>
<ol>
<li>Site Actions </li>
<li>Site Settings </li>
<li>Manage Site Features </li>
<li>Site Collection Features</li>
</ol>
<p>Hope this helps! </p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=70hR_k38vJI:4zuOsxn6UBk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=70hR_k38vJI:4zuOsxn6UBk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=70hR_k38vJI:4zuOsxn6UBk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/70hR_k38vJI" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-how-to-deploy-custom-webparts/</feedburner:origLink></item>
	<item>
		<title>Sharepoint 2010- Logging is out of control!</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/uOEqED4pN-4/</link>
		<comments>http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-logging-is-out-of-control/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:30:03 +0000</pubDate>
		<dc:creator>aortega</dc:creator>
		
		<category><![CDATA[Sharepoint Technologies]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-logging-is-out-of-control/</guid>
		<description><![CDATA[Well, I spent a couple of days working with the Sharepoint 2010 Beta and have a couple of IMPORTANT Operational Tips to keep in mind when managing the Beta at least. I have an on-premise deployment (pre-production) and a cloud deployment on Amazon EC2 (production) and in both places I run into issues by limiting [...]]]></description>

		<content:encoded><![CDATA[<p>Well, I spent a couple of days working with the Sharepoint 2010 Beta and have a couple of IMPORTANT Operational Tips to keep in mind when managing the Beta at least. I have an on-premise deployment (pre-production) and a cloud deployment on Amazon EC2 (production) and in both places I run into issues by limiting the log files growth.</p>
<p>We expect to see this monitored on the SCOM Management Pack when the product hits RTM.</p>
<h1>Lessons Learned</h1>
<ol>
<li><b>Watch out the Log files on File System</b>: By default on “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS” On Sharepoint generated 147Gb of log files in two weeks! Yes, <b>147Gb</b>, this is kindly we fixed by the RTM release. But you should configure <b>Central Administration &gt; Diagnostic Logging</b> to limit the space available for log files. I configured 1Gb for our Cloud deployment. </li>
<li><b>Watch out the WSS_Logging Database</b>: When you do a Single Server installation using SQL Express 2008 to host Sharepoint DBs, you must watch out for the growth of the DB named “WSS_Logging” which usually resides on “C:\Program Files\Microsoft Office Servers\14.0\Data\MSSQL10.SHAREPOINT\MSSQL\DATA”. I had one instance which reached 4Gb and put my SQLExpress instance to the limit (<a href="http://social.technet.microsoft.com/Forums/en-GB/sharepoint2010setup/thread/d100650a-b06e-4eaa-9123-1315b9858043">Here</a> is someone who run into the same issue). That DB cannot be truncated as it is not supported right now and it takes care of analytics of the web traffic. You can disable the Health and Data Collection gathering from Monitoring &gt; Reporting &gt; Configure usage and health data collection, however web analytics is very neat to be left apart.       <br />I was not able to find a procedure to migrate that DB to another server, so I had to disable the feature. </li>
</ol>
<h1>Key Takeaways</h1>
<ol>
<li>Limit your log files usage. </li>
<li>Deploy on server-farm mode to move the WSS_Logging db to another db server. </li>
</ol>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=uOEqED4pN-4:YTETi_AUjkE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=uOEqED4pN-4:YTETi_AUjkE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=uOEqED4pN-4:YTETi_AUjkE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/uOEqED4pN-4" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/aortega/2010/02/05/sharepoint-2010-logging-is-out-of-control/</feedburner:origLink></item>
	<item>
		<title>Red/Green/Refactor: a pattern for clean code that works, Part II (How, Where, When)</title>
		<link>http://feeds.southworks.net/~r/master-feed/~3/RffAFhX8vew/</link>
		<comments>http://blogs.southworks.net/gmaliandi/2010/02/redgreenrefactor-a-pattern-for-clean-code-that-works-part-ii-how-where-when/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 19:45:20 +0000</pubDate>
		<dc:creator>gmaliandi</dc:creator>
		
		<category><![CDATA[ATDD]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Books]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Extreme Programming]]></category>

		<category><![CDATA[Quality]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blogs.southworks.net/gmaliandi/?p=31</guid>
		<description><![CDATA[On the first part of this post I spoke of the concept of TDD, as well as the reasons for using it. But what about the way to apply it, and more importantly, the context in which it should be used? This second part will address those subjects.
Example: Visual Studio Unit Testing Framework
In order to [...]]]></description>

		<content:encoded><![CDATA[<p>On the <a href="http://blogs.southworks.net/gmaliandi/2010/02/redgreenrefactor-a-pattern-for-clean-code-that-works-part-i-what-why/">first part</a> of this post I spoke of the <em>concept</em> of TDD, as well as the<em> reasons</em> for using it. But what about the <strong>way</strong> to apply it, and more importantly, the<strong> context</strong> in which it should be used? This second part will address those subjects.</p>
<h2>Example: Visual Studio Unit Testing Framework</h2>
<p>In order to exemplify a kind of unit tests used in TDD in a graphical way, I chose to develop a quite simple Tic-Tac-Toe solution in C#, using <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx">Visual Studio</a>. The following image shows three tests for the Square class, which can hold only circles, crosses or empty spaces (simulating a Tic-Tac-Toe square).</p>
<p><img src="http://blogs.southworks.net/gmaliandi/files/2010/02/image3.png" border="0" alt="image" width="539" height="500" /></p>
<p>The use of this unit testing framework (<a href="http://msdn.microsoft.com/en-us/library/ms243147%28VS.80%29.aspx">Visual Studio Unit Testing Framework</a>) is quite self-explaining. There is a <em>test class</em> that holds <em>tests methods</em>, which can be executed individually or all together. Each test method shown here has an <em>Assert</em> method in the end, which is one way of defining if the method passes or fails.</p>
<p>Note that these tests were written <strong>before</strong> actually coding anything to the actual class; so, when going to code the required functions, the API has already been defined by the tests, and it&#8217;s quite easy to know what to do.</p>
<p>Another important thing to mention is that <strong>tests shouldn&#8217;t have any kind of correlativeness between each other</strong>, since they should act as <em>individual testing units</em>. Here this is exemplified by the fact that the instance of the Square class can have different names among the tests, and they&#8217;ll still work perfectly.</p>
<h2>TDD, ATDD and Scrum</h2>
<p>Since a key matter in TDD based projects is to know how to <strong>divide</strong> and <strong>prioritize</strong> development tasks, TDD is more effective in agile environments such as <a href="http://blogs.southworks.net/gmaliandi/2010/02/tobias-mayer-ideas-from-a-change-agent/">Scrum</a>. Practicing TDD is a good way to deliver constantly (see Frequent Delivery in our <a href="http://www.southworks.net/Cpny/Cult/Mindsets.aspx">company mindsets</a>), so <em>TDD and Scrum do benefit from each other</em>.</p>
<p>Furthermore, mainly because of the last point in the benefits section of the first part of this post, it&#8217;s extremely important for the <em>customer to have an active and appropriate role </em>in constantly defining the direction of the project (he is the one that will consume the product, hence it is wise for him/her to participate in the decision making). So that&#8217;s where <em>Acceptance Test Driven Development</em> (<a href="http://www.slideshare.net/tcmak/atdd-in-practice">ATDD</a>) comes into consideration. ATDD is in fact a really interesting subject which deserves a post on its own and more, but just to mention the concept, it&#8217;s a methodology that implies writing <em>Acceptance Tests</em>, that become the criteria that the customer defines for his business requisites.</p>
<p>It&#8217;s important, though, that<strong> the role of the customer and the developer doesn&#8217;t overlap each other</strong>: in other words, the customer shouldn&#8217;t define specific implementation details (<em>the how</em>) as requirements, because the developer usually knows more about it; and the developer, on the other hand, shouldn&#8217;t decide on strategic external features (<em>the what</em>), since <em>the customer knows more about his business</em>.</p>
<p>(Ideas for this section have been taken from &#8216;<a href="http://www.dirigidoportests.com/el-libro">Diseño Agil con TDD</a>&#8216;, a must-read free online book for Spanish-speaking developers interested on the subject)</p>
<h2>Conclusion</h2>
<p>Test Driven Development is a powerful methodology, that can bring outstanding results, especially in large, complex projects. Its benefits are best shown not when using it on isolation, but when <em>combining it with the appropriate resources and organization</em>.</p>
<p>Again, if you have any thoughts about what I&#8217;ve said, don&#8217;t hesitate to comment here.</p>
<div class="feedflare">
<a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/master-feed?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/master-feed?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/master-feed?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/master-feed?i=RffAFhX8vew:PR1WEIYMWC4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/master-feed?i=RffAFhX8vew:PR1WEIYMWC4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.southworks.net/~ff/master-feed?a=RffAFhX8vew:PR1WEIYMWC4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/master-feed?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/master-feed/~4/RffAFhX8vew" height="1" width="1"/>]]></content:encoded>
		<wfw:commentRss />
		<feedburner:origLink>http://blogs.southworks.net/gmaliandi/2010/02/redgreenrefactor-a-pattern-for-clean-code-that-works-part-ii-how-where-when/</feedburner:origLink></item>
</channel>
</rss><!-- 393 queries 2.646 seconds. -->
