<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" version="2.0">
  <channel>
    <title>No Fluff Just Stuff</title>
    <link>http://www.nofluffjuststuff.com</link>
    <description>The best value in the Java/Open Source conferencing space hands down</description>
    <item>
      <title>EE Tip: Counting the results of a nested query</title>
      <link>http://www.nofluffjuststuff.com/blog/aaron_gustafson/2010/03/ee_tip_counting_the_results_of_a_nested_query?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>{summary}If you've built anything remotely challenging in ExpressionEngine, you've no doubt discovered things that are easier done in native PHP than in EE tags. A lot of it has to do with how ExpressionEngine parses templates and what gets parsed first.

One recent bugbear I ran into was trying to use the {count} "magic" variable from a call to {exp:query} that resided inside a {exp:weblog:entries} loop. I needed the {entry_id} from the entry in the SQL statement, but {count} (despite being used inside {exp:query}) was evaluating as the {exp:weblog:entries} count and not the {exp:query} count. To solve the issue, I came up with the following:

{exp:gist id="335632" file="gistfile1.phtml"}

You'll notice I'm using {exp:query} twice. The first time is to establish a variable in the SQL connection. Then I am free to use the variable in the second query and the count (returned as {query_count}) will be a count of the inner loop instead of the outer one.

It is important to note, however, that MySQL will evaluate the variable's incrementation before paying attention to any ORDER BY clauses, so your mileage may vary. Regardless, it's a handy technique.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/EasyReader?a=1PuigOG542Y:Oy_Rr0tF5dI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EasyReader?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EasyReader?a=1PuigOG542Y:Oy_Rr0tF5dI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EasyReader?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EasyReader?a=1PuigOG542Y:Oy_Rr0tF5dI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EasyReader?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/EasyReader?a=1PuigOG542Y:Oy_Rr0tF5dI:JEwB19i1-c4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/EasyReader?i=1PuigOG542Y:Oy_Rr0tF5dI:JEwB19i1-c4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/1PuigOG542Y" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 18 Mar 2010 16:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://www.easy-reader.net/archives/2010/03/17/counting-the-results-of-a-nested-query-in-expressionengine</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Silverlight 4 + RIA Services - Ready for Business: Search Engine Optimization (SEO)</title>
      <link>http://www.nofluffjuststuff.com/blog/brad_abrams/2010/03/silverlight_4__ria_services__ready_for_business_search_engine_optimization_seo_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;To &lt;a href="http://blogs.msdn.com/brada/archive/2010/03/15/silverlight-4-ria-services-ready-for-business-index.aspx"&gt;continue our series&lt;/a&gt;, let’s look at SEO and Silverlight.&amp;#160; The vast majority of web traffic is driven by search. Search engines are the first stop for many users on the public internet and is increasingly so in corporate environments as well.&amp;#160; Search is also the key technology that drives most ad revenue.&amp;#160; So needless to say, SEO is important.&amp;#160; But how does SEO work in a Silverlight application where most of the interesting content is dynamically generated?&amp;#160;&amp;#160; I will present an application pattern for doing SEO in a Silverlight with the minimum of extra work.&amp;#160; &lt;/p&gt;  &lt;p&gt;There are three fun-and-easy steps to making your Silverlight application SEO friendly.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Step 1: Make important content deep linkable &lt;/li&gt;    &lt;li&gt;Step 2: Let the search engines know about all those deep links with a sitemap &lt;/li&gt;    &lt;li&gt;Step 3: Provide a “down level” version of important content &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Let’s drill into each of these areas by walk through an example.&amp;#160;&amp;#160; I am going to use my PDC2009 demo “foodie Explorer” as a base line.&amp;#160; You might consider reading my previous walk through (&lt;a href="http://blogs.msdn.com/brada/archive/2009/11/19/pdc09-talk-building-amazing-business-applications-with-silverlight-4-ria-services-and-visual-studio-2010.aspx"&gt;PDC09 Talk: Building Amazing Business Applications with Silverlight 4, RIA Services and Visual Studio 2010&lt;/a&gt;) to get some background before we begin.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://brad_abrams.members.winisp.net/Projects/Mix10/MyApp.SEO.zip"&gt;Download the completed sample&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Step 1: Make important content deep linkable&lt;/h3&gt;  &lt;p&gt;Any content on your site that you want to be individually searchable needs to be URL accessible.&amp;#160; If I want you to be able to use Bing (or Google, or whatever) for “Country Fried Steak” and land on my page listing pictures of Country Fried Steak I need to offer a URL that brings you to exactly this content.&amp;#160;&amp;#160; &lt;a href="http://foo.com/foodieExplorer.aspx"&gt;http://foo.com/foodieExplorer.aspx&lt;/a&gt; is not good enough, I need to offer a URL such as &lt;a href="http://foo.com/foodieExplorer.aspx?food"&gt;http://foo.com/foodieExplorer.aspx?food&lt;/a&gt;=”Country Fried steak”.&amp;#160;&amp;#160;&amp;#160; Note that there are other great benefits to this technique as well.&amp;#160; For example, users can tweet, email and IM these URLs to discuss particular content from your application.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Luckily with the Silverlight navigation feature it is very easy to do add support for deep linking.&amp;#160; Let’s take a look at how to do this in a Silverlight app.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_1.png" width="244" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What we want to do is provide a URL that can identify a given a given restaurant or a restaurant and a particular plate. For SEO as well as better human readability reasons, we’d like the URL format such as &lt;a href="http://www.hanselman.com/abrams/restaurant/25/plate/4"&gt;http://www.hanselman.com/abrams/restaurant/25/plate/4&lt;/a&gt;,&amp;#160; to indicate that this is restaurant=25 and plate=4.&amp;#160;&amp;#160;&amp;#160; To enable this, let’s define the routes in the web project in global.asax.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1:     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Global : HttpApplication
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2:     {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:         &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Application_Start(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:         {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:             RegisterRoutes(RouteTable.Routes);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:         }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7: 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:         &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RegisterRoutes(RouteCollection routes)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:         {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:             routes.MapPageRoute(
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:                 &amp;quot;&lt;span style="color: #8b0000"&gt;deepLinkRouteFull&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:                 &amp;quot;&lt;span style="color: #8b0000"&gt;restaurant/{restaurantId}/plate/{plateId}&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13:                 &amp;quot;&lt;span style="color: #8b0000"&gt;~/default.aspx&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14:                 &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15:                 &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RouteValueDictionary { { &amp;quot;&lt;span style="color: #8b0000"&gt;restaurant&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color: #8b0000"&gt;-1&lt;/span&gt;&amp;quot; }, 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 16:                                            { &amp;quot;&lt;span style="color: #8b0000"&gt;plate&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color: #8b0000"&gt;-1&lt;/span&gt;&amp;quot; } });
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 17:                         
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 18:             routes.MapPageRoute(
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 19:                 &amp;quot;&lt;span style="color: #8b0000"&gt;deepLinkRoute&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 20:                 &amp;quot;&lt;span style="color: #8b0000"&gt;restaurant/{restaurantId}&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 21:                 &amp;quot;&lt;span style="color: #8b0000"&gt;~/default.aspx&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 22:                 &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 23:                 &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RouteValueDictionary { { &amp;quot;&lt;span style="color: #8b0000"&gt;restaurant&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color: #8b0000"&gt;-1&lt;/span&gt;&amp;quot; } });
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 24: &lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;In line 12 and 20 we define the pattern of the deep links we support with the restaurantId and plateId place holders for the values in the URL.&amp;#160; We define them in order from most complex to least complex.&amp;#160; The defaults are given in 15 and 23 if the Ids are left off the URL.&amp;#160; &lt;/p&gt;

&lt;p&gt;Now, let’s look at how to parse this URL on the Silverlight client.&amp;#160; In Plates.xaml.cs:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1:         &lt;span style="color: #008000"&gt;// Executes when the user navigates to this page.&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2:         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnNavigatedTo(NavigationEventArgs e)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:         {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:             &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; plateID = -1;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5:             &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; restaurantId  =-1;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:             var s = HtmlPage.Document.DocumentUri.ToString().Split(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;char&lt;/span&gt;[] {'/','#'});
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:             &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = Find(s, &amp;quot;&lt;span style="color: #8b0000"&gt;plate&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (i != -1)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:             {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:                 plateID = Convert.ToInt32(s[i + 1]);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:                 plateDomainDataSource.FilterDescriptors.Add(
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:                     &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FilterDescriptor(&amp;quot;&lt;span style="color: #8b0000"&gt;ID&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13:                         FilterOperator.IsEqualTo, plateID));
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14:             }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15:             i = Find(s, &amp;quot;&lt;span style="color: #8b0000"&gt;restaurant&lt;/span&gt;&amp;quot;);          
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 16:             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (i != -1) restaurantId = Convert.ToInt32(s[i + 1]);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 17:             &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; restaurantId = Convert.ToInt32(NavigationContext.QueryString[&amp;quot;&lt;span style="color: #8b0000"&gt;restaurantId&lt;/span&gt;&amp;quot;]);
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 18:             plateDomainDataSource.QueryParameters.Add(
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 19:                &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Parameter()
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 20:                {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 21:                   ParameterName = &amp;quot;&lt;span style="color: #8b0000"&gt;resId&lt;/span&gt;&amp;quot;,
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 22:                   Value = restaurantId 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 23:                }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 24:             );
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 25:         }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 26: &lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Basically what the code above does is get the full URL and parse out the parts of the URL and parse out the restaurant and plate ids.&amp;#160; In lines 18-23, we are passing the restaurantId as a parameter to the query method and in lines 11-14 above, we are not using a query method, but rather than apply filter descriptor which adds a “where” clause to the LINQ query sent to the server.&amp;#160;&amp;#160; As a result,&amp;#160; we don’t need to change any server code.&amp;#160; &lt;/p&gt;

&lt;p&gt;One other little thing we need to do, is make sure the client ends up on Plates page.&amp;#160; That is handled by the silverlight navigation framework by using the “#/Plates” anchor tag.&amp;#160; Because anchor tags are a client only feature, the search engines can’t deal with them very effectively.&amp;#160; So we need to add this in on the client.&amp;#160; I found it was easy enough to do it just a bit of JavaScript.&amp;#160; I emit this from Default.aspx page on the server.&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Init(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; resId = Page.RouteData.Values[&amp;quot;&lt;span style="color: #8b0000"&gt;restaurant&lt;/span&gt;&amp;quot;] &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4:    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (resId != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) { Response.Write(&amp;quot;&lt;span style="color: #8b0000"&gt;&amp;lt;script type=text/javascript&amp;gt;window.location.hash='#/Plates';&amp;lt;/script&lt;/span&gt;&amp;quot;+&amp;quot;&lt;span style="color: #8b0000"&gt;&amp;gt;&lt;/span&gt;&amp;quot;); }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5: }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:    &lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;One little thing to watch out for is that with this routing feature enabled, now the default.aspx page is actived from a different URL, so the relative paths from the silverlight.js and MyApp.xap will not work.&amp;#160; For example you will see requests for &lt;a href="http://www.hanselman.com/abrams/restaurant/25/plate/4/Silverlight.js"&gt;http://www.hanselman.com/abrams/restaurant/25/plate/4/Silverlight.js&lt;/a&gt; rather than &lt;a href="http://www.hanselman.com/abrams/silverlight.js"&gt;http://www.hanselman.com/abrams/silverlight.js&lt;/a&gt;.&amp;#160; And this will result in an error such as:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_52.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb.png" width="244" height="169" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Line: 56 
  &lt;br /&gt;Error: Unhandled Error in Silverlight Application 

  &lt;br /&gt;Code: 2104&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Category: InitializeError&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Message: Could not download the Silverlight application. Check web server settings&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;To address this, &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;'&amp;lt;%= this.ResolveUrl(&amp;quot;~/Silverlight.js&amp;quot;) %&amp;gt;'&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;script&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;and &lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;source&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;&amp;lt;%= this.ResolveUrl(&amp;quot;&lt;/span&gt;~/&lt;span style="color: #ff0000"&gt;ClientBin&lt;/span&gt;/&lt;span style="color: #ff0000"&gt;MyApp&lt;/span&gt;.&lt;span style="color: #ff0000"&gt;xap&lt;/span&gt;&amp;quot;) %&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&amp;quot;/&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Now we give a URL that includes a PlateID such as:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://localhost:30045/restaurant/48/plate/119#/Plates" href="http://localhost:30045/restaurant/48/plate/119#/Plates"&gt;http://localhost:30045/restaurant/48/plate/119#/Plates&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_54.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_25.png" width="633" height="122" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;As a result, we get our individual item…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_68.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_26.png" width="408" height="322" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Step 2: Let the search engines know about all those deep links with a Sitemap&lt;/h3&gt;

&lt;p&gt;Now we have our application deep linkable, with every interesting bit of data having a unique URL.&amp;#160; But how is a search engine going to be able to find these URLs?&amp;#160; We certainly hope as people talk about (and therefore link to) our site on social networks the search engines will pick up some of them, but we might want to do a more complete job.&amp;#160; We might want to provide the search engine what ALL the deep links in the application.&amp;#160;&amp;#160; We can do that with a sitemap.&amp;#160; &lt;/p&gt;

&lt;p&gt;The Sitemap format is agreed to by all the major search engines.. you can find more information on it at &lt;a href="http://sitemap.org"&gt;http://sitemap.org&lt;/a&gt;.&amp;#160; &lt;/p&gt;

&lt;p&gt;To understand how this works, let’s look at the process a search engine would use to index an interesting data driven site: &lt;a href="http://amazon.com"&gt;http://amazon.com&lt;/a&gt;.&amp;#160;&amp;#160; When a search engine first hits such a site it reads the robots.txt file at the root of the site.&amp;#160; In this case: &lt;a title="http://www.amazon.com/robots.txt" href="http://www.amazon.com/robots.txt"&gt;http://www.amazon.com/robots.txt&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_6.png" width="222" height="341" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In this example, you can see at the top of the file there is a list of directories that the search engines are asked to skip&amp;#160;&amp;#160; Then at the bottom of this page, there is a list of sitemaps for the search engine to use to crawl all the site’s content.&amp;#160; &lt;/p&gt;

&lt;p&gt;Note:&amp;#160; You don’t, strictly speaking have to use a sitemap.&amp;#160; You can use the sitemaster tools provided by the major search engines to register your sitemap directly.&amp;#160; &lt;/p&gt;

&lt;p&gt;If we navigate to one of those URLs, we see a sitemap file, as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_16.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_7.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In this case, because Amazon.com is so huge, these links are actually to more sitemaps (this file is known as a Sitemap index file).&amp;#160; When we bottom out, we do get to links to actual products.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_18.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_8.png" width="396" height="293" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;As you can see the format looks like:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;urlset&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;http://www.google.com/schemas/sitemap/0.84&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://www.amazon.com/GAITHER-COMMITTEE-EISENHOWER-COLD-WAR/dp/081425005X&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://www.amazon.com/CONTROLLING-VICE-REGULATING-PROSTITUTION-CRIMINAL/dp/0814250076&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;One thing that is interesting here is that these links are constantly changing as items are added and removed from the Amazon catalog.&amp;#160; &lt;/p&gt;

&lt;p&gt;Let’s look at how we build a sitemap like this for our site.&amp;#160; &lt;/p&gt;

&lt;p&gt;In the web project, add a new Search Sitemap using the Add New Item dialog in VS and selected the Search Sitemap item. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_60.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_29.png" width="366" height="247" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Be sure to install the &lt;a href="http://silverlight.net/riaservices"&gt;RIA Services Toolkit&lt;/a&gt; to get this support.&lt;/p&gt;

&lt;p&gt;When we do this we get a robots.txt file that looks like:&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Fixedsys"&gt;# This file provides hints and instructions to search engine crawlers. 
    &lt;br /&gt;# For more information, see &lt;/font&gt;&lt;a href="http://www.robotstxt.org/"&gt;&lt;font size="2" face="Fixedsys"&gt;http://www.robotstxt.org/&lt;/font&gt;&lt;/a&gt;&lt;font size="2" face="Fixedsys"&gt;. &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Fixedsys"&gt;# Allow all 
    &lt;br /&gt;User-agent: * &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Fixedsys"&gt;# Prevent crawlers from indexing static resources (images, XAPs, etc) 
    &lt;br /&gt;Disallow: /ClientBin/ &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2" face="Fixedsys"&gt;# Register your sitemap(s) here. 
    &lt;br /&gt;Sitemap: /Sitemap.aspx&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;and a sitemap.aspx file.&amp;#160; &lt;/p&gt;

&lt;p&gt;For more information check out: &lt;a href="http://www.bing.com/community/blogs/webmaster/archive/2009/08/15/uncovering-web-based-treasure-with-sitemaps-sem-101.aspx"&gt;Uncovering web-based treasure with Sitemaps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To build this sitemap,we need to create another view of the same data from our PlateViewDomainService.&amp;#160; In this case we are consuming it from a ASP.NET webpage. To do this, we use the asp:DomainDataSource.&amp;#160;&amp;#160; You can configure this in the designer by:&lt;/p&gt;

&lt;p&gt;By drag-and-dropping a Repeater control to the form we get the follow design experience:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_20.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_9.png" width="244" height="157" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;then right click on it and configure the data source.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_22.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_10.png" width="436" height="117" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Select a new DataSource&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_62.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_30.png" width="369" height="294" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_64.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_31.png" width="244" height="192" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_66.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_32.png" width="244" height="192" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Finally, we end up with two sets of links in our sitemap.&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;RestaurauntSitemapDataSource&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2:         &lt;span style="color: #ff0000"&gt;DomainServiceTypeName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;MyApp.Web.DishViewDomainService&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:         &lt;span style="color: #ff0000"&gt;QueryName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;GetRestaurants&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4: 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Repeater&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataSourceID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;RestaurauntSitemapDataSource&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  6:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  7:         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;urlset&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;http://www.sitemaps.org/schemas/sitemap/0.9&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  8:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  9:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;         
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 10:               &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 11:                  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%&lt;/span&gt;= Request.Url.AbsoluteUri.ToLower().Replace(&amp;quot;sitemap.aspx&amp;quot;,string.Empty) + &amp;quot;restaurant/&amp;quot;&lt;span style="background-color: #ffff00; color: black"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%&lt;/span&gt;# HttpUtility.UrlEncode(Eval(&amp;quot;ID&amp;quot;).ToString()) &lt;span style="background-color: #ffff00; color: black"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 12:               &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 13:  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 14: &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Repeater&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 15: 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 16: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;PlatesSitemapDataSource&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 17:     &lt;span style="color: #ff0000"&gt;DomainServiceTypeName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;MyApp.Web.DishViewDomainService&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 18:     &lt;span style="color: #ff0000"&gt;QueryName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;GetPlates&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 19: &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 20: 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 21: &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Repeater&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;  &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;repeater2&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataSourceID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;PlatesSitemapDataSource&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 22:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 23:             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 24:                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%&lt;/span&gt;= Request.Url.AbsoluteUri.ToLower().Replace(&amp;quot;sitemap.aspx&amp;quot;,string.Empty) + &amp;quot;restaurant/&amp;quot;&lt;span style="background-color: #ffff00; color: black"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%&lt;/span&gt;# HttpUtility.UrlEncode(Eval(&amp;quot;RestaurantID&amp;quot;).ToString()) + &amp;quot;/plate/&amp;quot; + HttpUtility.UrlEncode(Eval(&amp;quot;ID&amp;quot;).ToString()) &lt;span style="background-color: #ffff00; color: black"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;loc&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;    
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 25:             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;        
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 26:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 27:     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 28:         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;urlset&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 29:     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 30: &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;Repeater&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; 31: &lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;As you can see in line 3 and 20, we are calling the use the GetRestaurant and GetPlates method defined in our DomainService directly.&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;Now, for any reasonable set of data this is going to be a VERY expensive page to execute.&amp;#160; It scans every row in the database.&amp;#160; While it is nice to keep the data fresh, we’d like balance that server load.&amp;#160; One easy way to do that is to use output caching for 1 hour. For more information see: &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa478965.aspx"&gt;ASP.NET Caching: Techniques and Best Practices&lt;/a&gt;&lt;/strong&gt;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="background-color: #ffff00; color: black"&gt;&amp;lt;%@ OutputCache Duration=&amp;quot;3600&amp;quot; VaryByParam=&amp;quot;None&amp;quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Another approach for really large datasets would be to factor the data into multiple sitemaps as the amazon.com example we saw above does.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_72.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_34.png" width="311" height="372" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;If we grab one of those URLs and navigate to them, bingo!&amp;#160; We get the right page.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_26.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_12.png" width="444" height="261" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h3&gt;Step 3: Provide a “down-level” version of important content&lt;/h3&gt;

&lt;p&gt;That is fantastic, we have deep links, we have a way for the search engines to discover all of those links, but what is the search engine going to find when it gets to this page?&amp;#160;&amp;#160;&amp;#160; Well, search engines for the most part only parse HTML, so if we do a Page\View Source,&amp;#160; we will see what the search engine sees:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_28.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_13.png" width="579" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Of if we browse with Silverlight disabled (Tools\Manage Addons), we see this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_30.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_14.png" width="481" height="276" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;We see a big old white page of nothing!&amp;#160; &lt;/p&gt;

&lt;p&gt;Certainly none of the dynamic content is presented. The code actually has to be run for the dynamic content to be loaded.&amp;#160; I am pretty sure search engines are not going to be running this silverlight (or flash or ajax) code in their datacenters anytime soon.&amp;#160; So what we need, is some alternate content.&amp;#160; &lt;/p&gt;

&lt;p&gt;Luckily this is pretty easy to do.&amp;#160; First lets get any alternate content to render.&amp;#160; It is important to note that this&amp;#160; content is not just for the search engines. Content written solely for search engines is sometimes called search engine spoofing or Web Spam when it is done to mislead users of search engines about the true nature of the site.&amp;#160; (&lt;a href="http://www.bing.com/community/blogs/webmaster/archive/2010/02/11/the-pernicious-perfidy-of-page-level-web-spam-sem-101.aspx"&gt;the pernicious perfidy of page-level web spam&lt;/a&gt;) .&amp;#160; Instead, this content is an alternate rendering of the page for anyone that doesn’t have Silverlight installed.&amp;#160; It might not have all the features, but it is good down level experience.&amp;#160;&amp;#160; It just so happens that the search engine’s crawlers do not have Silverlight installed, so they get something meaningful and accurate to index.&amp;#160; &lt;/p&gt;

&lt;p&gt;Add this HTML code to your default.aspx page.&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;AlternativeContent&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;display: none;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Hi, this is my alternative content&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h2&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Notice it is display: none, meaning we don’t expect the browser to render it… unless Silverlight is not available.&amp;#160; To accomplish that, add this bit of code to the page:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&amp;lt;script type=&amp;quot;&lt;span style="color: #8b0000"&gt;text/javascript&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!isSilverlightInstalled()) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; obj = &lt;span style="color: #0000ff"&gt;document&lt;/span&gt;.getElementById('AlternativeContent');
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            obj.style.display = &amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Note, the really cool isSilverlightInsalled method is taken from Petr’s &lt;a href="http://blogs.msdn.com/piotrp/archive/2008/05/07/determining-if-silverlight-is-installed-using-javascript.aspx"&gt;old-but-good post on the subject&lt;/a&gt;.&amp;#160;&amp;#160; I simply added this function to my Silverlight.js file. &lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; isSilverlightInstalled() {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; isSilverlightInstalled = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #008000"&gt;//check on IE&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; slControl = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ActiveXObject('AgControl.AgControl');
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            isSilverlightInstalled = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (e) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #008000"&gt;//either not installed or not IE. Check Firefox&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (navigator.plugins[&amp;quot;&lt;span style="color: #8b0000"&gt;Silverlight Plug-In&lt;/span&gt;&amp;quot;]) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                isSilverlightInstalled = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (e) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #008000"&gt;//we don't want to leak exceptions. However, you may &lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #008000"&gt;//to add exception tracking code here&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; isSilverlightInstalled;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;}
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;When we run it from a browser without Silverlight enabled we get the alternate content:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_32.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_15.png" width="244" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;But with Silverlight installed, we get our beautiful Silverlight application content.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_34.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_16.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;That is great, but how do we expose the right content?&amp;#160; We want to display exactly the same data as is in the Silverlight app and we want to write as little code as possible.&amp;#160; We really don’t want multiple pages to maintain.&amp;#160;&amp;#160;&amp;#160; So let’s add some very basic code to the page in our AlternativeContent div.&amp;#160;&amp;#160;&amp;#160; This ListView is for Restaurant details.&amp;#160; &lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;ListView&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;RestaurnatDetails&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                &lt;span style="color: #ff0000"&gt;EnableViewState&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;PlaceHolder&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;ItemPlaceHolder&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;       &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;DynamicEntity&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;RestaurnatEntity&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;ListView&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Now we need to bind it to our datasource…&amp;#160;&amp;#160; I find this is pretty easy in the design view in VS.&amp;#160; Note, you do have make the div visible so you can work with it in the designer.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_36.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_17.png" width="244" height="130" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then we configure the DataSource.. it is very easy to select the query method we want to use&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image70.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image70_thumb.png" width="421" height="331" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Next we bind the query method parameter based on the routes we defined.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_74.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessS_C533/image_thumb_35.png" width="438" height="306" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now do the exact same thing for our Plates ListView…&amp;#160; &lt;/p&gt;

&lt;p&gt;This gives us some very simple aspx code:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1:            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;asp&lt;/span&gt;:&lt;span style="color: #800000"&gt;ListView&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;RestaurnatDetails&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2:                         &lt;span style="color: #ff0000"&gt;EnableViewState&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DataSourceID&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;restaurantsDomainDataSource&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3:                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LayoutTemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;</description>
      <pubDate>Thu, 18 Mar 2010 13:00:02 CDT</pubDate>
      <guid isPermaLink="true">91d46819-8472-40ad-a661-2c78acb4018c:9975103</guid>
      <dc:creator>Brad Abrams</dc:creator>
    </item>
    <item>
      <title>Mix2010: Search Engine Optimization (SEO) for Microsoft Silverlight</title>
      <link>http://www.nofluffjuststuff.com/blog/brad_abrams/2010/03/mix2010_search_engine_optimization_seo_for_microsoft_silverlight?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I had a great time today in my &lt;a href="http://live.visitmix.com/MIX10/Sessions/CL50"&gt;Mix2010 session on SEO for Silverlight&lt;/a&gt;.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;You can find all the &lt;a href="http://brad_abrams.members.winisp.net/wwwroot/Projects/Mix10/SearchEngineOptimizationForMicrosoftSilverlight.pptx"&gt;slides (more than I was able to cover in the talk) here&lt;/a&gt;.&amp;#160; and the the full &lt;a href="http://blogs.msdn.com/brada/archive/2010/03/17/silverlight-4-ria-services-ready-for-business-search-engine-optimization-seo.aspx"&gt;play-by-play of the demo&lt;/a&gt; (include a link to the completed solution).&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;I started off talking why SEO matters&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix2010SearchEngineOptimizationSEOforMic_B74F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix2010SearchEngineOptimizationSEOforMic_B74F/image_thumb.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then I talked about three tips&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix2010SearchEngineOptimizationSEOforMic_B74F/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Mix2010SearchEngineOptimizationSEOforMic_B74F/image_thumb_1.png" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can view the site live by using Bing for &lt;a href="http://www.bing.com/search?q=my+foodie+Explorer+Cooking+Class+with+Joe..&amp;amp;src=IE-SearchBox&amp;amp;FORM=IE8SRC"&gt;“my foodie Explorer Cooking Class with Joe..”&lt;/a&gt; or &lt;a href="http://www.google.com/#hl=en&amp;amp;source=hp&amp;amp;q=my+foodie+Explorer+Cooking+Class+with+Joe..&amp;amp;btnG=Google+Search&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=my+foodie+Explorer+Cooking+Class+with+Joe..&amp;amp;fp=f55f94328208dcc1"&gt;the other guys search engine equally well&lt;/a&gt;.&amp;#160; ;-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9980684" width="1" height="1"&gt;</description>
      <pubDate>Thu, 18 Mar 2010 11:00:02 CDT</pubDate>
      <guid isPermaLink="true">91d46819-8472-40ad-a661-2c78acb4018c:9980684</guid>
      <dc:creator>Brad Abrams</dc:creator>
    </item>
    <item>
      <title>Walk for two minutes. Stop. Take a photo.</title>
      <link>http://www.nofluffjuststuff.com/blog/sean_kane/2010/03/walk_for_two_minutes_stop_take_a_photo_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Today&amp;#8217;s Daily Shoot assignment was as challenging as it was odd.  Today&amp;#8217;s assignment is:&lt;span style="font-style:italic;"&gt; Grab your camera and walk 2 minutes in any direction. Stop. Find a photo worth making from where you stopped and post it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The point of this is that there is probably an interesting subject anywhere, you just need to look for it.  After my two minute stroll at oDesk&amp;#8217;s office complex, I found myself surrounded by the 101 freeway, some uninteresting plants, grass, and the sign for the complex.  The sign has a piece of glass behind it to add some drama.  It also reflected the back of the sign nicely.  While not my favorite shot by any means, I am reasonably happy with it considering the constraints of this assignment.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://seankane.smugmug.com/Projects/DailyShoot/10869982_8jUq3#812716738_XTcRw"&gt;&lt;img class="alignnone" style="width:500px;height:328px;" title="Impromptu Shot" src="http://seankane.smugmug.com/Projects/DailyShoot/IMG3949/812716738_XTcRw-M.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/seankane.wordpress.com/805/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/seankane.wordpress.com/805/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/seankane.wordpress.com/805/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/seankane.wordpress.com/805/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/seankane.wordpress.com/805/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/seankane.wordpress.com/805/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/seankane.wordpress.com/805/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/seankane.wordpress.com/805/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/seankane.wordpress.com/805/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/seankane.wordpress.com/805/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=seankane.wordpress.com&amp;blog=407696&amp;post=805&amp;subd=seankane&amp;ref=&amp;feed=1" /&gt;</description>
      <pubDate>Thu, 18 Mar 2010 08:00:04 CDT</pubDate>
      <guid isPermaLink="true">http://seankane.wordpress.com/?p=805</guid>
      <dc:creator>Sean Kane</dc:creator>
    </item>
    <item>
      <title>View-Source Follow-Up</title>
      <link>http://www.nofluffjuststuff.com/blog/alex_russell/2010/03/view_source_follow_up?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;One of the points I made during &lt;a href="http://my.sxsw.com/events/event/5005" &gt;last Saturday&amp;#8217;s panel&lt;/a&gt; was that the further down the path we go with JavaScript, the more pressure there is to use it in ways that defeat view-source. Brendan &lt;a href="http://twitter.com/BrendanEich" &gt;called me out&lt;/a&gt; for seemingly not being aware of beautifiers which can help correct the imballance, but I think that response (while useful) is orthogonal to the thrust of my argument.&lt;/p&gt;
&lt;p&gt;Indeed, I hadn&amp;#8217;t personally used the excellent &lt;a href="http://jsbeautifier.org/" &gt;jsbeautifier.org&lt;/a&gt;, instead using my own hacked-up copy of Rhino to beautify when I need to, but neither tool sufficiently reverses the sorts of optimizations being employed by &lt;a rel="nofollow" href="http://code.google.com/webtoolkit/" &gt;GWT&lt;/a&gt; and the even more aggressive &lt;a rel="nofollow" href="http://code.google.com/closure/compiler/" &gt;Closure Compiler&lt;/a&gt;. Far from the mere obsfucation of &lt;a href="http://shrinksafe.dojotoolkit.org/" &gt;ShrinkSafe&lt;/a&gt; and it&amp;#8217;s brethren, these new compilers &lt;a rel="nofollow" href="http://code.google.com/closure/compiler/docs/api-tutorial3.html" &gt;apply multi-pass AST-based transforms on an entire body of code&lt;/a&gt;, performing per-browser optimizations, type-inference and annotation based optimizations, loop invariant hoisting, function inlining, dead-code removal, and global code motion optimizations that render the resulting executing code different not only in style but also in flow of control. The results are nothing short of stunning. The Closure Compiler can deliver code that&amp;#8217;s much, much smaller than I can wring out by hand and that performs better to boot. It&amp;#8217;s also totally unrecognizable. De-obsfucators have no hope in this strange land &amp;#8212; &lt;a rel="nofollow" href="http://code.google.com/closure/compiler/docs/inspector.html" &gt;brand new tools akin to symbol servers and WinDbg-style debuggers&lt;/a&gt; are needed to work with the output in a meaningful way. I argued in the panel and in the &lt;a href="http://alex.dojotoolkit.org/2010/01/view-source-is-good-discuss/#comments" &gt;comments of my last post on the topic&lt;/a&gt; that when we get to this place with JavaScript the product is functionally indistinguishable from a bytecode format like SWF or Java and the effects on the learning-lab nature of the open web are the same: less ability to easily share techniques, a smaller group of more professional users, and a heavier reliance on tooling for generating content.&lt;/p&gt;
&lt;p&gt;If we assume that the furthest down the code-centric path we&amp;#8217;ll go are the Dojo and JQuery style augmentations of existing content, then a simple de-obsfucator is sufficient. But I&amp;#8217;m afraid the current generation of high-end sites and apps points in a different direction, one that is less hopeful, and one that implies to a greater extent that the browsers must lead the way out of the wilderness by creating new tags and CSS properties to help re-democratize the process of creating applications. We&amp;#8217;ve already seen the alternatives, and while they may be elegant, they lack leverage and the second-order beneficial effects that have made the web as successful as it is today.&lt;/p&gt;
&lt;p&gt;If HTML is just another bytecode container and rendering runtime, we&amp;#8217;ll have lost part of what made the web special, and I&amp;#8217;m afraid HTML will lose to other formats by willingly giving up its differentiators and playing on their turf. Who knows, it might turn out well, but it&amp;#8217;s not a vision of the web that holds my interest.&lt;/p&gt;</description>
      <pubDate>Wed, 17 Mar 2010 16:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://alex.dojotoolkit.org/?p=1327</guid>
      <dc:creator>Alex Russell</dc:creator>
    </item>
    <item>
      <title>Why doesn’t (JPA, JMA, JTA, EJB, JSF, CDI) work? JEE is “Too Complicated”</title>
      <link>http://www.nofluffjuststuff.com/blog/lincoln_baxter_iii/2010/03/why_doesn_t_jpa_jma_jta_ejb_jsf_cdi_work_jee_is_too_complicated_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>First, before reading this &amp;#8211; you&amp;#8217;re going to be upset with me. You&amp;#8217;re going to disagree. I know &amp;#8212; it&amp;#8217;s OK. You may not even believe me, but you&amp;#8217;ll keep reading because anger might inspire action.&#xD;
&lt;br /&gt;Stop using Tomcat and wondering why JEE &amp;#8220;doesn&amp;#8217;t work.&amp;#8221;&#xD;
&lt;br /&gt;You&amp;#8217;re doing yourself a big disservice.&#xD;
&lt;br /&gt;Start thinking about GlassFish v3, or JBoss [...]</description>
      <pubDate>Wed, 17 Mar 2010 13:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://ocpsoft.com/?p=1147</guid>
      <dc:creator>Lincoln Baxter III</dc:creator>
    </item>
    <item>
      <title>Agile 2009 - Bob Martin - The software craftsmanship movement</title>
      <link>http://www.nofluffjuststuff.com/blog/robert_payne/2010/03/agile_2009__bob_martin__the_software_craftsmanship_movement?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Bob Martin and I chat about the software craftsmanship movement.&amp;nbsp; I missed this conference but know many of the people involved in it.&amp;nbsp; I suspect it was great.&lt;/p&gt;
&lt;p&gt;As always I enjoyed my conversation with Bob and hope you do as well.&lt;/p&gt;
&lt;p&gt;Enjoy.&lt;/p&gt;
&lt;p&gt;-bob payne&lt;/p&gt;</description>
      <pubDate>Wed, 17 Mar 2010 11:00:01 CDT</pubDate>
      <guid isPermaLink="true">http://agiletoolkit.libsyn.com/index.php?post_id=594182#</guid>
      <dc:creator>Bob Payne</dc:creator>
    </item>
    <item>
      <title>Apache Hadoop HBase plays nice with JPA</title>
      <link>http://www.nofluffjuststuff.com/blog/matthias__wessendorf_/2010/03/apache_hadoop_hbase_plays_nice_with_jpa?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;The Google AppEngine uses the Google BigTable implementation as it&amp;#8217;s storage system. Instead of only offering a native (and not so common) API to persist data they worked with the &lt;a href="http://www.datanucleus.org/"&gt;Datanucleus&lt;/a&gt; guys to get support for &lt;a href="http://code.google.com/appengine/docs/java/datastore/usingjpa.html"&gt;JPA&lt;/a&gt; and &lt;a href="http://code.google.com/appengine/docs/java/datastore/usingjdo.html"&gt;JDO&lt;/a&gt;. There are some restrictions for the usage, but generally folks that are aware of these APIs (especially JPA has a pretty adoption rate) can store their data on BIG_TABLE easily. Thanks to these (common) APIs&amp;#8230;&lt;/p&gt;
&lt;p&gt;Now, not everybody does want to host their application (and store the data) at Google. A decent alternative is using a &amp;#8220;home-grown&amp;#8221; system. The Big-Table implementation of &lt;a href="http://hadoop.apache.org/"&gt;Apache Hadoop&lt;/a&gt; &amp;#8220;&lt;a href="http://hadoop.apache.org/hbase/"&gt;HBase&amp;#8221;&lt;/a&gt;, can be used the same way! It is possible to easily use JDO/JPA (via Datanucleus) to persist objects in the HBase BigTable implementation. This is really good news!&lt;/p&gt;
&lt;p&gt;The installation of HBase is not too complicated. All the gotchas are documented in its &lt;a href="http://hadoop.apache.org/hbase/docs/current/api/overview-summary.html"&gt;documentation&lt;/a&gt;. So to start using HBase and JPA, just use a regular persistence.xml file, which lists your classes and the actual configuration, such as:&lt;/p&gt;
&lt;pre class="brush: java;"&gt;
&amp;lt;persistence...&amp;gt;
 &amp;lt;persistence-unit...&amp;gt;

 &amp;lt;class&amp;gt;net.wessendorf...&amp;lt;/class&amp;gt;
...

 &amp;lt;properties&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.ConnectionURL&amp;quot; value=&amp;quot;hbase&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.ConnectionUserName&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.ConnectionPassword&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.autoCreateSchema&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.validateTables&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.Optimistic&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;
 &amp;lt;property name=&amp;quot;datanucleus.validateConstraints&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;
 &amp;lt;/properties&amp;gt;

 &amp;lt;/persistence-unit&amp;gt;
&amp;lt;/persistence&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Your Entities are almost &amp;#8220;normal&amp;#8221;, but there are some restrictions are as well (like managing the @Id)&amp;#8230; But generally, just annotated your class with @Entity and deal with the limitations. Once the data-model is done, you could (naivly) start using the EntityManager like:&lt;/p&gt;
&lt;pre class="brush: java;"&gt;
EntityManagerFactory emf = Persistence.createEntityManagerFactory(...);
EntityManager entityManager = emf.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();

entityManager.persist(myJPAentity);

entityTransaction.commit();
&lt;/pre&gt;
&lt;p&gt;But the best way (as generally with JPA) is to move that JPA-dealing code into a DataAccessObject&amp;#8230; But this is not new and well-known&amp;#8230;&lt;/p&gt;
&lt;p&gt;During your (maven) build you have to do byte-code enhancing of the actual classes. The DataNucleus guys offer a decent maven-plugin for that:&lt;/p&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;plugin&amp;gt;
 &amp;lt;groupId&amp;gt;org.datanucleus&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;maven-datanucleus-plugin&amp;lt;/artifactId&amp;gt;
 &amp;lt;version&amp;gt;2.0.0-release&amp;lt;/version&amp;gt;
 &amp;lt;configuration&amp;gt;
 &amp;lt;log4jConfiguration&amp;gt;${basedir}/log4j.properties&amp;lt;/log4jConfiguration&amp;gt;
 &amp;lt;verbose&amp;gt;true&amp;lt;/verbose&amp;gt;
 &amp;lt;api&amp;gt;JPA&amp;lt;/api&amp;gt;
 &amp;lt;persistenceUnitName&amp;gt;nameOfyourPU&amp;lt;/persistenceUnitName&amp;gt;
 &amp;lt;/configuration&amp;gt;
 &amp;lt;executions&amp;gt;
 &amp;lt;execution&amp;gt;
 &amp;lt;phase&amp;gt;compile&amp;lt;/phase&amp;gt;
 &amp;lt;goals&amp;gt;
 &amp;lt;goal&amp;gt;enhance&amp;lt;/goal&amp;gt;
 &amp;lt;/goals&amp;gt;
 &amp;lt;/execution&amp;gt;
 &amp;lt;/executions&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Now you should be good to go. I wrote a JSF/MyFaces application that uses the DataNucleus JPA-API to store and read objects from Apache HBase. I will make the code available soon&amp;#8230; But the above snippet give you an idea on how to configure the stuff, if you are interested in using JPA (or JDO) with the Apache Hadoop HBase project.&lt;/p&gt;
&lt;p&gt;Generally the combination for these two is pretty interesting, especially when doing hosting for &amp;#8220;regular&amp;#8221; JavaEE applications, which mostly will use JPA for its storage API, nowadays. So basically the integration of this and a &amp;#8220;normal&amp;#8221; JavaEE application is not too complicated. There is also the Spring Framework. Currently there is no&lt;a href="http://jira.springframework.org/browse/SPR-6539"&gt; explicit support&lt;/a&gt; for the DataNucleus JPA/JDO, but I saw some &lt;a href="http://www.xaloon.org/blog/vytautas.racelis/jpa-spring-wicket-google-app-engine"&gt;blog talking about Spring and the AppEngine&lt;/a&gt;. So integration there is possible too&amp;#8230; Perhaps the mentioned &amp;#8220;issue&amp;#8221; get&amp;#8217;s fixed soon as well &lt;img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; It is possible to use the &amp;#8220;native&amp;#8221; HBase-API to read/store data to a JPA/JDO managed HBase &amp;#8220;table&amp;#8221;, but you need some code that is not so straightforward on the first look&amp;#8230;, as the datanucleus plugin/JPA-impl uses some class-based metadata to manage the table, the column-familiy and its qualifiers. I have some sample code for that as well. With some love of _reflection_ you can get it done in a generic way (I will post an example soon).&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matthiaswessendorf.wordpress.com/311/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matthiaswessendorf.wordpress.com/311/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matthiaswessendorf.wordpress.com/311/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matthiaswessendorf.wordpress.com/311/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matthiaswessendorf.wordpress.com/311/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matthiaswessendorf.wordpress.com/311/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matthiaswessendorf.wordpress.com/311/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matthiaswessendorf.wordpress.com/311/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matthiaswessendorf.wordpress.com/311/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matthiaswessendorf.wordpress.com/311/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matthiaswessendorf.wordpress.com&amp;blog=1129660&amp;post=311&amp;subd=matthiaswessendorf&amp;ref=&amp;feed=1" /&gt;</description>
      <pubDate>Wed, 17 Mar 2010 08:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://matthiaswessendorf.wordpress.com/?p=311</guid>
      <dc:creator>Matthias  Wessendorf</dc:creator>
    </item>
    <item>
      <title>Spammers apparently have a new method of grit</title>
      <link>http://www.nofluffjuststuff.com/blog/andrew_lombardi/2010/03/spammers_apparently_have_a_new_method_of_grit?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>I&amp;#8217;m currently in Europe speaking at Scandevconf.SE.  And apparently some spammers have copied legitimate emails that I&amp;#8217;ve sent to mailing lists with a signature line containing company phone numbers, and used this as seed content to pass through the usually pretty good spam filters.
Ordinarily this wouldn&amp;#8217;t be against the norm for spammer sewer sludge, [...]&lt;img src="http://feeds.feedburner.com/~r/mysticcoders/~4/6BtP-65Y2uU" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 16 Mar 2010 16:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://www.mysticcoders.com/?p=1394</guid>
      <dc:creator>Andrew Lombardi</dc:creator>
    </item>
    <item>
      <title>Wage Cost and Project Labor Cost</title>
      <link>http://www.nofluffjuststuff.com/blog/johanna_rothman/2010/03/wage_cost_and_project_labor_cost?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;I&amp;#8217;ve been working with teams who want to move to agile. Some people on their teams are in another location, where the salaries are cheaper.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s difficult to get agile started with a geographically distributed team. If everyone&amp;#8217;s distributed, it&amp;#8217;s easier than if just some people&amp;#8211;especially if they are all one function, such as developers or testers&amp;#8211;are. Or, if the people on the team know what it&amp;#8217;s like to work in a highly collaborative environment, it&amp;#8217;s ok, but not as good as when everyone is all together in one location.&lt;/p&gt;
&lt;p&gt;The problem is that many managers have confused wage cost with project labor cost. Wage cost is a part of run rate, what it costs to keep the project alive for a week at at time. Yes, cheaper salaries will reduce the project run rate.&lt;/p&gt;
&lt;p&gt;The problem is: what happens if the geographically distributed project takes longer to deliver the project? My experience says that all the geographically distributed projects I&amp;#8217;ve met take longer to complete. The lack of being all in one place made a particular team take longer to deliver running, tested features. Here&amp;#8217;s an annotated value stream map that represents this organization&amp;#8217;s delays:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jrothman.com/blog/mpd/wp-content/uploads/2010/03/value.stream.map_.remote.people.jpg"&gt;&lt;img class="alignleft size-medium wp-image-9065" title="value.stream.map.remote.people" src="http://jrothman.com/blog/mpd/wp-content/uploads/2010/03/value.stream.map_.remote.people-300x174.jpg" alt="Value Stream Map" width="300" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wage cost is certainly lower in some parts of the world. But the only measure of productivity is running, tested features. If your project team takes longer to complete features, then you have a larger project cost.&lt;/p&gt;
&lt;p&gt;Before everyone gets so excited about bits and pieces of remote team members, ask yourself, &amp;#8220;Are we building in delays that will cause us to take longer to complete running, tested features? What will those delays cost us?&amp;#8221; Now you can start to look at wage and project cost and make decisions that will make sense for &lt;strong&gt;your&lt;/strong&gt; team&amp;#8211;whether that means moving to agile or not.&lt;/p&gt;
&lt;p align="left"&gt;&lt;a class="tt" href="http://twitter.com/home/?status=Wage+Cost+and+Project+Labor+Cost+http://rcx9n.th8.us" title="Post to Twitter"&gt;&lt;img class="nothumb" src="http://jrothman.com/blog/mpd/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /&gt;&lt;/a&gt; &lt;a class="tt" href="http://twitter.com/home/?status=Wage+Cost+and+Project+Labor+Cost+http://rcx9n.th8.us" title="Post to Twitter"&gt;Tweet This Post&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=xXOnfHEzANE:LklZ6h4QPlU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=xXOnfHEzANE:LklZ6h4QPlU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=xXOnfHEzANE:LklZ6h4QPlU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/xXOnfHEzANE" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 16 Mar 2010 13:00:08 CDT</pubDate>
      <guid isPermaLink="true">http://jrothman.com/blog/mpd/?p=9043</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Dining room table is shaping up [Flickr]</title>
      <link>http://www.nofluffjuststuff.com/blog/aaron_gustafson/2010/03/dining_room_table_is_shaping_up_flickr_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/aarongustafson/"&gt;Aaron Gustafson&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aarongustafson/4437649017/" title="Dining room table is shaping up"&gt;&lt;img src="http://farm3.static.flickr.com/2722/4437649017_c6f89f11dd_m.jpg" width="240" height="192" alt="Dining room table is shaping up" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EasyReader/~4/rs_ud-nK6rc" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 16 Mar 2010 11:00:11 CDT</pubDate>
      <guid isPermaLink="true">tag:flickr.com,2005:/photo/4437649017</guid>
      <dc:creator>Aaron Gustafson</dc:creator>
    </item>
    <item>
      <title>Silverlight 4 + RIA Services - Ready for Business: Consuming Data in the Silverlight Client</title>
      <link>http://www.nofluffjuststuff.com/blog/brad_abrams/2010/03/silverlight_4__ria_services__ready_for_business_consuming_data_in_the_silverlight_client?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;To &lt;a href="http://blogs.msdn.com/brada/archive/2010/03/15/silverlight-4-ria-services-ready-for-business-index.aspx"&gt;continue our series&lt;/a&gt;, let’s see where the fun comes in my look at how easy that is to consume from the client.&amp;#160; First just to help you understand what is happening behind the covers, let’s look at a code-behind solution.&amp;#160; In View\Home.xaml put a simple DataGrid on the form.&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;sdk&lt;/span&gt;:&lt;span style="color: #800000"&gt;DataGrid&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;dataGrid1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;152&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;692&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Then add these lines of code to Home.xaml.cs&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  1: var context = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DishViewDomainContext();
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  2: &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.dataGrid1.ItemsSource = context.Restaurants;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  4: context.Load(context.GetRestaurantsQuery());
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  5: &lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;In line 1, we create a DishViewDomainContext… notice this is the automatically generated (via an MSBuild task) from the DishViewDomainService on the server.&amp;#160; &lt;/p&gt;

&lt;p&gt;In line 2, Notice we have a Restaurants property – we provide this because there is at least one query method that returns restaurants.&amp;#160; Notice the cool binding magic, we have not yet populated this data from the server, but we go ahead and bind it.&amp;#160; This avoids any kind of complex callback logic.&amp;#160; &lt;/p&gt;

&lt;p&gt;In line 4, we explicitly load the data.. this is the network call, so we want to make sure it is clear to the developer when this happening.&amp;#160;&amp;#160; As an argument we pass exactly which query method (and any arguments) to use. &lt;/p&gt;

&lt;p&gt;Now we run it and we get our data.. &lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[42].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[20]" border="0" alt="image_thumb[20]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B20%5D_09e30fb9-78ad-43ac-996f-e9b6301cf23a.png" width="244" height="119" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Very painless, but it gets even easier ;-)&lt;/p&gt;

&lt;p&gt;Go and in delete this code and the Xaml..&amp;#160; Then notice the DataSources window&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[172].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[80]" border="0" alt="image_thumb[80]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B80%5D_51085374-3f81-46b3-9736-1ae3a689cdcc.png" width="320" height="113" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[48].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[22]" border="0" alt="image_thumb[22]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B22%5D_7c4819ed-f367-497f-843a-88007982a098.png" width="204" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Notice this is simply a visual representation of exactly what we were doing in code.&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[51].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[23]" border="0" alt="image_thumb[23]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B23%5D_a21c3679-4c20-409e-b27d-e8c1390b33fc.png" width="231" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Notice i can change what default UI to generate and which query method to use.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Dragging Restaurants to the form and bingo, we have our data. &lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[56].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[26]" border="0" alt="image_thumb[26]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B26%5D_c9bea7d5-f5c0-4387-92c1-d27702841db4.png" width="244" height="119" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Run it and we have our data… what could be easier?&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[60].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[28]" border="0" alt="image_thumb[28]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B28%5D_2e040b8b-cf4a-46a3-b5af-1631d9371aca.png" width="244" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Click on the column headers – notice sorting works!&amp;#160; There is no code you had to write on the client or server to enable it.&amp;#160; This just comes for free out of returning an IQuerable.&amp;#160; &lt;/p&gt;

&lt;p&gt;Now let’s add paging.. &lt;/p&gt;

&lt;p&gt;First we drag and drop the DataPager control to the form, then do a bit of layout and we end up with something that looks nice&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[63].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[29]" border="0" alt="image_thumb[29]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B29%5D_d6c9a067-f9e2-46ce-a86b-eca5ee9ede3a.png" width="244" height="122" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;But we still need to wireup the DataPager to the same underlying DataSource.&amp;#160; This is easy enough done by draging and dropping the same Restaurant element from the DataSources window to the DataPager.&amp;#160; You will now you did this right if the DataPager becomes enabled.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[70].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[32]" border="0" alt="image_thumb[32]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B32%5D_0222be4a-e30c-4d71-83bb-adae068c9937.png" width="244" height="121" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[74].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[34]" border="0" alt="image_thumb[34]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B34%5D_5772ae1b-6285-4bdb-a655-f43263796f55.png" width="244" height="151" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Notice that paging works great!&amp;#160; No code needed on the client or the server, again, all done through using that simple Linq query we wrote on the server. But what about paging AND sorting… do they work well together?&amp;#160; Will it just sort the page of data that is loaded locally?&amp;#160; The answer of course is that sorting and paging compose nicely together and the sort is actually sent all the way to the data tier and executed there in a very efficient way.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Now let’s add filtering.&amp;#160; With just a bit more work in the UI, we can add a way to filter by postal code.&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;sdk&lt;/span&gt;:&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;label1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Postal Code:&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;FontSize&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;14&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;0,0,462,13&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBox&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;23&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;HorizontalAlignment&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Margin&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;110,12,0,0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;postalCodeTextbox&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;VerticalAlignment&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Top&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;120&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[78].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[36]" border="0" alt="image_thumb[36]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B36%5D_3f539b56-17f9-4529-aefe-6c852f11b7c5.png" width="244" height="80" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Then we need to wire this up to the query.&amp;#160; Of course we want the filter applied as close to the data as possible.&amp;#160; We don’t want to download all the entities locally, then filter, nor do we want to pull them all to the middle-tier and then filter.&amp;#160; What we want is for the filter to be applied at the database level.&amp;#160; Luckily this is very easy to do with LINQ composition.&amp;#160; &lt;/p&gt;

&lt;p&gt;First we select the DomainDataSource in the Document Outline view.&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[81].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[37]" border="0" alt="image_thumb[37]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B37%5D_f89ab7de-c999-43d4-8555-02f311042a77.png" width="232" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[84].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[38]" border="0" alt="image_thumb[38]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B38%5D_e40b9599-0078-41ca-8bd6-40f6b351677d.png" width="244" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[88].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[40]" border="0" alt="image_thumb[40]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B40%5D_44c34c14-e265-4bf5-ba10-92cb0cf03692.png" width="244" height="149" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Operator – typically you should set this to “Contains”.&amp;#160; If you use the default of “IsEqualTo” the first load (when there is no filter) will result in no results returned.&amp;#160; &lt;br /&gt;PropertyPath – this is the property on the entity that you are filtering on… Just type in the simple name.&amp;#160; &lt;br /&gt;Value – this is where to get the value to compare from.&amp;#160; It is easiest to do UI-to-UI binding to the TextBox’s Text property.&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[92].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[42]" border="0" alt="image_thumb[42]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B42%5D_11e77059-9749-4c40-9b7d-b0583059ba6c.png" width="244" height="149" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Here is the dialog once we are done:&lt;/p&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[96].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[44]" border="0" alt="image_thumb[44]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B44%5D_f49870dd-dbe2-4208-a7c4-4681c00d7ecf.png" width="244" height="149" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And the resulting Xaml:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;restaurantDomainDataSource&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;AutoLoad&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;True&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                      &lt;span style="color: #ff0000"&gt;d&lt;/span&gt;:&lt;span style="color: #ff0000"&gt;DesignData&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;{d:DesignInstance my:Restaurant, 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                                     CreateList=true}&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                      &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;  &lt;span style="color: #ff0000"&gt;Width&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                      &lt;span style="color: #ff0000"&gt;LoadedData&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;restaurantDomainDataSource_LoadedData_1&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                      &lt;span style="color: #ff0000"&gt;QueryName&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;GetRestaurantsQuery&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource.FilterDescriptors&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;FilterDescriptor&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Operator&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Contains&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                              &lt;span style="color: #ff0000"&gt;PropertyPath&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;PostalCode&amp;quot;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                                              &lt;span style="color: #ff0000"&gt;Value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;{Binding ElementName=postalCodeTextbox, Path=Text}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource.FilterDescriptors&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c71585"&gt;my&lt;/span&gt;:&lt;span style="color: #800000"&gt;DishViewDomainContext&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c71585"&gt;riaControls&lt;/span&gt;:&lt;span style="color: #800000"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="file:///C:/Users/brada/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles289814C/image[101].png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_thumb[47]" border="0" alt="image_thumb[47]" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Silverlight4RIAServicesReadyforBusinessC_9F6E/image_thumb%5B47%5D_3656c10b-132a-4867-a536-2a4f6bbe08fb.png" width="244" height="161" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Notice no code changes at all, and no changes to the business logic in the DomainService in particular.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9974983" width="1" height="1"&gt;</description>
      <pubDate>Tue, 16 Mar 2010 08:00:02 CDT</pubDate>
      <guid isPermaLink="true">91d46819-8472-40ad-a661-2c78acb4018c:9974983</guid>
      <dc:creator>Brad Abrams</dc:creator>
    </item>
    <item>
      <title>JavaFX plug-in for Eclipse: suggest features, try nightly builds</title>
      <link>http://www.nofluffjuststuff.com/blog/max_katz/2010/03/javafx_plug_in_for_eclipse_suggest_features_try_nightly_builds?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;With the launch of&lt;a href="http://www.exadel.org"&gt; exadel.org&lt;/a&gt;, it&amp;#8217;s now very easy to try &lt;a href="http://exadel.org/javafxplugin"&gt;nightly builds&lt;/a&gt; of JavaFX plug-in for Eclipse, and &lt;a href="http://jira.exadel.org/"&gt;view and submit new bugs&lt;/a&gt;. Using &lt;a href="http://jira.exadel.org/"&gt;Jira&lt;/a&gt; (or the &lt;a href="http://exadel.org/forum"&gt;forum&lt;/a&gt;), you can tell us what features you would like to see in JavaFX plug-in for Eclipse. Our plan is to have a very short release cycle, around 2 weeks. We will fix bugs and add a few minor features each release. Let us know what features you would like to see!&lt;/p&gt;</description>
      <pubDate>Mon, 15 Mar 2010 16:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://mkblog.exadel.com/?p=1388</guid>
      <dc:creator>Max Katz</dc:creator>
    </item>
    <item>
      <title>Greater Illinois Software Symposium - Apr 9 - 10, 2010</title>
      <link>http://www.nofluffjuststuff.com/conference/bloomington/2010/04/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss</link>
      <description>&lt;div style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 10pt;"&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
No Fluff Just Stuff is pleased to announce the &lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/bloomington/2010/04/home?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Greater Illinois Software Symposium&lt;/a&gt;, Apr 9 - 10, 2010.&#xD;
&lt;/p&gt;&#xD;
&#xD;
	&lt;div style="background-color: #0860A9; color: #EFCE52; font-weight: bold; padding: 5px 5px 5px 5px;"&gt;&#xD;
		&lt;em&gt;Catch these Featured Sessions&lt;/em&gt;&#xD;
	&lt;/div&gt;&#xD;
&#xD;
	&lt;div style="border: 1px solid #999999; padding: 0 5px 0 5px;"&gt;&#xD;
&#xD;
	&lt;table cellpadding="0" cellspacing="0" style="font-size: 10pt;"&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/bloomington/2010/04/session?id=17020?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Slaying the Legacy Dragon: Practical Lessons in Replacing Old Software&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Tim Berglund&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/tim_berglund?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/26273_Berglund_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				It's a given that everyone hates the legacy application and wants to replace it. You're tired of the brittle, untested code, the outdated frameworks, the platform nobody cares about anymore. You want to apply current practices and the productivity gains of today's tools. Usually this is just a frustrated dream, but every once in a while, you actually get to do it. That's great news, but it raises a question: how do you...do that?&#xD;
&#xD;
&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/bloomington/2010/04/session?id=16991?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Implementing Evolutionary Architecture&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Neal Ford&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/neal_ford?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/21_Ford_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				This talk describes an agile approach to architecture, and merges the current state-of-the-art thinking in both service oriented architectures(SOA) and web-based architectures like HTTP, REST, and hypermedia.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;tr&gt;&#xD;
		&lt;td&gt;&#xD;
&#xD;
		&lt;div style="margin: 5px 0 4px 0;"&gt;&#xD;
			&lt;b&gt;&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/bloomington/2010/04/session?id=16950?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;Encryption on the JVM: Boot Camp&lt;/a&gt;&lt;/b&gt;&#xD;
			&lt;br /&gt;&lt;em&gt;by Matthew McCullough&lt;/em&gt;&#xD;
		&lt;/div&gt;&#xD;
&#xD;
					&lt;a style="color: #336699; text-decoration: none;" href="http://www.nofluffjuststuff.com/conference/speaker/matthew_mccullough?utm_source=showWeeks4&amp;utm_medium=rss&amp;utm_campaign=showrss" target="new"&gt;&#xD;
				&lt;img src="http://www.nofluffjuststuff.com//s/images/bio/9793_McCullough_medium.jpg" width="100" border="0" align="left" style="margin: 5 5 5 5;"/&gt;&#xD;
			&lt;/a&gt;&#xD;
				Does your application transmit customer information?  Are there fields of sensitive customer data stored in your DB?  Can your application be used on insecure networks?  If so, you need a working knowledge of encryption and how to leverage Open Source APIs and libraries to make securing your data as easy as possible.  Encryption is quickly becoming a developer's new frontier of responsibility in many data-centric applications.&#xD;
		&#xD;
			&lt;br style="clear: both; font: 1px/1px Arial;"/&gt;&#xD;
&#xD;
		&lt;/td&gt;&#xD;
	&lt;/tr&gt;&#xD;
&#xD;
	&#xD;
	&lt;/table&gt;&#xD;
&#xD;
	&lt;/div&gt;&#xD;
&#xD;
&lt;/div&gt;</description>
      <pubDate>Mon, 15 Mar 2010 15:00:00 CDT</pubDate>
      <guid isPermaLink="true">http://www.nofluffjuststuff.com/conference/bloomington/2010/04/schedule</guid>
    </item>
    <item>
      <title>Procrastination and JavaOne 2010: See you in 2011!</title>
      <link>http://www.nofluffjuststuff.com/blog/howard_lewis_ship/2010/03/procrastination_and_javaone_2010_see_you_in_2011_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Well, that's what I get for waiting until the last day ... by the time I had a chance to put together a submission or two for JavaOne 2010, the site was down (from about 10pm on). Kind of frustrating, I was looking forward to talking about Tapestry and Clojure (my main speaking staples) in front of another big crowd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4110180-7169931906856834633?l=tapestryjava.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TapestryCentral/~4/lilxGl2snLg" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 15 Mar 2010 13:00:02 CDT</pubDate>
      <guid isPermaLink="true">tag:blogger.com,1999:blog-4110180.post-7169931906856834633</guid>
      <dc:creator>Howard Lewis Ship</dc:creator>
    </item>
    <item>
      <title>An SJC Morning</title>
      <link>http://www.nofluffjuststuff.com/blog/sean_kane/2010/03/an_sjc_morning?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;&lt;a href="http://seankane.smugmug.com/Projects/DailyShoot/10869982_8jUq3#809519918_duNT3"&gt;&lt;img class="alignnone" title="SJC Morning Light" src="http://seankane.smugmug.com/Projects/DailyShoot/IMG3412/809519918_duNT3-M.jpg" alt="" width="500" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Friday morning I had a bit of time to kill in the new terminal at San Jose International Airport.   The architectural details are interesting, and the light coming in from the skylights made for this interesting shot with a bit of a skewed perspective for added interest.  This is also Daily Shoot Assignment 118 &amp;#8211; &lt;em&gt;Curves, squiggles, and flowing lines interest the eye. Make a photograph dominated by a curvy shape of some sort today.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://seankane.smugmug.com/Photography/Recent-Shots/10870898_9dyia#810255057_QqPUQ"&gt;&lt;img class="alignnone" title="Waiting to Fly" src="http://seankane.smugmug.com/Photography/Recent-Shots/IMG3411/810255057_QqPUQ-L.jpg" alt="" width="500" height="585" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Waiting to Fly&lt;/p&gt;
&lt;p&gt;&lt;a href="http://seankane.smugmug.com/Photography/Recent-Shots/10870898_9dyia#810260657_qNgFS"&gt;&lt;img class="alignnone" title="Disconnect" src="http://seankane.smugmug.com/Photography/Recent-Shots/IMG3436/810260657_qNgFS-L.jpg" alt="" width="465" height="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Disconnect&lt;/p&gt;
&lt;p&gt;&lt;a href="http://seankane.smugmug.com/Photography/Recent-Shots/10870898_9dyia#810262222_Ai6u7"&gt;&lt;img class="alignnone" title="Takeoff" src="http://seankane.smugmug.com/Photography/Recent-Shots/IMG3445/810262222_Ai6u7-M.jpg" alt="" width="500" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Takeoff&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/seankane.wordpress.com/797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/seankane.wordpress.com/797/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/seankane.wordpress.com/797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/seankane.wordpress.com/797/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/seankane.wordpress.com/797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/seankane.wordpress.com/797/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/seankane.wordpress.com/797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/seankane.wordpress.com/797/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/seankane.wordpress.com/797/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/seankane.wordpress.com/797/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=seankane.wordpress.com&amp;blog=407696&amp;post=797&amp;subd=seankane&amp;ref=&amp;feed=1" /&gt;</description>
      <pubDate>Mon, 15 Mar 2010 11:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://seankane.wordpress.com/?p=797</guid>
      <dc:creator>Sean Kane</dc:creator>
    </item>
    <item>
      <title>Community Liaison</title>
      <link>http://www.nofluffjuststuff.com/blog/pete_muir/2010/03/community_liaison?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description />
      <pubDate>Mon, 15 Mar 2010 08:00:03 CDT</pubDate>
      <guid isPermaLink="true">http://in.relation.to/Bloggers/CommunityLiaison</guid>
      <dc:creator>Pete Muir</dc:creator>
    </item>
    <item>
      <title>Lovely Review of Manage Your Project Portfolio</title>
      <link>http://www.nofluffjuststuff.com/blog/johanna_rothman/2010/03/lovely_review_of_manage_your_project_portfolio?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Steve Berczuk has a lovely discussion of &lt;a href="http://steveberczuk.blogspot.com/2010/03/agile-portfolio-management.html" target="_blank"&gt;Manage Your Project Portfolio&lt;/a&gt;. You can see his review &lt;a href="http://www.berczuk.com/bookstore/all.html#1934356298" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p align="left"&gt;&lt;a class="tt" href="http://twitter.com/home/?status=Lovely+Review+of+Manage+Your+Project+Portfolio+http://rzah8.th8.us" title="Post to Twitter"&gt;&lt;img class="nothumb" src="http://jrothman.com/blog/mpd/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /&gt;&lt;/a&gt; &lt;a class="tt" href="http://twitter.com/home/?status=Lovely+Review+of+Manage+Your+Project+Portfolio+http://rzah8.th8.us" title="Post to Twitter"&gt;Tweet This Post&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=C68_IQgcnxM:OwO_jqMTuyg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?i=C68_IQgcnxM:OwO_jqMTuyg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?a=C68_IQgcnxM:OwO_jqMTuyg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ManagingProductDevelopment?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ManagingProductDevelopment/~4/C68_IQgcnxM" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 14 Mar 2010 13:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://jrothman.com/blog/mpd/?p=9057</guid>
      <dc:creator>Johanna Rothman</dc:creator>
    </item>
    <item>
      <title>Open Source Your Project (with Jasig)</title>
      <link>http://www.nofluffjuststuff.com/blog/john_lewis/2010/03/open_source_your_project_with_jasig_?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>&lt;p&gt;Here is the full screencast from my Jasig 2010 Conference Session on "Open Sourcing Your Project (with Jasig)". Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.unicon.net/node/1368"&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 14 Mar 2010 11:00:04 CDT</pubDate>
      <guid isPermaLink="true">1368 at http://www.unicon.net</guid>
      <dc:creator>John Lewis</dc:creator>
    </item>
    <item>
      <title>Live from DrupalCamp Nashville</title>
      <link>http://www.nofluffjuststuff.com/blog/cal_evans/2010/03/live_from_drupalcamp_nashville?utm_source=blogitem&amp;utm_medium=rss&amp;utm_campaign=blogrss</link>
      <description>Dear Reader, I&amp;#8217;m sitting here in a session at DrupalCamp Nashville on the Vandy campus. The day has been great and the Nashville Drupelars should be commended for running such a great camp. From a conference organizer PoV, this camp has run smoothly. The Wi-Fi is rock solid, the sessions start on time and the [...]&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?a=1j6zUHOLZmA:S2WM0HTQKQQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?a=1j6zUHOLZmA:S2WM0HTQKQQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?a=1j6zUHOLZmA:S2WM0HTQKQQ:aKCwKftKxY0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?i=1j6zUHOLZmA:S2WM0HTQKQQ:aKCwKftKxY0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?a=1j6zUHOLZmA:S2WM0HTQKQQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?a=1j6zUHOLZmA:S2WM0HTQKQQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PostcardsFromMyLife?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PostcardsFromMyLife/~4/1j6zUHOLZmA" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 14 Mar 2010 08:00:02 CDT</pubDate>
      <guid isPermaLink="true">http://blog.calevans.com/?p=1536</guid>
      <dc:creator>Cal Evans</dc:creator>
    </item>
  </channel>
</rss>

