<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with MVC</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/mvc/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with MVC</title>
      <link>http://channel9.msdn.com/Tags/mvc</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/mvc</link>
    <language>en</language>
    <pubDate>Sat, 25 May 2013 07:03:09 GMT</pubDate>
    <lastBuildDate>Sat, 25 May 2013 07:03:09 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>44</c9:totalResults>
    <c9:pageCount>2</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>Dynamic Lockscreen Changer for Windows Phone 8, Built With ASP.NET MVC and Azure Mobile Services</title>
      <description><![CDATA[<p>With the release of Windows Phone 8, <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206968%28v=vs.105%29.aspx">a few new developer API</a> endpoints were made available that allow third-party applications to change the device lockscreen image. In this article, I am establishing the infrastructure and building a mobile application that provides the ability to choose from a number of dynamic image sets, from which images can be selected and then cycled as lockscreen wallpapers.</p><h1>What do you need</h1><p>You will need to download and install <a href="http://www.asp.net/mvc/mvc3">ASP.NET MVC3</a> to work on the web frontend and <a href="http://dev.windowsphone.com/en-us/downloadsdk">Windows Phone 8 SDK</a> to work on the mobile applications. An <a href="http://www.windowsazure.com/en-us/develop/mobile/">Azure Mobile Services</a> account will be necessary, and of course don’t forget to download and install the <a href="http://www.windowsazure.com/en-us/develop/mobile/developer-tools/">Azure Mobile Services client libraries</a>. All three components are available at no additional charge.</p><p><strong>NOTE:</strong> <em>Without the Azure Mobile Services SDK installed on the development machine, the compilation process will fail for the Windows Phone application.</em></p><h1>Setting up The Data Store</h1><p>First we need to establish the general design of the application and organize the workflow. The application will provide two ways to assign the dynamic lockscreen:</p><ul><li>With the help of custom image sets that are provided by the service; </li><li>With the help of self-created image sets, aggregated from images provided by the service but ultimately managed by the end-user. </li></ul><p>Let’s talk about the general data model. Every image belongs to a certain category and to keep track of each we need a table with two columns—category ID and category name. We also need another core table containing the image references themselves, with the following columns: image URL, descriptive name, and the category ID to which it belongs. The overall structure looks like this:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image001%5B7%5D.png"><img title="clip_image001" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image001_thumb%5B4%5D.png" alt="clip_image001" width="321" height="141" border="0"></a></p><p>Now to the Windows Azure Management Portal and creating a new Mobile Service.</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image003%5B5%5D.jpg"><img title="clip_image003" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image003_thumb%5B2%5D.jpg" alt="clip_image003" width="560" height="387" border="0"></a></p><p>Once created, you need to specify database information, just like you would with a standard SQL Server database:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image005%5B6%5D.jpg"><img title="clip_image005" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image005_thumb%5B3%5D.jpg" alt="clip_image005" width="564" height="368" border="0"></a></p><p>As the database is being created, you can easily integrate it with SQL Server Management Studio. You will need the server address, which may be obtained in the Azure Management Portal. To login, use the credentials that you set when creating the core database.</p><p>Create the two tables mentioned above, with the following column configuration:</p><p><strong>Categories</strong></p><ul><li>ID - <strong>int</strong> </li><li>Name – <strong>varchar(100)</strong> </li></ul><p><strong>Images</strong></p><ul><li>ID – <strong>int</strong> </li><li>URL – <strong>varchar(500)</strong> </li><li>Name – <strong>varchar(100)</strong> </li><li>CategoryID – <strong>int</strong> </li></ul><p>You can create these tables either in the SQL Server Management Studio or through the Azure Management Portal. However, you will need the Management Studio to create the column structure, as the Azure Management Portal does not offer this functionality right now.</p><p>By default, the <strong>id</strong> column will be created automatically. To add the Name column to the Categories table, run this query:</p><p><pre class="brush: sql">
ALTER TABLE c4flockscreen.Categories
ADD Name VARCHAR(100)
</pre></p><p>To add the missing columns to the Images table, simply execute this query:</p><p><pre class="brush: sql">
ALTER TABLE c4flockscreen.Images
ADD URL VARCHAR(500),
Name VARCHAR(100),
CategoryID INT
</pre></p><p>Now that the database is ready, we’ll proceed to working on the web layer, which will effectively be the administrative portal for the service.</p><h1>Creating the Web Portal</h1><p>There should be a way to easily manage images and constantly expand the collection of possible lockscreen wallpapers. One way to do this is create a basic management portal that can carry basic CRUD operations.</p><p>Start by creating an empty project:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image007%5B5%5D.jpg"><img title="clip_image007" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image007_thumb%5B2%5D.jpg" alt="clip_image007" width="321" height="291" border="0"></a></p><p>If you are not yet aware of the Model-View-Controller (MVC) development pattern, <a href="http://msdn.microsoft.com/en-us/library/ff649643.aspx">here is a good read</a> explaining the fundamentals.</p><p>Create a new controller in the <strong>Controllers</strong> folder, named <strong>HomeController</strong>. This will be the only controller created in this project. For now, add an <a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.actionresult%28v=vs.108%29.aspx">ActionResult</a>-based function that will return the main view:</p><p><pre class="brush: csharp">
using System.Web.Mvc;

namespace Coding4Fun.Lockscreen.Web.Controllers
{
    public class HomeController : Controller    
    {    
        public ActionResult MainView()    
        {    
            return View();    
        }
    }
}
</pre></p><p>Having the controller without the proper views is pointless, so create a new view in <strong>Views/Home</strong> and name it <strong>MainView</strong>. For now, do not focus on the visual layout of the page, but rather on the functional aspect of the web frontend. If you run the application now, you will most likely get a 404 response. That is because the associated home view is by default not found. Open <strong>App_Start/RouteConfig.cs</strong> and make sure that the default view is set to <strong>MainView</strong> instead of <strong>Index</strong>.</p><p><pre class="brush: csharp">
routes.MapRoute(
name: &quot;Default&quot;,
url: &quot;{controller}/{action}/{id}&quot;,
defaults: new { controller = &quot;Home&quot;, action = &quot;MainView&quot;, id = UrlParameter.Optional }
);
</pre></p><p>The core is created and now if running the web application you will see a basic HTML page:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image009%5B5%5D.jpg"><img title="clip_image009" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image009_thumb%5B2%5D.jpg" alt="clip_image009" width="508" height="345" border="0"></a></p><p>We now need to handle data from the Azure Mobile Services database. Out-of-the-box, there is no ASP.NET SDK available, but the database can be easily <a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj710108.aspx">accessed through a REST API</a>. But before that, we need to define the data models for the Categories and Images table. Begin by creating two classes in the Models folder:</p><p><strong>Category.cs:</strong></p><p><pre class="brush: csharp">
public class Category
{
public int? id { get; set; }
public string Name { get; set; }
}
</pre></p><p><strong>Image.cs:</strong></p><p><pre class="brush: csharp">
public class Image
{
public int? id { get; set; }    
public string URL { get; set; }
public string Name { get; set; }
public int CategoryID { get; set; }
}
</pre></p><p>Each of the properties is tied to the associated column in the database we created earlier. Notice that the ID values are nullable. This is introduced because the index will by default be automatically assigned. When new instances of Category or Image are created, I will not explicitly set the <strong>id</strong> property, so keeping it null instead of at a potential default value of 0 will ensure that it is properly set on the backend.</p><p>Let’s now create the connectivity engine that will allow us to query the content of the data store. For this purpose, I created a <strong>DataStore</strong> folder and a <strong>DataEngine</strong> class inside it. We will need a unique API key for each of our requests, so open the Azure Management Portal and obtain it from there:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image010%5B5%5D.png"><img title="clip_image010" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image010_thumb%5B2%5D.png" alt="clip_image010" width="749" height="333" border="0"></a></p><p>In order to keep consistency between projects, and to be able to re-use the same Azure Mobile Services API key and core URL, I created an <strong>AuthConstants</strong> class in the context of the <strong>Coding4Fun.Lockscreen.Core</strong> project. It carries three static fields:</p><p><pre class="brush: csharp">
public static class AuthConstants
{
    public static string AmsApiKey = &quot;YOUR_KEY_HERE&quot;;    
    public const string AmsUrl = &quot;https://c4flockscreen.azure-mobile.net/&quot;;
    public const string AmsTableUrl = AmsUrl &#43; &quot;tables/&quot;;
}
</pre></p><p>Back in the ASP.NET project, the query operations are carried with the help of <a href="http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx">HttpClient</a> initialized in the class constructor, which also includes the key used to authenticate the requests via the X-ZUMO-APPLICATION header:</p><p><pre class="brush: csharp">
private HttpClient client;

public DataEngine()
{    
    client = new HttpClient();    
    client.DefaultRequestHeaders.Add(&quot;X-ZUMO-APPLICATION&quot;, KEY);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(&quot;application/json&quot;));    
}
</pre></p><p>This is the basic data harness. I also implemented two core methods in order to get all existing categories:</p><p><pre class="brush: csharp">
public IEnumerable&lt;Category&gt; GetAllCategories()
{
    var result = client.GetStringAsync(string.Concat(CORE_URL,&quot;Categories&quot;)).Result;
    IEnumerable&lt;Category&gt; categories = JsonConvert.DeserializeObject&lt;IEnumerable&lt;Category&gt;&gt;(result);
    return categories;    
}
</pre></p><p>And images:</p><p><pre class="brush: csharp">
public IEnumerable&lt;Image&gt; GetAllImages()
{
    var result = client.GetStringAsync(string.Concat(CORE_URL, &quot;Images&quot;)).Result;
    IEnumerable&lt;Image&gt; images = JsonConvert.DeserializeObject&lt;IEnumerable&lt;Image&gt;&gt;(result);
    return images;    
}
</pre></p><p>For each of these, a basic request is made with the table name appended to the base URL (represented by the <strong>CORE_URL</strong> constant). Since <a href="http://www.hanselman.com/blog/VisualStudio2012RCIsReleasedTheBigWebRollup.aspx">JSON.NET is now bundled with ASP.NET</a>, I am able to easily deserialize the returned JSON data array to an <strong>IEnumerable&lt;Type&gt;</strong>. There is one problem, however, with the <strong>GetAllImages</strong> approach. It implies that even if I want to use LINQ to query the existing image collection, I have to first download the entire set locally.</p><p>Fortunately, the Azure Mobile Services REST API provides an endpoint with filtering, and that’s what I am using in <strong>GetCategoryById</strong> and <strong>GetImagesByCategoryId</strong>:</p><p><pre class="brush: csharp">
public Category GetCategoryById(int id)
{    
    string composite = string.Concat(CORE_URL, &quot;Categories?$filter=(id%20eq%20&quot;, id.ToString(), &quot;)&quot;);    
    var result = client.GetStringAsync(composite).Result;
    IEnumerable&lt;Category&gt; categories = JsonConvert.DeserializeObject&lt;IEnumerable&lt;Category&gt;&gt;(result);
    return categories.FirstOrDefault();
}

public IEnumerable&lt;Image&gt; GetImagesByCategoryId(int id)
{    
    string composite = string.Concat(CORE_URL, &quot;Images?$filter=(CategoryID%20eq%20&quot;, id.ToString(), &quot;)&quot;);    
    var result = client.GetStringAsync(composite).Result;
    IEnumerable&lt;Image&gt; images = JsonConvert.DeserializeObject&lt;IEnumerable&lt;Image&gt;&gt;(result);
    return images();
}
</pre></p><p>Notice the <strong>?$filter=</strong> parameter, in which the conditional is URL encoded and is wrapped in parentheses. For the category query, I am checking the <strong>id </strong>value, and for the image I’m checking <strong>CategoryID</strong>.</p><p>In the <strong>Views/Home</strong> folder, create a new view and name it Images. It will be used to list existing images that are associated with one of the selected categories. You also need to adjust the controller code to handle the incoming data:</p><p><pre class="brush: csharp">
using Coding4Fun.Lockscreen.Web.DataStore;
using System.Web.Mvc;

namespace Coding4Fun.Lockscreen.Web.Controllers
{    
    public class HomeController : Controller    
    {    
        DataEngine engine;    
        public HomeController()
        {    
            engine = new DataEngine();    
        }
        
        public ActionResult MainView()
        {    
            var categories = engine.GetAllCategories();    
            return View(categories);
        }
        
        public ActionResult Images(int categoryId)
        {    
            var images = engine.GetImagesByCategoryId(categoryId);    
            if (images != null)
            {    
                return View(images);    
            }
            
            return View(&quot;MainView&quot;);
        }
    }
}
</pre></p><p>For the main view, I am getting the list of categories and passing them as the bound model. For the Images view, the category ID is passed as an argument that will later enable the engine to return a list of all images that have <strong>CategoryID</strong> set to that value. In case the returned list is not null, the view is shown. Otherwise, the main view is the terminal point.</p><p>In its current state, I’ll be able to use the frontend to list existing categories and images, but not to add, remove, or update items. Adding a category and an image is a matter of modifying an <strong>HttpClient</strong> request, with the help of <a href="http://msdn.microsoft.com/en-us/library/system.net.http.httprequestmessage.aspx">HttpRequestMessage</a>. For example, here is how I can add a category through my DataEngine class:</p><p><pre class="brush: csharp">
public HttpStatusCode AddCategory(Category category)
{    
    var serializedObject = JsonConvert.SerializeObject(category, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
    var request = new HttpRequestMessage(HttpMethod.Post, string.Concat(CORE_URL, &quot;Categories&quot;));
    request.Content = new StringContent(serializedObject, Encoding.UTF8, &quot;application/json&quot;);
    var response = client.SendAsync(request).Result;
    return response.StatusCode;
}
</pre></p><p>JSON.NET capabilities are used to serialize the object that needs to be inserted. The POST request is executed against the standard table URL, with the UTF8 encoded JSON string. Since the client is already carrying the basic authentication header, all that needs to be done is calling the <a href="http://msdn.microsoft.com/en-us/library/hh138176.aspx">SendAsync</a> function.</p><p>Updating a category follows the same approach, though a <a href="http://tools.ietf.org/html/rfc5789">PATCH method</a> is used for the request and the URL contains the index of the category that needs to be updated:</p><p><pre class="brush: csharp">
public HttpStatusCode UpdateCategory(Category category)
{    
    var request = new HttpRequestMessage(new HttpMethod(&quot;PATCH&quot;), string.Concat(CORE_URL, &quot;Categories&quot;, &quot;/&quot;, category.id));    
    var serializedObject = JsonConvert.SerializeObject(category);
    request.Content = new StringContent(serializedObject, Encoding.UTF8, &quot;application/json&quot;);
    var response = client.SendAsync(request).Result;
    return response.StatusCode;
}
</pre></p><p>To delete a category from the data store, one simply needs to pass a parameter to it that identifies the index of the category that needs to be removed:</p><p><pre class="brush: csharp">
public HttpStatusCode DeleteCategoryFromId(int categoryId)
{    
    var request = new HttpRequestMessage(HttpMethod.Delete, string.Concat(CORE_URL, &quot;Categories&quot;, &quot;/&quot;, categoryId));    
    var response = client.SendAsync(request).Result;
    return response.StatusCode;
}
</pre></p><p>For images, the same methods can be used, with the <strong>Images</strong> table passed as the name for the target in the composite URL. Let’s now get back to working on some of the views. A static category list is not fun, so let’s create a way to add new categories. Right click on the <strong>Views/Home</strong> folder and select <strong>Add View</strong>:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image012%5B5%5D-1.jpg"><img title="clip_image012" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image012_thumb%5B2%5D-1.jpg" alt="clip_image012" width="342" height="338" border="0"></a></p><p>A great thing about the view creation process in Visual Studio is the fact that you are able to use a basic scaffold template for a strongly-typed view. In this case, I am associating it with a <strong>Category</strong> class and using the <strong>Create</strong> template. I now need to modify the controller code to process requests to AddCategory. I need to handle two types of requests, GET and POST, because the view will be displayed to both add an item and submit an item:</p><p><pre class="brush: csharp">
public ActionResult AddCategory()
{    
    return View();    
}

[HttpPost]
public ActionResult AddCategory(Category category)
{    
    if (ModelState.IsValid)    
    {    
        engine.AddCategory(category);    
        return RedirectToAction(&quot;MainView&quot;);    
    }
    
    return View();
}
</pre></p><p>For a GET request, I am simply returning the view. For a POST view, I am adding the category that was defined by the bound model through the local <strong>DataEngine</strong> instance, after which the user is redirected to the main view. But we also need to add an ActionResult for the MainView to obtain the list of items that are currently in the Categories table:</p><p><pre class="brush: csharp">
public ActionResult MainView()
{    
    var categories = engine.GetAllCategories();    
    return View(categories);
}
</pre></p><p>The <strong>DataEngine</strong> instance will return all categories in an <strong>IEnumerable&lt;Category&gt;</strong> form that are passed as the model for the main view. The layout of MainView.cshtml can be as simple as a table:</p><p><pre class="brush: csharp">
@{    
    ViewBag.Title = &quot;Coding4Fun Dynamic Lockscreen&quot;;    
}

&lt;h2&gt;Coding4Fun Dynamic Lockscreen - Categories&lt;/h2&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;b&gt;ID&lt;/b&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;Category Name&lt;/b&gt;
&lt;/td&gt;
&lt;/tr&gt;

@foreach (var p in Model)
{    
    &lt;tr&gt;    
    &lt;td&gt;
    @p.id
    &lt;/td&gt;
    &lt;td&gt;
    @p.Name
    &lt;/td&gt;
    &lt;td&gt;
@Html.ActionLink(&quot;Images&quot;, &quot;Images&quot;, new { categoryId = p.id })
    &lt;/td&gt;
    &lt;td&gt;
@Html.ActionLink(&quot;Edit&quot;, &quot;EditCategory&quot;, new { categoryId = p.id })
    &lt;/td&gt;
    &lt;td&gt;
@Html.ActionLink(&quot;Delete&quot;, &quot;DeleteCategory&quot;, new { categoryId = p.id })
    &lt;/td&gt;
    &lt;/tr&gt;
}

&lt;/table&gt;

@Html.ActionLink(&quot;Add Category&quot;, &quot;AddCategory&quot;)
</pre></p><p>The <strong>ActionLink</strong> helper allows me to invoke a view and, if necessary, pass specific parameters to it (e.g., when I need to identify the category that needs to be deleted or edited). Some of the views listed here are not yet created, but I can easily use placeholder names in any case.</p><p>The ultimate result for the main page will look like this:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image013%5B5%5D.png"><img title="clip_image013" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image013_thumb%5B2%5D.png" alt="clip_image013" width="610" height="400" border="0"></a></p><p>Notice that you are also able to add new categories now by clicking on the Add Category link on the bottom. This will redirect you to the <strong>AddCategory</strong> view that we created:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image014%5B5%5D.png"><img title="clip_image014" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image014_thumb%5B2%5D.png" alt="clip_image014" width="610" height="400" border="0"></a></p><p>Let’s see how to implement the category editing in the web frontend. First of all, create a new view in <strong>Views/Home</strong> and name it <strong>EditCategory</strong>. Use the <strong>Edit</strong> scaffold template. Like <strong>AddCategory</strong>, <strong>EditCategory</strong> needs to be handled in two separate ways for GET and POST requests in the controller:</p><p><pre class="brush: csharp">
public ActionResult EditCategory(int categoryId)
{    
    Category category;    
    category = engine.GetCategoryById(categoryId);
    if (category != null)
       return View(category);
    return View(&quot;MainView&quot;);
}

[HttpPost]
public ActionResult EditCategory(Category category)
{    
    if (ModelState.IsValid)    
    {    
        engine.UpdateCategory(category);    
        return RedirectToAction(&quot;MainView&quot;);
    }
    
    return View();
}
</pre></p><p>For a <strong>GET</strong> request, we need to identify the category that needs to be added by its index, so we are using a <strong>categoryId</strong> argument passed to the view, which is later used by the <strong>DataEngine</strong> instance to retrieve the category from the data store. For a POST action, the implementation for <strong>UpdateCategory</strong> from above is used, where a PATCH request is run with the serialized object bound to the view.</p><p>For the Delete action, no additional view is necessary but the controller still needs a handler, so we can use a snippet like this:</p><p><pre class="brush: csharp">
public ActionResult DeleteCategory(int categoryId)
{    
    engine.DeleteCategoryFromId(categoryId);    
    return RedirectToAction(&quot;MainView&quot;);
}
</pre></p><p>You can use the same approach to add, delete, and edit items in the list of images. For adding images, however, you might want to pass the category identifier. When images are listed after the category has been selected, it is necessary to provide a way to identify the category to which new entities should be added. To do this, we can. in the main controller. pass the category index to the view when the Images action is being triggered:</p><p><pre class="brush: csharp">
public ActionResult Images(int categoryId)
{    
    var images = engine.GetImagesByCategoryId(categoryId);    
    if (images != null)
    {    
        ViewData[&quot;CID&quot;] = categoryId;    
        return View(images);
    }
    
    return View(&quot;MainView&quot;);
}
</pre></p><p>Afterwards, the <strong>categoryId</strong> value can be obtained by using the <strong>CID</strong> key for <strong>ViewData</strong> inside the view itself.</p><h4>Let’s now take a look at how images are represented for each category. I created a custom view to list all the images associated with the Images category. If you look above at the controller code, you will notice that I am passing the category ID, through which the image set query is executed, and the returned collection is set as the bound model:</h4><p><pre class="brush: csharp">
public ActionResult Images(int categoryId)
{    
    var images = engine.GetImagesByCategoryId(categoryId);    
    if (images != null)
    {    
        ViewData[&quot;CID&quot;] = categoryId;    
        return View(images);
    }
    
    return View(&quot;MainView&quot;);
}
</pre></p><p>When an image needs to be added, call the <strong>AddImage</strong> view. In <strong>HomeController.cs</strong>, it carries implementations for both GET and POST requests:</p><p><pre class="brush: csharp">
public ActionResult AddImage(int categoryId)
{    
    Image image = new Image();    
    image.CategoryID = categoryId;
    return View(image);    
}

[HttpPost]
public ActionResult AddImage(HttpPostedFileBase file, Image image)
{    
    if (file != null &amp;&amp; file.ContentLength &gt; 0)    
    {    
        var fileName = Path.GetFileName(file.FileName);    
        var path = Path.Combine(Server.MapPath(&quot;~/Uploads&quot;), image.CategoryID.ToString(), fileName);
        string dirPath = Path.GetDirectoryName(path);
        
        if (!Directory.Exists(dirPath))
            Directory.CreateDirectory(dirPath);
        
        file.SaveAs(path);

        string applicationUrl = string.Format(&quot;{0}://{1}{2}&quot;,        
            HttpContext.Request.Url.Scheme,
            HttpContext.Request.ServerVariables[&quot;HTTP_HOST&quot;],
            (HttpContext.Request.ApplicationPath.Equals(&quot;/&quot;)) ? string.Empty : HttpContext.Request.ApplicationPath
        );
        
        image.URL = Path.Combine(applicationUrl, &quot;Uploads&quot;, image.CategoryID.ToString(), fileName);
    }
    
    if (ModelState.IsValid &amp;&amp; image.URL != null)
    {    
        engine.AddImage(image);    
        return RedirectToAction(&quot;Images&quot;, new { categoryID = image.CategoryID });
    }
    
    return View();
}
</pre></p><p>When a GET request is executed against the <strong>AddImage</strong> endpoint, I pass the category ID as the flag, signaling which category the image should be included in. When a POST request is executed, it can go two ways—either the user is passing an existing link to a hosted image or the user is uploading his own image to the local server. When an upload is inbound, <a href="http://msdn.microsoft.com/en-us/library/system.web.httppostedfilebase.aspx">HttpPostedFileBase</a> carries the content that needs to be pushed to the server.</p><p>The upload component on the view itself is done by creating a form with a file input:</p><p><pre class="brush: csharp">
&lt;h2&gt;Or you could upload your own file: &lt;/h2&gt;

@if (Model != null)
{    
    using (Html.BeginForm(&quot;AddImage&quot;, &quot;Home&quot;, FormMethod.Post, new { enctype = &quot;multipart/form-data&quot;, image = Model }))
    {    
        @Html.HiddenFor(model =&gt; model.CategoryID);    
        &lt;input type=&quot;file&quot; name=&quot;file&quot; /&gt;
        &lt;input type=&quot;submit&quot; value=&quot;OK&quot; /&gt;
    }
}
</pre></p><p>If there is no file selected, the system assumes that the user just decided to add an existing URL.</p><p>It’s important to mention that the upload workflow relies on the availability of the Upload folder. It is created by default when the project is deployed to the server, but you also need to make sure that the ASP.NET user on the machine where IIS is located has the appropriate write permission for the folder.</p><h1>The Windows Phone 8 Application Foundation</h1><p>Create a new Windows Phone 8 application and add a reference to <a href="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx">Windows Azure Mobile Services Managed Client</a>. It should be available in the Extensions section if you installed the Windows Azure Mobile Services SDK as I mentioned at the beginning of the article:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image016%5B5%5D.jpg"><img title="clip_image016" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image016_thumb%5B2%5D.jpg" alt="clip_image016" width="516" height="355" border="0"></a></p><p>In <strong>App.xaml.cs</strong> you need to create an instance of <a href="http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.mobileservices.mobileserviceclient.aspx">MobileServiceClient</a> that will be used as the central connection point to the database. Notice that I am using the predefined AMS and API KEY string constants:</p><p><pre class="brush: csharp">
public static MobileServiceClient MobileService =
new MobileServiceClient(AuthConstants.AmsUrl, AuthConstants.AmsApiKey);
</pre></p><p>The mobile application should also carry the data models for both the categories and images. That said, we can reorganize those a bit for a more convenient data binding layout. To ensure that we can reuse the classes from different application components, I am once again using the <strong>Coding4Fun.Lockscreen.Core</strong> project.</p><p>Create a new folder called <strong>Models</strong> and add a new class called <strong>Category</strong>:</p><p><pre class="brush: csharp">
using System.Collections.ObjectModel;

namespace Coding4Fun.Lockscreen.Core.Models
{    
    public class Category    
    {    
        public Category()    
        {    
            Images = new ObservableCollection&lt;Image&gt;();    
        }
    
        public int? id { get; set; }    
        public string Name { get; set; }

        public ObservableCollection&lt;Image&gt; Images { get; set; }
        
        public override string ToString()        
        {    
            return Name;    
        }
    }
}
</pre></p><p>We are still relying on a <a href="http://msdn.microsoft.com/en-us/library/1t3y8s4s%28v=vs.80%29.aspx">nullable index value</a>, but now there is an <a href="http://msdn.microsoft.com/en-us/library/ms668604%28v=vs.95%29.aspx">ObservableCollection</a> for images. The reason for using this specific collection type is because with an <strong>ObservableCollection</strong>, binding updates are performed automatically when new items are added or removed, therefore cutting the need to implement the notification mechanism.</p><p>The ToString function is overridden to simplify data extraction on binding. When a collection with categories will be hooked to a list, for example, I don’t have to create a converter or a property link.</p><p>For the <strong>Image</strong> model, create a new class called <strong>Image</strong> in the same <strong>Models</strong> folder:</p><p><pre class="brush: csharp">
namespace Coding4Fun.Lockscreen.Core.Models
{    
    public class Image    
    {    
        public int? id { get; set; }
        public string URL { get; set; }
        public string Name { get; set; }
        public int CategoryID { get; set; }    
    }
}
</pre></p><h1>Application Workflow &amp; Storage</h1><p>Let’s talk about how image categories will be handled in the application. On application startup, the database is queried for the available categories and each of them is listed on the home screen. If the user taps on one of the categories, the database is queried for the images that are associated with the category index.</p><p>However, the user should also be able to create his own custom categories that will only be available in-app. Those categories can carry images from multiple other categories, if necessary, with the default reference set to the internal storage.</p><p>Since we are working with local storage, let’s create a helper class called <strong>LocalStorageHelper</strong> in the <strong>Coding4Fun.Lockscreen.Core</strong> project in the <strong>Storage</strong> folder. This class will carry basic read and write functions, allowing us to store data internally:</p><p><pre class="brush: csharp">
public static class LocalStorageHelper
{    
    public async static void WriteData(string folderName, string fileName, byte[] content)    
    {    
        IStorageFolder rootFolder = ApplicationData.Current.LocalFolder;
        
        if (folderName != string.Empty)    
        {    
            rootFolder = await rootFolder.CreateFolderAsync(folderName,    
            CreationCollisionOption.OpenIfExists);    
        }
        
        IStorageFile file = await rootFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
        using (var s = await file.OpenStreamForWriteAsync())
        {    
            s.Write(content, 0, content.Length);    
        }
    }
    
    public static async void ClearFolder(string folderName)
    {    
        var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(folderName);    
        if (folder != null)
        {    
            foreach (IStorageFile file in await folder.GetFilesAsync())    
            {    
                await file.DeleteAsync();    
            }
        }
    }
    
    public static async Task&lt;string&gt; ReadData(string fileName)
    {    
        byte[] data;    
        StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile file = await folder.GetFileAsync(fileName);
        using (Stream s = await file.OpenStreamForReadAsync())
        {        
            data = new byte[s.Length];    
            await s.ReadAsync(data, 0, (int)s.Length);
        }
        
        return Encoding.UTF8.GetString(data, 0, data.Length);
    }    
}
</pre></p><p>Notice that I am using the newly-introduced <a href="http://msdn.microsoft.com/library/windows/apps/BR227230">StorageFolder</a>/<a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefile.aspx">StorageFile</a> capabilities. If you worked with Windows Store application development, you are probably already familiar with them. <strong>Application.Current.LocalFolder</strong> gives me direct access to the local directory. which can be modified from within the application itself. It works in a manner similar to <strong>IsolatedStorageFile</strong> in Windows Phone 7, but with more flexibility when it comes to creating new folders and files and well doing file sweeps.</p><p>As I mentioned above, there will be internal data stored as XML. For this purpose, I need a class that carries serialization and deserialization routines, and I can simplify this task by using the <a href="http://coding4fun.codeplex.com/">Coding4Fun Toolkit</a> <strong>Serialize.Save&lt;T&gt;</strong> and <strong>Serialize.Open&lt;T&gt;</strong> capabilities. Calls to these functions allow flexible serialization, where by default the static class is not aware of the serialization type, but is instead able to dynamically infer it from the incoming data. Once the byte layout is obtained for the content, I use the <strong>LocalStorageHelper</strong> class to write it to a file.</p><p>As there are multiple UI items that need to be bound to collections and object instances, I have a <strong>CentralBindingPoint</strong> class in my main project that is my main view model (it implements <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged%28v=vs.95%29.aspx">INotifyPropertyChanged</a>). It implements the singleton pattern, so that the main instance is created on initialization and is subsequently re-used as necessary:</p><p><pre class="brush: csharp">
using Coding4Fun.Lockscreen.Core.Models;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace Coding4Fun.Lockscreen.Mobile
{    
    public class CentralBindingPoint : INotifyPropertyChanged    
    {    
        static CentralBindingPoint instance = null;    
        static readonly object padlock = new object();
        
        public CentralBindingPoint()
        {    
            Categories = new ObservableCollection&lt;Category&gt;();    
            CustomCategories = new ObservableCollection&lt;Category&gt;();    
        }
        
        public static CentralBindingPoint Instance
        {    
            get    
            {    
                lock (padlock)    
                {    
                    if (instance == null)    
                    {    
                        instance = new CentralBindingPoint();    
                    }
                
                    return instance;        
                }
            }
        }
        
        private ObservableCollection&lt;Category&gt; _categories;
        public ObservableCollection&lt;Category&gt; Categories
        {    
            get    
            {    
                return _categories;    
            }
            set
            {    
                if (_categories != value)        
                {    
                    _categories = value;    
                    NotifyPropertyChanged(&quot;Categories&quot;);
                }
            }
        }
        
        private ObservableCollection&lt;Category&gt; _customCategories;
        public ObservableCollection&lt;Category&gt; CustomCategories
        {    
            get    
            {    
                return _customCategories;    
            }
            set
            {    
                if (_customCategories != value)    
                {    
                    _customCategories = value;    
                    NotifyPropertyChanged(&quot;CustomCategories&quot;);
                }        
            }
        }
    
        private Category _currentCategory;    
        public Category CurrentCategory
        {    
            get    
            {        
                return _currentCategory;    
            }
            set
            {    
                if (_currentCategory != value)    
                {    
                    _currentCategory = value;    
                    NotifyPropertyChanged(&quot;CurrentCategory&quot;);
                }
            }
        }
        
        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged(String info)
        {    
            if (PropertyChanged != null)    
            {    
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(    
                () =&gt;
                {    
                    PropertyChanged(this, new PropertyChangedEventArgs(info));    
                });
            }
        }
    }
}
</pre></p><p>On the main page, I create a <a href="http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.phone.controls.pivot%28v=vs.105%29.aspx">Pivot-based layout</a> to have an easy way to transition between the web collections (categories) and the local ones:</p><p><img src="http://www.codeplex.com/Download?ProjectName=lockscreen&amp;DownloadId=631917" alt="" width="288" height="480" border="0"></p><p>For each of the collection types, there is a <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox%28v=vs.95%29.aspx">ListBox</a> with a custom <a href="http://msdn.microsoft.com/en-us/library/system.windows.datatemplate%28v=VS.95%29.aspx">DataTemplate</a> assigned for each item. The items are obtained from the <strong>Categories</strong> collection for web sets and the <strong>CustomCategories</strong> collection for local sets, both in the <strong>CentralBindingPoint</strong> view model.</p><p>The categories are loaded with the help of the <strong>DataEngine</strong> class that I added in the Data folder in the main application project. It is a wrapper for the Azure Mobile Services data operations, allowing me to aggregate the list of categories and images, given that I know the category index:</p><p><pre class="brush: csharp">
public class DataEngine
{    
    async public Task&lt;List&lt;Category&gt;&gt; GetCategoryList()    
    {    
        IMobileServiceTable&lt;Category&gt; table = App.MobileService.GetTable&lt;Category&gt;();    
        List&lt;Category&gt; data = await table.ToListAsync();
        
        return data;
    }
    
    async public Task&lt;List&lt;Image&gt;&gt; GetImagesByCategoryId(int categoryId)
    {    
        IMobileServiceTable&lt;Image&gt; table = App.MobileService.GetTable&lt;Image&gt;();    
        List&lt;Image&gt; data = await table.Where(x =&gt; x.CategoryID == categoryId).ToListAsync();
        
        return data;
    }
}
</pre></p><p>When the main page loads, I use the local <strong>DataEngine</strong> instance to call <strong>GetCategoryList</strong> and obtain a List&lt;Category&gt; collection that is subsequently transformed into an <strong>ObservableCollection</strong> through one of the default constructors:</p><p><pre class="brush: csharp">
async void MainPage_Loaded(object sender, RoutedEventArgs e)
{    
    CentralBindingPoint.Instance.Categories = new ObservableCollection&lt;Category&gt;(await dataEngine.GetCategoryList());    
}
</pre></p><p>When a category is selected in the web sets list, I assign the selected item as the current category and navigate to the <strong>ImageSetPage.xaml</strong> page that will display the associated images:</p><p><pre class="brush: csharp">
async void ListBox_SelectionChanged_1(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{    
    var box = (ListBox)sender;
    
    if (box.SelectedItem != null)    
    {    
        Category selectedCategory = (Category)box.SelectedItem;    
        selectedCategory.Images = new ObservableCollection&lt;Coding4Fun.Lockscreen.Core.Models.Image&gt;
        (await dataEngine.GetImagesByCategoryId((int)selectedCategory.id));
        
        CentralBindingPoint.Instance.CurrentCategory = selectedCategory;
        NavigationService.Navigate(new Uri(&quot;/ImageSetPage.xaml&quot;, UriKind.Relative));
    }
}
</pre></p><p>Notice that the images are not loaded at the same time as the categories; rather, they’re loaded only when a category has been selected, hence the <strong>GetImagesByCategoryId</strong> call on selection.</p><p>For a custom set, the procedure is pretty much the same, the only difference being the fact that image references are already present since those were deserialized from the local storage:</p><p><pre class="brush: csharp">
private void lstCustomSets_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{    
    var box = (ListBox)sender;
    
    if (box.SelectedItem != null)    
    {    
        Category selectedCategory = (Category)box.SelectedItem;    
        CentralBindingPoint.Instance.CurrentCategory = selectedCategory;
        NavigationService.Navigate(new Uri(&quot;/ImageSetPage.xaml&quot;, UriKind.Relative));
    }
}
</pre></p><p>In <strong>ImageSetPage.xaml</strong> I use a <strong>ListBox</strong> with a <strong>WrapPanel</strong> in the <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemspaneltemplate.aspx">ItemsPanelTemplate</a>, which ensures that I can have only two images in a row and any additions will be wrapped, with a fixed row length. You can get that control from the <a href="http://phone.codeplex.com/">WPToolkit</a> (formerly known as Silverlight Toolkit for Windows Phone, <a href="https://nuget.org/packages/WPtoolkit">available on NuGet</a>).</p><p><img src="http://www.codeplex.com/Download?ProjectName=lockscreen&amp;DownloadId=631916" alt="" width="288" height="480"></p><p>Here is the basic XAML layout:</p><p><pre class="brush: xml">
&lt;ListBox 
    SelectionMode=&quot;Single&quot;
    Margin=&quot;24&quot;
    x:Name=&quot;lstImages&quot; SelectionChanged=&quot;lstImages_SelectionChanged_1&quot;
    ItemsSource=&quot;{Binding Path=Instance.CurrentCategory.Images,
    Source={StaticResource CentralBindingPoint}}&quot;
    ItemTemplate=&quot;{StaticResource ListItemTemplate}&quot;&gt;
    &lt;ListBox.ItemsPanel&gt;
        &lt;ItemsPanelTemplate&gt;
            &lt;toolkit:WrapPanel ItemWidth=&quot;216&quot; ItemHeight=&quot;260&quot;/&gt;
        &lt;/ItemsPanelTemplate&gt;
    &lt;/ListBox.ItemsPanel&gt;
&lt;/ListBox&gt;
</pre></p><p>Now that we have a basic skeleton for the incoming data, let’s see how it can be transformed into a live lockscreen, on which wallpapers can be cycled. In the <strong>ImageSetPage.xaml</strong> page I have a button in the application bar that allows me to set the current category as the source for the switching wallpapers.</p><p>Currently, each <strong>Image</strong> instance carries an image URL and the images can be located anywhere outside the application. This can cause problems with the wallpaper setting process, however, since the API only allows local images to be set as background. This means that I need to download each image to the local application folder:</p><p><pre class="brush: csharp">
private async void btnSetStack_Click_1(object sender, EventArgs e)
{    
    var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication;
    
    if (!isProvider)    
    {    
        var op = await Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();    
        isProvider = op == Windows.Phone.System.UserProfile.LockScreenRequestResult.Granted;
    }
    
    if (isProvider)
    {    
        downloadableItems = new List&lt;string&gt;();    
        fileItems = new List&lt;string&gt;();

        foreach (var image in CentralBindingPoint.Instance.CurrentCategory.Images)        
        {    
            downloadableItems.Add(image.URL);    
            fileItems.Add(Path.GetFileName(image.URL));    
        }
        
        SerializationHelper.SerializeToFile(fileItems, &quot;imagestack.xml&quot;);
        LocalStorageHelper.ClearFolder(&quot;CurrentSet&quot;);
        DownloadImages();
        grdDownloading.Visibility = System.Windows.Visibility.Visible;
    }
}
</pre></p><p>First of all, I need to make sure that the application can set a lockscreen background and is registered in the OS as a provider. The application needs to state its intent to be able to access the wallpaper by adding this snippet to the <strong>WMAppManifest.xml</strong>, right after the <strong>Tokens</strong> node:</p><p><pre class="brush: xml">
&lt;Extensions&gt;
      &lt;Extension ExtensionName=&quot;LockScreen_Background&quot; ConsumerID=&quot;{111DFF24-AA15-4A96-8006-2BFF8122084F}&quot; TaskID=&quot;_default&quot; /&gt;
&lt;/Extensions&gt;
</pre></p><p><strong>downloadableItems</strong> is a collection that represents the download queue. <strong>fileItems</strong> contains the local file names for each image that is about to be downloaded and will be serialized and used in the background agent to iterate through the category files. Whenever the download process is started, an overlay becomes visible to notify the user that the image acquisition process is in progress.</p><p>Also, notice the fact that I am calling <strong>LocalStorageHelper.ClearFolder</strong>, passing the name of the folder as the first argument. I do not want to keep images for sets that are not active, therefore when a new set is selected, the currently stored images are deleted from the <strong>CurrentSet</strong> folder and replaced by the ones that are about to be downloaded. The implementation of the <strong>ClearFolder</strong> function looks like this:</p><p><pre class="brush: csharp">
public static void ClearFolder(string folderName
{    
    if (store.DirectoryExists(folderName))    
    {    
        foreach (string file in store.GetFileNames(folderName &#43; &quot;\\*.*&quot;))    
        {    
            store.DeleteFile(folderName &#43; &quot;\\&quot; &#43; file);    
        }
    }
}
</pre></p><p>Once the file names are stored in <strong>imagestack.xml</strong>, the image contents are downloaded via <strong>DownloadImages</strong>:</p><p><pre class="brush: csharp">
void DownloadImages()
{    
    WebClient client = new WebClient();    
    string fileName = Path.GetFileName(downloadableItems.First());
    client.OpenReadAsync(new Uri(downloadableItems.First()));
    client.OpenReadCompleted &#43;= (sender, args) =&gt;
    {    
        Debug.WriteLine(&quot;Downloaded &quot; &#43; fileName);    
        LocalStorageHelper.WriteData(&quot;CurrentSet&quot;, fileName, StreamToByteArray(args.Result));
        downloadableItems.Remove(downloadableItems.First());
        if (downloadableItems.Count != 0)
            DownloadImages();
        else
        {    
            grdDownloading.Visibility = System.Windows.Visibility.Collapsed;    
            LocalStorageHelper.CycleThroughImages();
            
            //ScheduledActionService.LaunchForTest(&quot;LockscreenChanger&quot;, TimeSpan.FromSeconds(5));
        }
    };
}
</pre></p><p>Here you can see that I am making a call to <strong>LocalStorageHelper.CycleThroughImages</strong>—a function that reads the file that contains the current set and picks the first image, assigning it to be the current wallpaper and then pushing it to the back of the list, making the succeeding image the next in line for the wallpaper:</p><p><pre class="brush: csharp">
public static void CycleThroughImages()
{    
    List&lt;string&gt; images = Coding4Fun.Phone.Storage.Serialize.Open&lt;List&lt;string&gt;&gt;(&quot;imagestack.xml&quot;);    
    if (images != null)
    {    
        string tempImage = images.First();    
        Uri currentImageUri = new Uri(&quot;ms-appdata:///Local/CurrentSet/&quot; &#43; tempImage, UriKind.Absolute);
        Windows.Phone.System.UserProfile.LockScreen.SetImageUri(currentImageUri);
        images.Remove(tempImage);
        images.Add(tempImage);
        Coding4Fun.Phone.Storage.Serialize.Save&lt;List&lt;string&gt;&gt;(&quot;imagestack.xml&quot;, images);
    }
}
</pre></p><p>You might be wondering why I’m not using <a href="http://msdn.microsoft.com/en-us/library/7977ey2c.aspx">Queue&lt;T&gt;</a> for this. After all, <strong>Enqueue</strong> and <strong>Dequeue</strong> would make things a bit easier. The problem is that a Queue instance cannot be directly serialized without being transformed to a flat list. Therefore, I am sticking to minimal resource processing by manipulating a <strong>List&lt;T&gt;</strong> instance instead.</p><p>The recursive image download method runs until the download queue is emptied, after which the overlay is hidden.</p><h1>Background Agent</h1><p>At this point, we have the images locally stored and listed in an XML file. If the user accepted the system prompt, the application has also been registered as a lockscreen background provider, but there is not yet a single piece of code that would actually set the wallpaper cycle. For that, create a new Background Agent project in your solution. I named mine <strong>Coding4Fun.Lockscreen.Agent</strong>.</p><p>The <strong>OnInvoke</strong> function in <strong>ScheduledAgent.cs</strong> is executed at 30-minute intervals. This is a time limit defined by the <a href="http://msdn.microsoft.com/en-US/library/windowsphone/develop/microsoft.phone.scheduler.periodictask%28v=vs.105%29.aspx">PeriodicTask</a> background agent type that we’ll be using here. You need to add the following snippet to it:</p><p><pre class="brush: csharp">
protected override void OnInvoke(ScheduledTask task)
{    
    var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication;    
    if (isProvider)
    {    
        LocalStorageHelper.CycleThroughImages();    
    }
    NotifyComplete();
}
</pre></p><p>As with the download snippet, I am ensuring that before I attempt to change the wallpaper the application is a registered provider. Otherwise, an exception will be thrown and the background agent will crash. The bad thing about periodic tasks crashing is the fact that once two consecutive crashes occur, the task is removed from the task queue and the backgrounds will not be changed.</p><p>If the application is a provider, call <strong>CycleThroughImages</strong> to set the new background and push the old one to the end of the list. To make sure that a different image is selected each time, the original deserialized list is modified, where the first image now becomes last, switching the stack up, after which it is serialized back into <strong>imagestack.xml</strong>.</p><p>The background agent needs to be registered in the <strong>WMAppManifest.xml</strong>. Inside the Tasks node, add an ExtendedTask:</p><p><pre class="brush: csharp">
&lt;ExtendedTask Name=&quot;LockscreenChangerTask&quot;&gt;
    &lt;BackgroundServiceAgent Specifier=&quot;ScheduledTaskAgent&quot;
        Name=&quot;LockscreenChanger&quot;
        Source=&quot;Coding4Fun.Lockscreen.Agent&quot;
        Type=&quot;Coding4Fun.Lockscreen.Agent.ScheduledAgent&quot; /&gt;
&lt;/ExtendedTask&gt;
</pre></p><p>Also, when the application starts, you need to ensure that the task is registered, and register it if it isn’t yet. Use the Application_Launching event handler for this task:</p><p><pre class="brush: csharp">
private void Application_Launching(object sender, LaunchingEventArgs e)
{    
    string taskName = &quot;LockscreenChanger&quot;;    
    var oldTask = ScheduledActionService.Find(taskName) as PeriodicTask;

    if (oldTask != null)
    {    
        ScheduledActionService.Remove(taskName);    
    }
    
    PeriodicTask task = new PeriodicTask(taskName);
    task.Description = &quot;Change lockscreen wallpaper.&quot;;
    
    ScheduledActionService.Add(task);    
    LoadCustomCategories();    
}
</pre></p><p>Here, <strong>LoadCustomCategories</strong> will deserialize the existing custom categories, so that those can be shown in the main page after the application starts:</p><p><pre class="brush: csharp">
private async void LoadCustomCategories()
{    
    try    
    {    
        CentralBindingPoint.Instance.CustomCategories =    
        (ObservableCollection&lt;Category&gt;)await SerializationHelper.DeserializeFromFile(
        typeof(ObservableCollection&lt;Category&gt;), &quot;customcat.xml&quot;);
    }
    catch
    {    
        Debug.WriteLine(&quot;No customcat.xml - no registered custom categories.&quot;);    
    }
}
</pre></p><p>Now the backgrounds will automatically change based on the web sets that you will activate every 30 minutes.</p><h1>Working with Custom Categories</h1><p>Let’s create some custom sets. To manage user input, I leverage the <strong>CustomMessageBox</strong> control available in the <a href="http://phone.codeplex.com/">Windows Phone Toolkit</a>. It has enough flexibility to let me choose between adding a <strong>TextBox</strong> control, to have the user create the new category or use a <strong>ListPicker</strong> to show the available custom categories in a consistent UI layout.</p><p>When the user decides to create a new category, he taps the plus button in the application bar on the main page:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image022%5B5%5D.png"><img title="clip_image022" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image022_thumb%5B2%5D.png" alt="clip_image022" width="262" height="437" border="0"></a></p><p>The implementation for the call is simple:</p><p><pre class="brush: csharp">
private void btnSetStack_Click_1(object sender, EventArgs e)
{    
    TextBox textBox = new TextBox();    
    CustomMessageBox box = new CustomMessageBox()
    {    
        Caption = &quot;Add Custom Category&quot;,    
        Message = &quot;Enter a unique name for the new category.&quot;,
        LeftButtonContent = &quot;ok&quot;,
        RightButtonContent = &quot;cancel&quot;,
        Content = textBox
    };
    
    box.Dismissed &#43;= (s, boxEventArgs) =&gt;
    {    
        if (boxEventArgs.Result == CustomMessageBoxResult.LeftButton)    
        {    
                    if (!string.IsNullOrWhiteSpace(textBox.Text))    
                    {    
                        var categoryCheck = (from c in CentralBindingPoint.Instance.CustomCategories    
                        where
                        c.Name == textBox.Text
                        select c).FirstOrDefault();
                        
                        if (categoryCheck == null)
                        {    
                            Category category = new Category() { Name = textBox.Text };
                            CentralBindingPoint.Instance.CustomCategories.Add(category);
                            Coding4Fun.Toolkit.Storage.Serialize.Save&lt;ObservableCollection&lt;Category&gt;&gt;(
                            &quot;customcat.xml&quot;, CentralBindingPoint.Instance.CustomCategories);
                        }
                        else
                        {    
                            MessageBox.Show(&quot;Add Custom Category&quot;,    
                            &quot;This category name was already taken!&quot;,
                            MessageBoxButton.OK);
                        }
                    }
        }        
    };
    
    box.Show();    
}
</pre></p><p>When the message box is dismissed, I check which button is pressed to take the appropriate course of action. Let’s assume that the user decided to add the new category—we need to check and make sure that there isn’t already a category with the same name in the existing collection. If there isn’t one, a new <strong>Category</strong> instance is created, added to the collection in the main view model, and serialized to <strong>customcat.xml</strong>.</p><p>The user also needs to be able to add images from any category to another custom category. To do this, I decided to give the user the option to carry across the image name and URL when he taps on an image in the <strong>ImageSetPage.xaml</strong>.</p><p>Remember, if there are no current custom categories registered, the user should be informed that he should create some first, so the alternative route for the dialog with custom category name selection should be a message box alert:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image024%5B5%5D.png"><img title="clip_image024" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image024_thumb%5B2%5D.png" alt="clip_image024" width="264" height="440" border="0"></a></p><p>Here is the snippet that does this:</p><p><pre class="brush: csharp">
private void lstImages_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{    
    if (CentralBindingPoint.Instance.CustomCategories.Count &gt; 0)    
    {    
        if (lstImages.SelectedItem != null)    
        {    
            ListPicker picker = new ListPicker()    
            {    
                Header = &quot;Custom category name:&quot;,    
                ItemsSource = CentralBindingPoint.Instance.CustomCategories,
                Margin = new Thickness(12, 42, 24, 18)
            };
            
            CustomMessageBox messageBox = new CustomMessageBox()
            {    
                Caption = &quot;Add To Custom Category&quot;,    
                Message = &quot;Select a registered custom category to add this image to.&quot;,
                Content = picker,
                LeftButtonContent = &quot;ok&quot;,
                RightButtonContent = &quot;cancel&quot;
            };
            
            messageBox.Dismissing &#43;= (s, boxEventArgs) =&gt;
            {    
                if (picker.ListPickerMode == ListPickerMode.Expanded)    
                {    
                    boxEventArgs.Cancel = true;    
                }
            };
            
            messageBox.Dismissed &#43;= (s2, e2) =&gt;
            {    
                switch (e2.Result)    
                {    
                    case CustomMessageBoxResult.LeftButton:    
                    {    
                        if (picker.SelectedItem != null)    
                        {    
                            Category category = (from c in CentralBindingPoint.Instance.CustomCategories    
                            where c.Name == picker.SelectedItem.ToString()
                            select c).FirstOrDefault();
                            
                            if (category != null)
                            {    
                                category.Images.Add((Coding4Fun.Lockscreen.Core.Models.Image)lstImages.SelectedItem);    
                                Coding4Fun.Toolkit.Storage.Serialize.Save&lt;ObservableCollection&lt;Category&gt;&gt;(
                                &quot;customcat.xml&quot;, CentralBindingPoint.Instance.CustomCategories);
                            }
                            
                            lstImages.SelectedItem = null;
                            lstImages.IsEnabled = true;
                        }
                        break;
                    }
            
                    case CustomMessageBoxResult.RightButton:        
                    case CustomMessageBoxResult.None:
                    {    
                        lstImages.SelectedItem = null;                    
                        break;
                    }
                }
            };
            
            messageBox.Show();
        }
    }
    else
    {    
        MessageBox.Show(&quot;Add To Custom Category&quot;,    
        &quot;Tapping on an image will prompt you to add it to a custom category&quot; &#43; Environment.NewLine &#43;
        &quot;Seems like you don't have any custom categories yet.&quot;, MessageBoxButton.OK);    
    }
}
</pre></p><p>Once the category is selected from the list, the image is added to the Images collection in the <strong>Category</strong> instance, and the category list is serialized to preserve the changes. There are no restrictions as to which categories can fetch images to other categories—we can even select images from custom categories and include them in other categories. The image can be added multiple times to the same category as well.</p><h1>Conclusion</h1><p>With Azure Mobile Services and a managed SDK available for Windows Phone, as well as an open REST API, it is fairly easy to build connected applications on multiple platforms at once without major logic and code base modifications.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1d735d263cfc4453ba06a1870057ac0e">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Dynamic-Lockscreen-Changer-for-Windows-Phone-8-Built-With-ASPNET-MVC-and-Azure-Mobile-Services</comments>
      <itunes:summary>With the release of Windows Phone 8, a few new developer API endpoints were made available that allow third-party applications to change the device lockscreen image. In this article, I am establishing the infrastructure and building a mobile application that provides the ability to choose from a number of dynamic image sets, from which images can be selected and then cycled as lockscreen wallpapers. What do you needYou will need to download and install ASP.NET MVC3 to work on the web frontend and Windows Phone 8 SDK to work on the mobile applications. An Azure Mobile Services account will be necessary, and of course don’t forget to download and install the Azure Mobile Services client libraries. All three components are available at no additional charge. NOTE: Without the Azure Mobile Services SDK installed on the development machine, the compilation process will fail for the Windows Phone application. Setting up The Data StoreFirst we need to establish the general design of the application and organize the workflow. The application will provide two ways to assign the dynamic lockscreen: With the help of custom image sets that are provided by the service; With the help of self-created image sets, aggregated from images provided by the service but ultimately managed by the end-user. Let’s talk about the general data model. Every image belongs to a certain category and to keep track of each we need a table with two columns—category ID and category name. We also need another core table containing the image references themselves, with the following columns: image URL, descriptive name, and the category ID to which it belongs. The overall structure looks like this:  Now to the Windows Azure Management Portal and creating a new Mobile Service.  Once created, you need to specify database information, just like you would with a standard SQL Server database:  As the database is being created, you can easily integrate it with SQL Server Management Studio. You will need the se</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Dynamic-Lockscreen-Changer-for-Windows-Phone-8-Built-With-ASPNET-MVC-and-Azure-Mobile-Services</link>
      <pubDate>Mon, 25 Mar 2013 15:39:25 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Dynamic-Lockscreen-Changer-for-Windows-Phone-8-Built-With-ASPNET-MVC-and-Azure-Mobile-Services</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/6e006890-17a7-490b-84ab-dc762acb6541.png" height="100" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/ac86e266-3378-4993-b73b-0e3d002b3ca5.png" height="220" width="220"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/f6acb002-27be-41d5-8f4d-97ca7e170e80.png" height="284" width="512"></media:thumbnail>      
      <dc:creator>Clint Rutkas, Den Delimarsky</dc:creator>
      <itunes:author>Clint Rutkas, Den Delimarsky</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Dynamic-Lockscreen-Changer-for-Windows-Phone-8-Built-With-ASPNET-MVC-and-Azure-Mobile-Services/RSS</wfw:commentRss>
      <category>Azure</category>
      <category>MVC</category>
      <category>Windows Phone</category>
      <category>Windows Azure Mobile Services</category>
    </item>
  <item>
      <title>//build Debrief with James Chambers, Colin Melia, and Bruce Johnson</title>
      <description><![CDATA[<p><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/6116.ms_5F00_0314_5F00_d3_5F00_logo.png" alt=""></p><p>Canadian MVPs <a href="http://jameschambers.com" target="_blank">James Chambers</a>, <a href="http://colinizer.com" target="_blank">Colin Melia</a>, and <a href="http://www.objectsharp.com/blogs/bruce" target="_blank">Bruce Johnson</a>&nbsp;recap key moments from <a href="http://buildwindows.com" target="_blank">//build</a>. Hear about what they saw and heard during the week they spent in Redmond, what's new and exciting for developers, interesting sessions to watch on-demand, and more.</p><p><strong>Join the Conversation</strong><br>Where you at <a href="http://buildwindows.com" target="_blank">//build</a>? Do you have a story to share? Do you have questions for James, Colin, and/or Bruce? Start a new conversation in the <a href="http://linkd.in/CdnDevs" target="_blank">Canadian Developer Connection group on LinkedIn</a>. James, Colin, and Bruce, as well as fellow Canadian developers are there networking, sharing, and learning. While visiting the group, make sure to join the group and stay connected.</p><p><em>This segment was presented and recording LIVE on Wednesday, November 5, 2012.</em></p><p><strong>D³: LIVE &amp; INTERACTiVE <br></strong>In case you haven't heard about the show, <a href="http://devs3.ms/devscubed">Developers, Developers, Developers: LIVE &amp; INTERACTIVE</a> (D³) is a monthly show hosted by <a href="http://jrozenblit.ca/about">Jonathan Rozenblit</a>. The show airs live <strong>every first Wednesday of the month at 12:00 PM ET</strong> and features the latest updates on what's new and exciting in the world of development; featured presentations; and guests. LIVE and INTERACTIVE means that you'll be part of the show – You're invited to interact with us; ask questions and get them answered; and share your thoughts and opinions.</p><p><a href="http://linkd.in/CanadianDeveloperConnection"><strong><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/1234.LinkedIn.png" alt=" " width="15" height="16" border="0"></strong></a> Join the <a href="http://linkd.in/CanadianDeveloperConnection">Canadian Developer Connection</a> LinkedIn group&nbsp; <br><a href="http://twitter.com/devsdevsdevs"><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/3806.Twitter.png" alt=" " width="15" height="15" border="0"></a> Follow <a href="http://twitter.com/devsdevsdevs">@devsdevdevs</a> <br><a href="https://www.facebook.com/#!/pages/Developers-Developers-Developers-LIVE-and-Interactive/273573892687218"><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/3487.Facebook.png" alt=" " width="15" height="15" border="0"></a> Like D³ on <a href="http://on.fb.me/DevsDevsDevs">Facebook</a> <br><img src="http://blogs.msdn.com/resized-image.ashx/__size/28x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/1512.itunes.png" alt="" width="15" height="15"> Subscribe to podcasts via <a href="http://devs3.ms/d3podcast" target="_blank">iTunes,</a> <a href="zune://feeds.feedburner.com/devscubed">Zune</a>, or <a href="http://devs3.ms/d3videorss" target="_blank">RSS</a> <br><img title="WindowsStore_tile_green_small_40x40" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/7288.WindowsStore_5F00_tile_5F00_green_5F00_small_5F00_40x40_5F00_thumb_5F00_1F01BFD7.png" alt="WindowsStore_tile_green_small_40x40" width="15" height="15" border="0"><span><span class="Apple-converted-space">&nbsp;</span></span>Download the <a href="http://devs3.ms/cdndevsw8" target="_blank">Canadian Developer Connection Windows Store app </a><br><a href="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/2364.windowsphone.png" rel="lightbox"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/2364.windowsphone.png" alt="" width="15" height="15"></a> Download the <a href="http://aka.ms/cdndevswp" target="_blank">Canadian Developer Connection Windows Phone app</a></p><p><a href="http://devs3.ms/devscubed">More D³: LIVE &amp; INTERACTIVE &gt;&gt;</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:44d10e3182604625a679a1030039ba83">]]></description>
      <comments>http://channel9.msdn.com/Blogs/devsdevsdevs/ep121</comments>
      <itunes:summary> Canadian MVPs James Chambers, Colin Melia, and Bruce Johnson&amp;nbsp;recap key moments from //build. Hear about what they saw and heard during the week they spent in Redmond, what&#39;s new and exciting for developers, interesting sessions to watch on-demand, and more. Join the ConversationWhere you at //build? Do you have a story to share? Do you have questions for James, Colin, and/or Bruce? Start a new conversation in the Canadian Developer Connection group on LinkedIn. James, Colin, and Bruce, as well as fellow Canadian developers are there networking, sharing, and learning. While visiting the group, make sure to join the group and stay connected. This segment was presented and recording LIVE on Wednesday, November 5, 2012. D&#179;: LIVE &amp;amp; INTERACTiVE In case you haven&#39;t heard about the show, Developers, Developers, Developers: LIVE &amp;amp; INTERACTIVE (D&#179;) is a monthly show hosted by Jonathan Rozenblit. The show airs live every first Wednesday of the month at 12:00 PM ET and features the latest updates on what&#39;s new and exciting in the world of development; featured presentations; and guests. LIVE and INTERACTIVE means that you&#39;ll be part of the show – You&#39;re invited to interact with us; ask questions and get them answered; and share your thoughts and opinions.  Join the Canadian Developer Connection LinkedIn group&amp;nbsp;  Follow @devsdevdevs  Like D&#179; on Facebook  Subscribe to podcasts via iTunes, Zune, or RSS &amp;nbsp;Download the Canadian Developer Connection Windows Store app  Download the Canadian Developer Connection Windows Phone app More D&#179;: LIVE &amp;amp; INTERACTIVE &amp;gt;&amp;gt; </itunes:summary>
      <itunes:duration>1962</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/devsdevsdevs/ep121</link>
      <pubDate>Fri, 09 Nov 2012 03:47:36 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/devsdevsdevs/ep121</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.mp3" expression="full" duration="1962" fileSize="31407973" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.mp4" expression="full" duration="1962" fileSize="187155868" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.webm" expression="full" duration="1962" fileSize="74597724" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.wma" expression="full" duration="1962" fileSize="15878167" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.wmv" expression="full" duration="1962" fileSize="89961953" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_high.mp4" expression="full" duration="1962" fileSize="409593533" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_mid.mp4" expression="full" duration="1962" fileSize="287297200" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121_Source.wmv" expression="full" duration="1962" fileSize="208208650" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.ism/manifest" expression="full" duration="1962" fileSize="5986" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/3379/979905d8-b489-42c0-80b6-ca01940e3379/D3EP121.wmv" length="89961953" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jonathan Rozenblit, Bruce Johnson, CanadianJames, Colin Melia</dc:creator>
      <itunes:author>Jonathan Rozenblit, Bruce Johnson, CanadianJames, Colin Melia</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/devsdevsdevs/ep121/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
      <category>Surface</category>
      <category>Visual Studio</category>
      <category>Windows Azure</category>
      <category>Build</category>
      <category>Windows 8</category>
      <category>Windows Phone 8</category>
    </item>
  <item>
      <title>TWC9:  WAMS! Windows Store End to End, Reflection, VS2012 ALM VM and more</title>
      <description><![CDATA[<p>This week on Channel 9, Dan and Brian discuss the week's top developer news, including;</p><ul><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=22s">[0:22]</a>&nbsp;<a href="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx">Announcing Windows Azure Mobile Services</a>, <a href="http://channel9.msdn.com/posts/Introduction-to-Windows-Azure-Mobile-Services">Introduction to Windows Azure Mobile Services</a>, <a href="http://davidpallmann.blogspot.com/2012/08/introducing-windows-azure-mobile.html">Introducing Windows Azure Mobile Services for Windows 8</a> (David Pallmann), <a href="http://geekswithblogs.net/clinted/archive/2012/08/28/introducing-windows-azure-mobile-services.aspx">Introducing Windows Azure Mobile Services</a> (Josh Twist), <a href="http://www.thejoyofcode.com/Introducing_Windows_Azure_Mobile_Services.aspx">Introducing Windows Azure Mobile Services</a> (Clint Edmonson), <a href="http://blogs.msdn.com/b/windowsappdev/archive/2012/08/28/add-cloud-to-your-app-with-windows-azure-mobile-services.asp">Add cloud to your app with Windows Azure Mobile Services</a> (Kirill Gavrylyuk) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=1m39s">[1:39]</a>&nbsp;<a href="http://code.msdn.microsoft.com/windowsapps/doto-a-simple-social-todo-7e6ba464">Windows Azure Mobile Services - doto sample</a> (Josh Twist) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=2m54s">[2:54]</a>&nbsp;<a href="http://blogs.msdn.com/b/somasegar/archive/2012/08/26/building-an-end-to-end-windows-store-app-part-1.aspx">Building an End-to-End Windows Store App - Part 1</a>, <a href="http://blogs.msdn.com/b/somasegar/archive/2012/08/28/building-an-end-to-end-windows-store-app-part-2-integrating-cloud-services.aspx">Building an End-to-End Windows Store App - Part 2: Integrating Cloud Services</a> (S. Somasegar) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=3m36s">[3:36]</a>&nbsp;<a href="http://jaredbienz.wordpress.com/2012/08/23/wp-to-w8-api-mapping/">WP to W8: API Mapping</a> (Jared Bienz) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=4m44s">[4:44]</a>&nbsp;<a href="http://blogs.msdn.com/b/dotnet/archive/2012/08/28/evolving-the-reflection-api.aspx">Evolving the Reflection API</a> (Brandon Bray, Richard Lander, Mircea Trofin) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=5m41s">[5:41]</a>&nbsp;<a href="http://blogs.msdn.com/b/bharry/archive/2012/08/28/tfs-shipping-cadence.aspx">TFS Shipping Cadence</a> (Brian Harry) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=7m25s">[7:25]</a>&nbsp;<a href="http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx">Visual Studio 2012 Application Lifecycle Management Virtual Machine and Hands-on-Labs / Demo Scripts</a> (Brian Keller) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=8m50s">[8:50]</a>&nbsp;<a href="http://www.syncfusion.com/resources/techportal/ebooks/aspnetmvc4">ASP.NET MVC 4 Mobile Websites Succinctly (Free, reg-ware, ebook)</a> (Lyle Luppes) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=9m15s">[9:15]</a>&nbsp;<a href="http://www.strathweb.com/2012/08/a-guide-to-asynchronous-file-uploads-in-asp-net-web-api-rtm/">A guide to asynchronous file uploads in ASP.NET Web API RTM</a> (Filip Woj) </li></ul><p>Picks of the Week!</p><ul><li>Dan's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=11m5s">[11:05]</a> <a href="http://www.pnggauntlet.com/">PNGGauntlet</a> [Found Via: <a href="http://blogs.msdn.com/b/kurlak/">John Kurlak's Blog</a> - <a href="http://blogs.msdn.com/b/kurlak/archive/2012/08/28/awesome-png-compression-tool.aspx">Awesome PNG Compression Tool</a>] </li><li>Brian's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-August-31-2012#time=11m50s">[11:50]</a> <a href="http://h30565.www3.hp.com/t5/Feature-Articles/The-History-of-the-Floppy-Disk/ba-p/6434">The History of the Floppy Disk</a> (Steven Vaughan-Nichols) </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ac924a47a1b8458db003a0be0006e516">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-August-31-2012</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian discuss the week&#39;s top developer news, including; [0:22]&amp;nbsp;Announcing Windows Azure Mobile Services, Introduction to Windows Azure Mobile Services, Introducing Windows Azure Mobile Services for Windows 8 (David Pallmann), Introducing Windows Azure Mobile Services (Josh Twist), Introducing Windows Azure Mobile Services (Clint Edmonson), Add cloud to your app with Windows Azure Mobile Services (Kirill Gavrylyuk) [1:39]&amp;nbsp;Windows Azure Mobile Services - doto sample (Josh Twist) [2:54]&amp;nbsp;Building an End-to-End Windows Store App - Part 1, Building an End-to-End Windows Store App - Part 2: Integrating Cloud Services (S. Somasegar) [3:36]&amp;nbsp;WP to W8: API Mapping (Jared Bienz) [4:44]&amp;nbsp;Evolving the Reflection API (Brandon Bray, Richard Lander, Mircea Trofin) [5:41]&amp;nbsp;TFS Shipping Cadence (Brian Harry) [7:25]&amp;nbsp;Visual Studio 2012 Application Lifecycle Management Virtual Machine and Hands-on-Labs / Demo Scripts (Brian Keller) [8:50]&amp;nbsp;ASP.NET MVC 4 Mobile Websites Succinctly (Free, reg-ware, ebook) (Lyle Luppes) [9:15]&amp;nbsp;A guide to asynchronous file uploads in ASP.NET Web API RTM (Filip Woj) Picks of the Week! Dan&#39;s Pick of the Week:[11:05] PNGGauntlet [Found Via: John Kurlak&#39;s Blog - Awesome PNG Compression Tool] Brian&#39;s Pick of the Week:[11:50] The History of the Floppy Disk (Steven Vaughan-Nichols) </itunes:summary>
      <itunes:duration>831</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-August-31-2012</link>
      <pubDate>Sat, 01 Sep 2012 02:32:54 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-August-31-2012</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.mp3" expression="full" duration="831" fileSize="13309496" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.mp4" expression="full" duration="831" fileSize="80255051" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.webm" expression="full" duration="831" fileSize="30920280" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.wma" expression="full" duration="831" fileSize="6730987" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.wmv" expression="full" duration="831" fileSize="46581359" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_high.mp4" expression="full" duration="831" fileSize="175439031" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_mid.mp4" expression="full" duration="831" fileSize="122395839" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012_Source.wmv" expression="full" duration="831" fileSize="119016302" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.ism/manifest" expression="full" duration="831" fileSize="6076" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/acc8/8119490b-5639-4091-92b0-c3092853acc8/TWC9August302012.wmv" length="46581359" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brian Keller, Dan Fernandez, Greg Duncan</dc:creator>
      <itunes:author>Brian Keller, Dan Fernandez, Greg Duncan</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-August-31-2012/RSS</wfw:commentRss>
      <category>.NET Framework</category>
      <category>ASP.NET</category>
      <category>MVC</category>
      <category>Team Foundation Server</category>
      <category>Windows Azure</category>
      <category>Windows Phone</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Edge Show 32 - Operations Manager Enhancements in System Center 2012 SP1</title>
      <description><![CDATA[<p><strong><u>News:</u></strong></p><ul><li><a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=0m20s">[00:20]</a> SQL Server 2008 R2 SP2 is now available! <a href="http://aka.ms/SQL2008R2SP2">http://aka.ms/SQL2008R2SP2</a> </li><li><a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=0m45s">[00:45]</a> SQL Server 2012 has released its Community Technology Preview (CTP) for SP1 <a href="http://aka.ms/SQL2012SP1CTP3">http://aka.ms/SQL2012SP1CTP3</a> </li><li><a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=1m20s">[01:20]</a> An update rollup is now available for System Center 2012 <a href="http://aka.ms/SC2012Update2">http://aka.ms/SC2012Update2</a> </li><li><a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=2m55s">[02:55]</a> Microsoft has released Outlook.com for advanced online email <a href="http://aka.ms/OutlookMail">http://aka.ms/OutlookMail</a> </li><li><a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=4m25s">[04:25]</a> Check out the new Infrastructure Planning and Design Guide for System Center 2012 Virtual Machine Manager (VMM) <a href="http://aka.ms/IPDGuide">http://aka.ms/IPDGuide</a> </li></ul><p><strong><u>Technical Interview:</u></strong> At <a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=6m10s">[06:10]</a> Symon met with Ake Pettersson, a Senior Program Manager for System Center, to discuss the upcoming changes in System Center 2012 SP1 for Operations Manager.&nbsp; Some of the enhancements to the infrastructure include monitoring improvements for storage and virtual networks, including adding diagrams of virtual networks to the network vicinity dashboard.&nbsp; Application Performance Monitoring (APM) has also expanded to support WCF, MVC, .NET Window Services, SharePoint 2010, Azure SDK as well as monitoring of external websites through the Global Service Monitor.&nbsp; Finally Ake discusses some of the enhancements to communications through improved dashboards and integration with Visual Studio and Team Foundation Server (TFS) to simplify the bug reporting process.&nbsp; At <a href="http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1#time=20m45s">[20:45]</a> Ake shows a series of demos for configuring APM and reporting to TFS.</p><p><strong><u>Connect with the Edge Team:</u></strong></p><p><a title="Facebook" href="https://www.facebook.com/group.php?gid=5850797374">Facebook</a> – <a title="Twitter" href="https://twitter.com/tnedge">Twitter</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:78d57cd394ef488bacafa0a80100ec49">]]></description>
      <comments>http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1</comments>
      <itunes:summary>News: [00:20] SQL Server 2008 R2 SP2 is now available! http://aka.ms/SQL2008R2SP2 [00:45] SQL Server 2012 has released its Community Technology Preview (CTP) for SP1 http://aka.ms/SQL2012SP1CTP3 [01:20] An update rollup is now available for System Center 2012 http://aka.ms/SC2012Update2 [02:55] Microsoft has released Outlook.com for advanced online email http://aka.ms/OutlookMail [04:25] Check out the new Infrastructure Planning and Design Guide for System Center 2012 Virtual Machine Manager (VMM) http://aka.ms/IPDGuide Technical Interview: At [06:10] Symon met with Ake Pettersson, a Senior Program Manager for System Center, to discuss the upcoming changes in System Center 2012 SP1 for Operations Manager.&amp;nbsp; Some of the enhancements to the infrastructure include monitoring improvements for storage and virtual networks, including adding diagrams of virtual networks to the network vicinity dashboard.&amp;nbsp; Application Performance Monitoring (APM) has also expanded to support WCF, MVC, .NET Window Services, SharePoint 2010, Azure SDK as well as monitoring of external websites through the Global Service Monitor.&amp;nbsp; Finally Ake discusses some of the enhancements to communications through improved dashboards and integration with Visual Studio and Team Foundation Server (TFS) to simplify the bug reporting process.&amp;nbsp; At [20:45] Ake shows a series of demos for configuring APM and reporting to TFS. Connect with the Edge Team: Facebook – Twitter </itunes:summary>
      <itunes:duration>1838</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1</link>
      <pubDate>Thu, 09 Aug 2012 20:42:13 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.mp3" expression="full" duration="1838" fileSize="29424776" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.mp4" expression="full" duration="1838" fileSize="175088741" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.webm" expression="full" duration="1838" fileSize="69457261" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.wma" expression="full" duration="1838" fileSize="14874831" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.wmv" expression="full" duration="1838" fileSize="132904745" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_high.mp4" expression="full" duration="1838" fileSize="385054003" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_mid.mp4" expression="full" duration="1838" fileSize="268769770" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe_Source.wmv" expression="full" duration="1838" fileSize="598684168" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.ism/manifest" expression="full" duration="1838" fileSize="8150" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/ffc2/5d3f5c75-7fe0-42e9-b89f-c3eb68c8ffc2/EdgeShow32OperationsManagerEnhancementsinSystemCe.wmv" length="132904745" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Symon Perriman</dc:creator>
      <itunes:author>Symon Perriman</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Edge/Edge-Show-32-Operations-Manager-Enhancements-in-System-Center-2012-SP1/RSS</wfw:commentRss>
      <category>Azure</category>
      <category>MVC</category>
      <category>sharepoint 2010</category>
      <category>SQL Server 2008 R2</category>
      <category>System Center Operations Manager</category>
      <category>TFS</category>
      <category>WCF</category>
      <category>Private Cloud</category>
      <category>SQL Server 2012</category>
      <category>System Center 2012</category>
      <category>System Center Virtual Machine Manager</category>
    </item>
  <item>
      <title>DEV281 - Visual Studio 11, .NET 4.5, and Parallelism LIVE Q&amp;A with Colin Bowern</title>
      <description><![CDATA[<p><strong><img src="http://techdays.ca/images/td-tv-logo.png" alt=""></strong></p><p>Live Q&amp;A with Colin Bowern.</p><p><strong>DEV281 - Visual Studio 11, .NET 4.5, and Parallelism<br></strong>We're still a few months away from its release, but the beta version of Visual Studio 11 and .NET 4.5 is available and with a Go-Live license too. With Visual Studio, reduction and simplification are the keywords. For .NET, assistance with parallelism this session is the big topic. Between these and other topics, the tools that will make your development life easier are covered.</p><p><a href="http://channel9.msdn.com/Blogs/techdaysca/DEV281" target="_blank">Watch the session &gt;&gt;</a></p><p><strong>This Session's Experts</strong></p><p>Colin Bowern (<a href="http://colinbowern.com" target="_self">Blog</a>, <a href="http://twitter.com/colinbowern" target="_blank">Twitter</a>, <a href="http://ca.linkedin.com/in/colinbowern" target="_blank">LinkedIn</a>)</p><p><em>This session was recorded live at ObjectSharp's annual &quot;At The Movies&quot; event - May 1, 2012, Scotiabank Theatre, Toronto, Ontario.</em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:bb8659b5806544bdb181a0590130a37e">]]></description>
      <comments>http://channel9.msdn.com/Blogs/techdaysca/DEV281QA</comments>
      <itunes:summary> Live Q&amp;amp;A with Colin Bowern. DEV281 - Visual Studio 11, .NET 4.5, and ParallelismWe&#39;re still a few months away from its release, but the beta version of Visual Studio 11 and .NET 4.5 is available and with a Go-Live license too. With Visual Studio, reduction and simplification are the keywords. For .NET, assistance with parallelism this session is the big topic. Between these and other topics, the tools that will make your development life easier are covered. Watch the session &amp;gt;&amp;gt; This Session&#39;s Experts Colin Bowern (Blog, Twitter, LinkedIn) This session was recorded live at ObjectSharp&#39;s annual &amp;quot;At The Movies&amp;quot; event - May 1, 2012, Scotiabank Theatre, Toronto, Ontario. </itunes:summary>
      <itunes:duration>355</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/techdaysca/DEV281QA</link>
      <pubDate>Tue, 22 May 2012 18:47:41 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/techdaysca/DEV281QA</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.mp3" expression="full" duration="355" fileSize="5687895" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.mp4" expression="full" duration="355" fileSize="33313391" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.webm" expression="full" duration="355" fileSize="4938" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.wma" expression="full" duration="355" fileSize="2879857" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.wmv" expression="full" duration="355" fileSize="46135615" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_high.mp4" expression="full" duration="355" fileSize="73211271" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_mid.mp4" expression="full" duration="355" fileSize="51013352" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA_Source.wmv" expression="full" duration="355" fileSize="51673147" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/0d09/7ff160d9-f52e-4d73-a2af-37a47dbf0d09/DEV281QA.wmv" length="46135615" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Colin Bowern, Jonathan Rozenblit</dc:creator>
      <itunes:author>Colin Bowern, Jonathan Rozenblit</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/techdaysca/DEV281QA/RSS</wfw:commentRss>
      <category>Developer Tools</category>
      <category>MVC</category>
      <category>Parallelism</category>
      <category>Async CTP</category>
      <category>.NET Framework 4.5</category>
      <category>Visual Studio 11</category>
      <category>Async</category>
    </item>
  <item>
      <title>DEV281 - Visual Studio 11, .NET 4.5, and Parallelism</title>
      <description><![CDATA[<p><strong><img src="http://techdays.ca/images/td-tv-logo.png" alt=""></strong></p><p>We're still a few months away from its release, but the beta version of Visual Studio 11 and .NET 4.5 is available and with a Go-Live license too. With Visual Studio, reduction and simplification are the keywords. For .NET, assistance with parallelism this session is the big topic. Between these and other topics, the tools that will make your development life easier are covered.</p><p><a href="http://channel9.msdn.com/Blogs/techdaysca/DEV281QA">Watch the live Q&amp;A with Colin Bowern &gt;&gt;</a></p><p><strong>This Session's Experts</strong></p><p>Colin Bowern (<a href="http://colinbowern.com" target="_self">Blog</a>, <a href="http://twitter.com/colinbowern" target="_blank">Twitter</a>, <a href="http://ca.linkedin.com/in/colinbowern" target="_blank">LinkedIn</a>)</p><p><em>This session was recorded live at ObjectSharp's annual &quot;At The Movies&quot; event - May 1, 2012, Scotiabank Theatre, Toronto, Ontario.</em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:46c7b06bc8214994970ea0590046228b">]]></description>
      <comments>http://channel9.msdn.com/Blogs/techdaysca/DEV281</comments>
      <itunes:summary> We&#39;re still a few months away from its release, but the beta version of Visual Studio 11 and .NET 4.5 is available and with a Go-Live license too. With Visual Studio, reduction and simplification are the keywords. For .NET, assistance with parallelism this session is the big topic. Between these and other topics, the tools that will make your development life easier are covered. Watch the live Q&amp;amp;A with Colin Bowern &amp;gt;&amp;gt; This Session&#39;s Experts Colin Bowern (Blog, Twitter, LinkedIn) This session was recorded live at ObjectSharp&#39;s annual &amp;quot;At The Movies&amp;quot; event - May 1, 2012, Scotiabank Theatre, Toronto, Ontario. </itunes:summary>
      <itunes:duration>1705</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/techdaysca/DEV281</link>
      <pubDate>Tue, 22 May 2012 17:18:20 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/techdaysca/DEV281</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.mp3" expression="full" duration="1705" fileSize="27286019" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.mp4" expression="full" duration="1705" fileSize="147506972" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.webm" expression="full" duration="1705" fileSize="4865" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.wma" expression="full" duration="1705" fileSize="13796395" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.wmv" expression="full" duration="1705" fileSize="245551715" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_high.mp4" expression="full" duration="1705" fileSize="344640249" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_mid.mp4" expression="full" duration="1705" fileSize="236804851" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281_Source.wmv" expression="full" duration="1705" fileSize="444769844" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.ism/manifest" expression="full" duration="1705" fileSize="5976" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/a54d/7437a40a-fbf2-4f71-aa3c-15315971a54d/DEV281.wmv" length="245551715" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Colin Bowern, Jonathan Rozenblit</dc:creator>
      <itunes:author>Colin Bowern, Jonathan Rozenblit</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/techdaysca/DEV281/RSS</wfw:commentRss>
      <category>Developer Tools</category>
      <category>MVC</category>
      <category>Parallelism</category>
      <category>Async CTP</category>
      <category>.NET Framework 4.5</category>
      <category>Visual Studio 11</category>
      <category>Async</category>
    </item>
  <item>
      <title>TWC9: VS Ultimate Roadmap, MVC/Web API/Razor Open Source, WP SDK 7.1.1 and more</title>
      <description><![CDATA[<p>This week on Channel 9, Dan and Brian discuss the week's top developer news, including:</p><ul><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=1m1s" target="_blank">[1:01]</a>&nbsp;<a href="http://blogs.msdn.com/b/jasonz/archive/2012/03/27/visual-studio-ultimate-roadmap.aspx">Visual Studio Ultimate Roadmap</a> (Jason Zander), <a href="http://www.peterprovost.org/blog/post/Whats-New-in-Visual-Studio-11-Beta-Unit-Testing.aspx">What's New in Visual Studio 11 Beta Unit Testing</a> (Peter Provost) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=3m44s" target="_blank">[3:44]</a> <a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx">ASP.NET MVC, Web API, Razor and Open Source</a> (Scott Guthrie), <a href="http://www.hanselman.com/blog/ASPNETMVC4ASPNETWebAPIAndASPNETWebPagesV2RazorNowAllOpenSourceWithContributions.aspx">ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions</a> (Scott Hanselman), <a href="http://aspnetwebstack.codeplex.com">http://aspnetwebstack.codeplex.com</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=5m52s" target="_blank">[5:52]</a> <a href="http://blogs.msdn.com/b/visualstudioalm/archive/2012/03/27/build-on-the-team-foundation-service.aspx">Build on the Team Foundation Service</a> [TFSPreview] (Aaron Bjork) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=6m48s" target="_blank">[6:48]</a> <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/03/26/wpsdk-711-now-available.aspx">Windows Phone SDK 7.1.1 Update Now Available</a> (Cliff Simpkins) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=8m43s" target="_blank">[8:43]</a> <a href="http://www.hanselman.com/blog/ExtendingTheVisualStudio11WebBrowserChooserAndBrowseWithMenuToIncludeDeveloperProfiles.aspx">Extending the Visual Studio 11 Web Browser Chooser and Browse With Menu to include Developer Profiles</a> (Scott Hanselman) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=9m59s" target="_blank">[9:59]</a> <a href="http://blogs.msdn.com/b/uscloud/archive/2012/03/22/windows-azure-for-the-asp-net-developer-series.aspx">Windows Azure for the ASP.NET Developer Series</a> (Peter Laudati) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=11m15s" target="_blank">[11:15]</a> <a href="http://coolthingoftheday.blogspot.com/2012/03/metro-xaml-and-html-control-sample.html">Metro XAML and HTML Control Sample Packs (Two downloads, bunches of controls sampled, lots of code examples, hours of...)</a> (Greg Duncan), <a href="http://code.msdn.microsoft.com/XAML-controls-sample-pack-7ae99c95">XAML controls sample pack</a>, <a href="http://code.msdn.microsoft.com/HTML-controls-sample-pack-b5ab1e0b">HTML controls sample pack</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=12m20s" target="_blank">[12:20]</a> <a href="http://blogs.msdn.com/b/windowsappdev/archive/2012/03/23/activating-windows-8-contracts-in-your-app.aspx">Activating Windows 8 contracts in your app</a> (Windows 8 app developer blog) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=14m28s" target="_blank">[14:28]</a> <a href="http://www.mindscapehq.com/blog/index.php/2012/03/27/5-12-f-features-every-c-programmer-should-lust-after/">5 1/2 F# features every C# programmer should lust after</a> (Mindscape) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=16m57s" target="_blank">[16:57]</a> <a href="http://blogs.msdn.com/b/ssdt/archive/2012/03/23/schema-compare-improvements.aspx">Schema Compare Improvements</a> (Bill Gibson) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=18m5s" target="_blank">[18:05]</a> <a href="http://sqlblog.com/blogs/jamie_thomson/archive/2012/03/27/adventureworks2012-now-available-to-all-on-sql-azure.aspx">AdventureWorks2012 now available for all on SQL Azure</a> (Jamie Thomson) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=18m42s" target="_blank">[18:52]</a> <a href="http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands">Techdays 2012 the Netherlands</a>, <a href="http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2163">Using Windows Azure with Windows Phone, iOS, Android, and Windows 8</a> (Nick Harris) </li></ul><p>Picks of the Week!</p><ul><li>Brian's Pick of the Week: <a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=19m24s" target="_blank">[19:24]</a> <a href="http://dotnet.dzone.com/articles/porting-visual-studio-2">Porting Visual Studio Achievements for WP to Windows 8</a> (Den Delimarsky) </li><li>Dan's Pick of the Week: <a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-Mar-30-2012#time=20m5s" target="_blank">[20:05]</a> <a href="http://www.makemayhem.com" target="_blank">Make Mayhem</a> </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1d0d9645518546d090cea0240039f8eb">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-Mar-30-2012</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian discuss the week&#39;s top developer news, including: [1:01]&amp;nbsp;Visual Studio Ultimate Roadmap (Jason Zander), What&#39;s New in Visual Studio 11 Beta Unit Testing (Peter Provost) [3:44] ASP.NET MVC, Web API, Razor and Open Source (Scott Guthrie), ASP.NET MVC 4, ASP.NET Web API and ASP.NET Web Pages v2 (Razor) now all open source with contributions (Scott Hanselman), http://aspnetwebstack.codeplex.com [5:52] Build on the Team Foundation Service [TFSPreview] (Aaron Bjork) [6:48] Windows Phone SDK 7.1.1 Update Now Available (Cliff Simpkins) [8:43] Extending the Visual Studio 11 Web Browser Chooser and Browse With Menu to include Developer Profiles (Scott Hanselman) [9:59] Windows Azure for the ASP.NET Developer Series (Peter Laudati) [11:15] Metro XAML and HTML Control Sample Packs (Two downloads, bunches of controls sampled, lots of code examples, hours of...) (Greg Duncan), XAML controls sample pack, HTML controls sample pack [12:20] Activating Windows 8 contracts in your app (Windows 8 app developer blog) [14:28] 5 1/2 F# features every C# programmer should lust after (Mindscape) [16:57] Schema Compare Improvements (Bill Gibson) [18:05] AdventureWorks2012 now available for all on SQL Azure (Jamie Thomson) [18:52] Techdays 2012 the Netherlands, Using Windows Azure with Windows Phone, iOS, Android, and Windows 8 (Nick Harris) Picks of the Week! Brian&#39;s Pick of the Week: [19:24] Porting Visual Studio Achievements for WP to Windows 8 (Den Delimarsky) Dan&#39;s Pick of the Week: [20:05] Make Mayhem </itunes:summary>
      <itunes:duration>1391</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-Mar-30-2012</link>
      <pubDate>Fri, 30 Mar 2012 18:48:13 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-Mar-30-2012</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.mp3" expression="full" duration="1391" fileSize="22269281" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.mp4" expression="full" duration="1391" fileSize="134129699" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.webm" expression="full" duration="1391" fileSize="53653807" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.wma" expression="full" duration="1391" fileSize="11261019" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.wmv" expression="full" duration="1391" fileSize="188733829" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_high.mp4" expression="full" duration="1391" fileSize="291501558" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_mid.mp4" expression="full" duration="1391" fileSize="203955653" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012_Source.wmv" expression="full" duration="1391" fileSize="226694101" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.ism/manifest" expression="full" duration="1391" fileSize="6046" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/b028/322339c9-2782-4d87-a33d-83583154b028/TWC9Mar302012.wmv" length="188733829" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brian Keller, Dan Fernandez, Greg Duncan</dc:creator>
      <itunes:author>Brian Keller, Dan Fernandez, Greg Duncan</itunes:author>
      <slash:comments>9</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-Mar-30-2012/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>F#</category>
      <category>MVC</category>
      <category>SQL Azure</category>
      <category>Team Foundation Server</category>
      <category>Windows Azure</category>
      <category>Windows Phone 7</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Home Automation with some help from jQuery Mobile, MVC and Netduino</title>
      <description><![CDATA[<p>Today's Hardware Friday provides us with a number of things to see in action. Mobile app, jQuery, MVC and some Netduino too...And it's just kind of funny.</p><h2><a href="http://www.codeproject.com/Articles/344471/Using-jQuery-Mobile-with-MVC-and-Netduino-for-Home" target="_blank">Using jQuery Mobile with MVC and Netduino for Home Automation</a></h2><blockquote><p>This article is great for anybody learning jQuery Mobile or building mobile applications with MVC3. I built a remote control for my phone to control a squirt gun for my pool, open my garage door, water the garden and control for my gas fireplace using jQuery Mobile with MVC and a Netduino</p><p>How often do you lose your remote control? I hate looking for the remote and family members always seem to hide it from me. I decided to turn my smartphone into the universal remote control for the house which is perfect for me because I'm almost always an arm's length away from it. My wife does not feel the same way about her phone so I had to build external controls as well for our home automation. So far my home automation includes remote controlling a squirt gun for my pool, opening my garage door, watering the garden and I just added control for my gas fireplace! <a href="http://www.codeproject.com/Articles/314774/Home-Automation-with-Netduino-and-Kinect">Be sure to see my article entitled Home Automation with Netduino and Kinect for more information and code examples.</a></p><p>My first attempts at building mobile apps for my home automation projects involved building native apps for Windows Phone 7 and Android. The apps served their purpose, but other than the backend web services there was no reuse of the code between the apps written for the different mobile operating systems. The problem was compounded because each family member had their own favorite mobile device with different mobile operating systems. jQuery Mobile and HTML5 solved the problem of making the remote work across a wide variety of devices. Now I have one codebase that works on iOS, Android, Windows Phone, and most of the relevant mobile devices.</p></blockquote><p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/kLBITYi72gg&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/kLBITYi72gg&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p><blockquote><h4>Talking to the Hardware</h4><p>With my jQuery Mobile app, most of the code is running locally on the device. I wrote a MVC controller method that runs on the server to talk to the Netduino called SendMessageToNetduino. The method is called using Ajax from the mobile device.</p><p><pre class="brush: csharp">public ContentResult SendMessageToNetduino(string message, string status)
{
    bool sendToNetduino = bool.Parse(WebConfigurationManager.AppSettings[&quot;SendToNetduino&quot;]);
    if (sendToNetduino)
    {
        CommunicateWithNetduino.GetInstance().SendMessage(message);
    }

    return Content(status);
}
</pre></p><p>The method is a simple pass-through that takes a message sent from Ajax from the mobile device over the internet, and then relays the message behind the firewall over the local network to the Netduino .net microcontroller. The Netduino Plus is a microcontroller that runs C# in the .Net Micro Framework. The Netduino Plus has a built in Ethernet adapter for network communication. <a href="http://www.codeproject.com/Articles/314774/Home-Automation-with-Netduino-and-Kinect">For more information and code examples of how to talk with the microcontroller, please read my article entitled Home Automation with Netduino and Kinect</a>.</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B9%5D-13.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb%5B3%5D-35.png" alt="image" width="541" height="407" border="0"></a></p><p>The above image shows the communication between the jQuery Mobile app and the Netduino microcontroller. Note that the same jQuery Mobile app runs on multiple devices with different mobile operating systems.</p><p>I wrote a MVC Razor @helper method to encapsulate the logic required to talk to the Netduino.</p><p><pre class="brush: csharp">@helper NetduinoButton(string buttonText, string netduinoMessage, string statusMessage, string dataIcon, AjaxHelper ajax) {
    @ajax.ActionLink(buttonText, &quot;SendMessageToNetduino&quot;, &quot;Home&quot;,
        new {
            message = netduinoMessage,
            status = statusMessage
        },
        new AjaxOptions {
            UpdateTargetId = &quot;serverMessage&quot;,
            InsertionMode = InsertionMode.Replace,
            HttpMethod = &quot;Get&quot;
        },
        new { 
            data_role = &quot;button&quot;, 
            rel = &quot;external&quot;, 
            data_icon = dataIcon,
            data_theme =&quot;a&quot;
        })
}</pre></p><p>With my NetduinoButton @helper method, adding a button to control a device can be done in view by adding a simple line of code. The code below adds a button the open the garage door.</p><p><pre class="brush: csharp">@Content.NetduinoButton(&quot;Garage&quot;, &quot;C&quot;, &quot;Garage Door.&quot;, &quot;&quot;, Ajax)</pre></p><p>...</p><p>With jQuery Mobile and HTML5 you can build mobile websites and applications that work on most of the relevant mobile operating systems and devices. The MVC framework works well with jQuery Mobile to keep you from writing duplicate code. The Razor view engine enables better code reuse and also facilitates more readable code. jQuery Mobile allows you to theme your mobile websites/apps to look great like native apps.</p></blockquote><p>Here's the Solution;</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B6%5D-31.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb%5B2%5D-40.png" alt="image" width="231" height="427" border="0"></a></p><p>Here's a snip of code from the project;</p><p><pre class="brush: csharp">public class CommunicateWithNetduino
  {
      private static CommunicateWithNetduino _communicateWithNetduino;
      private Socket _clientSocket = null;
      private Thread _listeningThread;
      private int _port = 80;
      private string _netduinoAddress = null;
      private ISynchronizeInvoke _callingThreadContextToInvoke;

      //Enforce that this class is a singleton that other classes can’t instantiate 
      private CommunicateWithNetduino()
      {
      }
      public int Port
      {
          set { _port = value; }
          get { return _port; }
      }
      public string NetduinoAddress
      {
          set { _netduinoAddress = value; }
          get { return _netduinoAddress; }
      }

      public event EventHandler&lt;MessageEventArgs&gt; EventHandlerMessageReceived;
      public event EventHandler&lt;MessageEventArgs&gt; EventHandlerStatusUpdate;

      //Singleton factory method to load and get the single instance
      public static CommunicateWithNetduino GetInstance()
      {
          if (_communicateWithNetduino == null)
          {
              _communicateWithNetduino = new CommunicateWithNetduino();
              _communicateWithNetduino.Port = 8000;
              _communicateWithNetduino.NetduinoAddress = &quot;192.168.40.100&quot;;  //IP Address Must be valid for your network

          }

          return _communicateWithNetduino;
      }

      public void StartListening(ISynchronizeInvoke CallingThreadContextToInvoke)
      {
          _listeningThread = new Thread(new ThreadStart(ReceiveSocketsInBackgroundThread));
          _listeningThread.IsBackground = true;
          _listeningThread.Start();
          _callingThreadContextToInvoke = CallingThreadContextToInvoke;
      }

      public void SendMessage(string message)
      {
          if (_netduinoAddress != null &amp;&amp; _port &gt; 0)
          {
              using (System.Net.Sockets.Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
              {
                  IPAddress address = IPAddress.Parse(_netduinoAddress);
                  IPEndPoint endpoint = new IPEndPoint(address, _port);

                  try
                  {
                      socket.Connect(endpoint);
                      socket.Send(Encoding.UTF8.GetBytes(message));
                      socket.Close();
                  }
                  catch (SocketException se)
                  {
                      RaiseEvent(EventHandlerStatusUpdate, &quot;Socket Exception! Probably bad ip or netduino not ready?&quot;);
                  }
              }
          }
      }
</pre></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0e74058bc34c4dca94f6a0170146f65c">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/Home-Automation-with-some-help-from-jQuery-Mobile-MVC-and-Netduino</comments>
      <itunes:summary>Today&#39;s Hardware Friday provides us with a number of things to see in action. Mobile app, jQuery, MVC and some Netduino too...And it&#39;s just kind of funny. Using jQuery Mobile with MVC and Netduino for Home AutomationThis article is great for anybody learning jQuery Mobile or building mobile applications with MVC3. I built a remote control for my phone to control a squirt gun for my pool, open my garage door, water the garden and control for my gas fireplace using jQuery Mobile with MVC and a Netduino How often do you lose your remote control? I hate looking for the remote and family members always seem to hide it from me. I decided to turn my smartphone into the universal remote control for the house which is perfect for me because I&#39;m almost always an arm&#39;s length away from it. My wife does not feel the same way about her phone so I had to build external controls as well for our home automation. So far my home automation includes remote controlling a squirt gun for my pool, opening my garage door, watering the garden and I just added control for my gas fireplace! Be sure to see my article entitled Home Automation with Netduino and Kinect for more information and code examples. My first attempts at building mobile apps for my home automation projects involved building native apps for Windows Phone 7 and Android. The apps served their purpose, but other than the backend web services there was no reuse of the code between the apps written for the different mobile operating systems. The problem was compounded because each family member had their own favorite mobile device with different mobile operating systems. jQuery Mobile and HTML5 solved the problem of making the remote work across a wide variety of devices. Now I have one codebase that works on iOS, Android, Windows Phone, and most of the relevant mobile devices.  Talking to the HardwareWith my jQuery Mobile app, most of the code is running locally on the device. I wrote a MVC controller method that runs on the s</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/Home-Automation-with-some-help-from-jQuery-Mobile-MVC-and-Netduino</link>
      <pubDate>Fri, 23 Mar 2012 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/Home-Automation-with-some-help-from-jQuery-Mobile-MVC-and-Netduino</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/1b1104e1-30b3-4abb-abce-83466da55a6d.png" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/af5374c7-1626-4fe4-8447-50bbb5ee65e3.png" height="165" width="220"></media:thumbnail>      
      <dc:creator>Greg Duncan</dc:creator>
      <itunes:author>Greg Duncan</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/Home-Automation-with-some-help-from-jQuery-Mobile-MVC-and-Netduino/RSS</wfw:commentRss>
      <category>Coding4Fun</category>
      <category>jQuery</category>
      <category>MVC</category>
    </item>
  <item>
      <title>Checking In: Marcin Dobosz - MVC, NuGet and the Open Web</title>
      <description><![CDATA[ <p>Welcome to the latest edition of Checking In with Erik Meijer! This time around Erik interrogates Marcin Dobosz, a software engineer working on MVC and NuGet packaging. Marcin writes tools that makes the lives of web developers even more productive and open. Open? What does that mean, exactly?&nbsp;What <em>will</em> Erik ask the young Jedi?</p><p>Thank you Marcin for having the courage&nbsp;to withstand a truly impromptu conversation led by one of the world's foremost language designers and cloud programmability theorists (new title for Erik? <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' />). It's always <em>great</em> to meet and&nbsp;learn about&nbsp;the folks at Microsoft who write and check code in for a living. Keep on coding, Marcin!</p><p>Enjoy!</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:dd03d9dc2b814c5cb98c9f4e017eeeae">]]></description>
      <comments>http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Marcin-Dobosz-MVC-NuGet-and-the-Open-Web</comments>
      <itunes:summary> Welcome to the latest edition of Checking In with Erik Meijer! This time around Erik interrogates Marcin Dobosz, a software engineer working on MVC and NuGet packaging. Marcin writes tools that makes the lives of web developers even more productive and open. Open? What does that mean, exactly?&amp;nbsp;What will Erik ask the young Jedi? Thank you Marcin for having the courage&amp;nbsp;to withstand a truly impromptu conversation led by one of the world&#39;s foremost language designers and cloud programmability theorists (new title for Erik? ). It&#39;s always great to meet and&amp;nbsp;learn about&amp;nbsp;the folks at Microsoft who write and check code in for a living. Keep on coding, Marcin! Enjoy! </itunes:summary>
      <itunes:duration>2385</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Marcin-Dobosz-MVC-NuGet-and-the-Open-Web</link>
      <pubDate>Thu, 08 Sep 2011 18:49:32 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Marcin-Dobosz-MVC-NuGet-and-the-Open-Web</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_2MB_ch9.wmv" expression="full" duration="2385" fileSize="340188083" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_ch9.mp3" expression="full" duration="2385" fileSize="19084097" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_ch9.wma" expression="full" duration="2385" fileSize="19296665" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_ch9.wmv" expression="full" duration="2385" fileSize="372931741" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_high_ch9.mp4" expression="full" duration="2385" fileSize="856373633" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_low_ch9.mp4" expression="full" duration="2385" fileSize="193189005" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget.ism/manifest" expression="full" duration="2385" fileSize="5332" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/eeae/dd03d9dc-2b81-4c5c-b98c-9f4e017eeeae/CheckingInMarcinMVCNuget_ch9.wmv" length="372931741" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>7</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Marcin-Dobosz-MVC-NuGet-and-the-Open-Web/RSS</wfw:commentRss>
      <category>ASP.NET MVC</category>
      <category>Erik Meijer</category>
      <category>MVC</category>
      <category>NuGet</category>
    </item>
  <item>
      <title>Tweaking T4 Templates to Improve Script Performance</title>
      <description><![CDATA[ <p>In this DevNugget, a follow-up to part 1, <a href="http://channel9.msdn.com/Shows/DevNuggets/Make-Script-Performance-Automatic-with-Custom-Templates-in-Visual-Studio-2010-Part-1" target="_blank">Make Script Performance Automatic with Custom Templates in Visual Studio 2010</a>, Developer Evangelist G. Andrew Duthie shows you how you can&nbsp;customize the T4&nbsp;templates used for creating new Views in an MVC3 application, to move script references to the bottom of the page. Why the bottom? As explained in the previous installment, because some browsers won't load any additional content while they're busy downloading a script, so if you're loading a large script file from an external site, or if that external site isn't available, your entire page may be blocked from loading. Yikes!</p><p>Along the way, you'll learn a bit about quickly creating an MVC3 application using Entity Framework Code First and MVC3 Scaffolding.</p><p>For those of you who like your tutorials in step-by-step format, check out the <a href="http://devhammer.net/blog/tweaking-add-item-templates-for-better-script-performance" target="_blank">accompanying blog post at devhammer.net</a>.</p><p>Some additional resources:</p><ul><li><a href="http://devhammer.net/blog/make-script-performance-automatic-with-custom-templates-in-visual-studio-2010" target="_blank">Rey Bango's HTML5 Template for VS2010 Instructions</a></li><li><a href="http://www.hanselman.com/blog/ModifyingTheDefaultCodeGenerationscaffoldingTemplatesInASPNETMVC.aspx" target="_blank">Scott Hanselman on per-project T4 Template Modification</a></li><li><a href="http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html" target="_blank">Brad Wilson on Unobtrusive Validation in MVC3</a></li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6c06df0d0f874f4dabb59f1a010268ef">]]></description>
      <comments>http://channel9.msdn.com/Shows/DevNuggets/Tweaking-T4-Templates-to-Improve-Script-Performance</comments>
      <itunes:summary> In this DevNugget, a follow-up to part 1, Make Script Performance Automatic with Custom Templates in Visual Studio 2010, Developer Evangelist G. Andrew Duthie shows you how you can&amp;nbsp;customize the T4&amp;nbsp;templates used for creating new Views in an MVC3 application, to move script references to the bottom of the page. Why the bottom? As explained in the previous installment, because some browsers won&#39;t load any additional content while they&#39;re busy downloading a script, so if you&#39;re loading a large script file from an external site, or if that external site isn&#39;t available, your entire page may be blocked from loading. Yikes! Along the way, you&#39;ll learn a bit about quickly creating an MVC3 application using Entity Framework Code First and MVC3 Scaffolding. For those of you who like your tutorials in step-by-step format, check out the accompanying blog post at devhammer.net. Some additional resources: Rey Bango&#39;s HTML5 Template for VS2010 InstructionsScott Hanselman on per-project T4 Template ModificationBrad Wilson on Unobtrusive Validation in MVC3</itunes:summary>
      <itunes:duration>965</itunes:duration>
      <link>http://channel9.msdn.com/Shows/DevNuggets/Tweaking-T4-Templates-to-Improve-Script-Performance</link>
      <pubDate>Fri, 08 Jul 2011 17:49:09 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/DevNuggets/Tweaking-T4-Templates-to-Improve-Script-Performance</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_2MB_ch9.wmv" expression="full" duration="965" fileSize="49820841" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_2MB_ch9.wmv" expression="full" duration="965" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_ch9.mp3" expression="full" duration="965" fileSize="7722367" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_ch9.wma" expression="full" duration="965" fileSize="7818383" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_high_ch9.mp4" expression="full" duration="965" fileSize="243520981" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_low_ch9.mp4" expression="full" duration="965" fileSize="21761417" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/68ef/6c06df0d-0f87-4f4d-abb5-9f1a010268ef/TweakingT4Templates_2MB_ch9.wmv" length="49820841" type="video/x-ms-wmv"></enclosure>
      <dc:creator>G. Andrew Duthie</dc:creator>
      <itunes:author>G. Andrew Duthie</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/DevNuggets/Tweaking-T4-Templates-to-Improve-Script-Performance/RSS</wfw:commentRss>
      <category>JavaScript</category>
      <category>MVC</category>
      <category>Performance</category>
      <category>Visual Studio 2010</category>
    </item>
  <item>
      <title>ASP.NET MVC With Community Tools Part 11: KnockoutJS</title>
      <description><![CDATA[ <p>In this video, Brandon Satrom continues the screencast series &quot;Using ASP.NET MVC With Community Tools&quot; with an overview of KnockoutJS, a MVVM framework for creating rich, interactive JavaScript UIs. Brandon will demonstrate how you can use Knockout to define view models for your pages, and use Knockout's declarative binding syntax to keep that view model in sync as it is used in several places in an application. Finally, Brandon will demonstrate how&nbsp;Knockout integrates easily with ASP.NET MVC applications.</p><p>To install Knockout, just type install-package KnockoutJS in the Package Manager Console. To learn more, check out:&nbsp;<a href="http://www.knockoutjs.com">knockoutjs.com</a>.</p><p>For other episodes in this series, check out:&nbsp;<a href="http://bit.ly/mvcscreencasts">http://bit.ly/mvcscreencasts.</a></p><p>Also visit Brandon's blog at&nbsp;<a href="http://www.userinexperience.com">http://www.userinexperience.com</a>&nbsp;or follow Brandon on Twitter at&nbsp;<a href="http://www.twitter.com/BrandonSatrom">@BrandonSatrom</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e6c9d99f68164bd191639f100131119e">]]></description>
      <comments>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-11-KnockoutJS</comments>
      <itunes:summary> In this video, Brandon Satrom continues the screencast series &amp;quot;Using ASP.NET MVC With Community Tools&amp;quot; with an overview of KnockoutJS, a MVVM framework for creating rich, interactive JavaScript UIs. Brandon will demonstrate how you can use Knockout to define view models for your pages, and use Knockout&#39;s declarative binding syntax to keep that view model in sync as it is used in several places in an application. Finally, Brandon will demonstrate how&amp;nbsp;Knockout integrates easily with ASP.NET MVC applications. To install Knockout, just type install-package KnockoutJS in the Package Manager Console. To learn more, check out:&amp;nbsp;knockoutjs.com. For other episodes in this series, check out:&amp;nbsp;http://bit.ly/mvcscreencasts. Also visit Brandon&#39;s blog at&amp;nbsp;http://www.userinexperience.com&amp;nbsp;or follow Brandon on Twitter at&amp;nbsp;@BrandonSatrom </itunes:summary>
      <itunes:duration>1210</itunes:duration>
      <link>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-11-KnockoutJS</link>
      <pubDate>Tue, 28 Jun 2011 20:55:06 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-11-KnockoutJS</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_2MB_ch9.wmv" expression="full" duration="1210" fileSize="36761129" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_2MB_ch9.wmv" expression="full" duration="1210" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_ch9.mp3" expression="full" duration="1210" fileSize="9686149" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_ch9.wma" expression="full" duration="1210" fileSize="9804027" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_high_ch9.mp4" expression="full" duration="1210" fileSize="332669552" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_low_ch9.mp4" expression="full" duration="1210" fileSize="39325258" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/119e/e6c9d99f-6816-4bd1-9163-9f100131119e/11KnockoutJS_2MB_ch9.wmv" length="36761129" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brandon Satrom</dc:creator>
      <itunes:author>Brandon Satrom</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-11-KnockoutJS/rss</wfw:commentRss>
      <category>ASP.NET</category>
      <category>ASP.NET MVC</category>
      <category>JavaScript</category>
      <category>MVC</category>
      <category>MVVM</category>
      <category>OSS</category>
    </item>
  <item>
      <title>Make Script Performance Automatic with Custom Templates in Visual Studio 2010 - Part 1</title>
      <description><![CDATA[ <p>In this DevNugget, Developer Evangelist G. Andrew Duthie shows you how you can create your own custom templates for your web application, with script references moved to the bottom of the page. Why the bottom? Because some browsers won't load any additional content while they're busy downloading a script, so if you're loading a large script file from an external site, or if that external site isn't available, your entire page may be blocked from loading. Yikes!</p><p>For those of you who like your tutorials in step-by-step format, check out the <a href="http://devhammer.net/blog/make-script-performance-automatic-with-custom-templates-in-visual-studio-2010" target="_blank">accompanying blog post at devhammer.net</a>.</p><p>Some additional resources:</p><ul><li><a href="http://msdn.microsoft.com/en-us/library/6db0hwky.aspx" target="_blank">Visual Studio Templates on MSDN</a></li><li><a href="http://msdn.microsoft.com/en-us/library/ms247119.aspx" target="_blank">Template Customization on MSDN</a></li><li><a href="http://stackoverflow.com/questions/143486/unobtrusive-javascript-script-at-the-top-or-the-bottom-of-the-html-code" target="_blank">Discussion of positioning scripts on StackOverflow</a></li><li><a href="http://www.asp.net/ajaxlibrary/cdn.ashx" target="_blank">ASP.NET AJAX CDN</a></li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:a048a851f8144a18b9419f02014c2c87">]]></description>
      <comments>http://channel9.msdn.com/Shows/DevNuggets/Make-Script-Performance-Automatic-with-Custom-Templates-in-Visual-Studio-2010-Part-1</comments>
      <itunes:summary> In this DevNugget, Developer Evangelist G. Andrew Duthie shows you how you can create your own custom templates for your web application, with script references moved to the bottom of the page. Why the bottom? Because some browsers won&#39;t load any additional content while they&#39;re busy downloading a script, so if you&#39;re loading a large script file from an external site, or if that external site isn&#39;t available, your entire page may be blocked from loading. Yikes! For those of you who like your tutorials in step-by-step format, check out the accompanying blog post at devhammer.net. Some additional resources: Visual Studio Templates on MSDNTemplate Customization on MSDNDiscussion of positioning scripts on StackOverflowASP.NET AJAX CDN</itunes:summary>
      <itunes:duration>495</itunes:duration>
      <link>http://channel9.msdn.com/Shows/DevNuggets/Make-Script-Performance-Automatic-with-Custom-Templates-in-Visual-Studio-2010-Part-1</link>
      <pubDate>Tue, 14 Jun 2011 20:42:37 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/DevNuggets/Make-Script-Performance-Automatic-with-Custom-Templates-in-Visual-Studio-2010-Part-1</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_2MB_ch9.wmv" expression="full" duration="495" fileSize="29626624" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_ch9.mp3" expression="full" duration="495" fileSize="3961432" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_ch9.wma" expression="full" duration="495" fileSize="4018323" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_ch9.wmv" expression="full" duration="495" fileSize="22056398" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_high_ch9.mp4" expression="full" duration="495" fileSize="127482410" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_low_ch9.mp4" expression="full" duration="495" fileSize="10639262" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/2c87/a048a851-f814-4a18-b941-9f02014c2c87/CustomTemplatesPart1_ch9.wmv" length="22056398" type="video/x-ms-wmv"></enclosure>
      <dc:creator>G. Andrew Duthie</dc:creator>
      <itunes:author>G. Andrew Duthie</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/DevNuggets/Make-Script-Performance-Automatic-with-Custom-Templates-in-Visual-Studio-2010-Part-1/RSS</wfw:commentRss>
      <category>JavaScript</category>
      <category>MVC</category>
      <category>Performance</category>
      <category>Visual Studio 2010</category>
    </item>
  <item>
      <title>ASP.NET MVC With Community Tools Part 8: MvcScaffolding</title>
      <description><![CDATA[ <p>In this video, Brandon Satrom continues the screencast series &quot;Using ASP.NET MVC With Community Tools&quot; with an overview of MvcScaffolding, a scaffolding package that helps you quickly generate Controllers and Views in ASP.NET Applications from an existing POCO model.</p><p>To install MvcScaffolding, just type install-package MvcScaffolding in the Package Manager Console. To learn more, check out: <a href="mvcscaffolding.codeplex.com">mvcscaffolding.codeplex.com</a>.</p><p>For other episodes in this series, check out: <a href="http://bit.ly/mvcscreencasts">http://bit.ly/mvcscreencasts.</a></p><p>Also visit Brandon's blog at <a href="http://www.userinexperience.com">http://www.userinexperience.com</a> or follow Brandon on Twitter at <a href="http://www.twitter.com/BrandonSatrom">@BrandonSatrom</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:8113d5d7acc74890affc9ebe016c06c8">]]></description>
      <comments>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-8-MvcScaffolding</comments>
      <itunes:summary> In this video, Brandon Satrom continues the screencast series &amp;quot;Using ASP.NET MVC With Community Tools&amp;quot; with an overview of MvcScaffolding, a scaffolding package that helps you quickly generate Controllers and Views in ASP.NET Applications from an existing POCO model. To install MvcScaffolding, just type install-package MvcScaffolding in the Package Manager Console. To learn more, check out: mvcscaffolding.codeplex.com. For other episodes in this series, check out: http://bit.ly/mvcscreencasts. Also visit Brandon&#39;s blog at http://www.userinexperience.com or follow Brandon on Twitter at @BrandonSatrom </itunes:summary>
      <itunes:duration>1080</itunes:duration>
      <link>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-8-MvcScaffolding</link>
      <pubDate>Mon, 11 Apr 2011 12:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-8-MvcScaffolding</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_2MB_ch9.wmv" expression="full" duration="1080" fileSize="32893333" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_2MB_ch9.wmv" expression="full" duration="1080" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_ch9.mp3" expression="full" duration="1080" fileSize="8644391" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_ch9.wma" expression="full" duration="1080" fileSize="8749621" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_high_ch9.mp4" expression="full" duration="1080" fileSize="292818873" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_low_ch9.mp4" expression="full" duration="1080" fileSize="31460567" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/06c8/8113d5d7-acc7-4890-affc-9ebe016c06c8/Part8MvcScaffolding_2MB_ch9.wmv" length="32893333" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brandon Satrom</dc:creator>
      <itunes:author>Brandon Satrom</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/ASPNET-MVC-With-Community-Tools-Part-8-MvcScaffolding/rss</wfw:commentRss>
      <category>ASP.NET</category>
      <category>ASP.NET MVC 3</category>
      <category>MVC</category>
      <category>OSS</category>
    </item>
  <item>
      <title>mvcConf 2 - John Sheehan: Intro to Building Twilio Apps with ASP.NET MVC</title>
      <description><![CDATA[ <p>Tired of returning boring ol' HTML in your MVC views? Why not control phone calls instead. This talk will go over how you can build a specialized server using MVC to easily build powerful voice and SMS applications using Twilio.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ed1132bea57c46fc9a6d9e8a0121bf06">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-John-Sheehan-Intro-to-Building-Twilio-Apps-with-ASPNET-MVC</comments>
      <itunes:summary> Tired of returning boring ol&#39; HTML in your MVC views? Why not control phone calls instead. This talk will go over how you can build a specialized server using MVC to easily build powerful voice and SMS applications using Twilio. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>3124</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-John-Sheehan-Intro-to-Building-Twilio-Apps-with-ASPNET-MVC</link>
      <pubDate>Thu, 17 Feb 2011 17:47:54 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-John-Sheehan-Intro-to-Building-Twilio-Apps-with-ASPNET-MVC</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_2MB_ch9.wmv" expression="full" duration="3124" fileSize="89992739" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_ch9.mp3" expression="full" duration="3124" fileSize="24996451" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_ch9.wma" expression="full" duration="3124" fileSize="25277631" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_ch9.wmv" expression="full" duration="3124" fileSize="108312178" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_high_ch9.mp4" expression="full" duration="3124" fileSize="784875747" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_low_ch9.mp4" expression="full" duration="3124" fileSize="58142023" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_Zune_ch9.wmv" expression="full" duration="3124" fileSize="167416232" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2.ism/manifest" expression="full" duration="3124" fileSize="6260" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/BF06/ED1132BE-A57C-46FC-9A6D-9E8A0121BF06/mvcconfjohnsheehanV2_ch9.wmv" length="108312178" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-John-Sheehan-Intro-to-Building-Twilio-Apps-with-ASPNET-MVC/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Sebastien Lambla: Building composite web applications with Open frameworks</title>
      <description><![CDATA[ <p>A wave of change is coming to Web development on .NET. Packaging technologies are bringing dependency management to .NET for the first time, streamlining development workflow and creating new possibilities for deployment and administration. The sky's the limit, and in this session we'll explore how open frameworks can help us get there.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c18523f53e8249739bbd9e8b010a37e4">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Sebastien-Lambla-Building-composite-web-applications-with-Open-frameworks</comments>
      <itunes:summary> A wave of change is coming to Web development on .NET. Packaging technologies are bringing dependency management to .NET for the first time, streamlining development workflow and creating new possibilities for deployment and administration. The sky&#39;s the limit, and in this session we&#39;ll explore how open frameworks can help us get there. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>2728</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Sebastien-Lambla-Building-composite-web-applications-with-Open-frameworks</link>
      <pubDate>Tue, 15 Feb 2011 23:59:15 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Sebastien-Lambla-Building-composite-web-applications-with-Open-frameworks</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_2MB_ch9.wmv" expression="full" duration="2728" fileSize="68681215" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_ch9.mp3" expression="full" duration="2728" fileSize="21831693" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_ch9.wma" expression="full" duration="2728" fileSize="22072363" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_ch9.wmv" expression="full" duration="2728" fileSize="92197802" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_high_ch9.mp4" expression="full" duration="2728" fileSize="685034711" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_low_ch9.mp4" expression="full" duration="2728" fileSize="50632473" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_Zune_ch9.wmv" expression="full" duration="2728" fileSize="143669856" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla.ism/manifest" expression="full" duration="2728" fileSize="6180" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/37E4/C18523F5-3E82-4973-9BBD-9E8B010A37E4/mvcconfseblambla_ch9.wmv" length="92197802" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Sebastien-Lambla-Building-composite-web-applications-with-Open-frameworks/RSS</wfw:commentRss>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Steve Hebert: ModelBinding derived types using the DerivedTypeModelBinder in MvcContrib</title>
      <description><![CDATA[ <p>In the presentation we'll show how to use the DerivedTypeModelBinder with Mvc EditorTemplates. We'll show examples of deep object graphs that render and then model bind back to the ViewModel giving a very rich level of functionality. We'll then grow that functionality to build Wizard-style interfaces focusing on a very generic manner using a StateMachine.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0e2b1bd5983d431ea7ff9e8b010a9f71">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Hebert-ModelBinding-derived-types-using-the-DerivedTypeModelBinder-in-MvcContrib</comments>
      <itunes:summary> In the presentation we&#39;ll show how to use the DerivedTypeModelBinder with Mvc EditorTemplates. We&#39;ll show examples of deep object graphs that render and then model bind back to the ViewModel giving a very rich level of functionality. We&#39;ll then grow that functionality to build Wizard-style interfaces focusing on a very generic manner using a StateMachine. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>2739</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Hebert-ModelBinding-derived-types-using-the-DerivedTypeModelBinder-in-MvcContrib</link>
      <pubDate>Tue, 15 Feb 2011 23:58:34 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Hebert-ModelBinding-derived-types-using-the-DerivedTypeModelBinder-in-MvcContrib</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_2MB_ch9.wmv" expression="full" duration="2739" fileSize="91201955" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_ch9.mp3" expression="full" duration="2739" fileSize="21920326" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_ch9.wma" expression="full" duration="2739" fileSize="22168491" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_ch9.wmv" expression="full" duration="2739" fileSize="99461868" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_high_ch9.mp4" expression="full" duration="2739" fileSize="696458791" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_low_ch9.mp4" expression="full" duration="2739" fileSize="55269178" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_Zune_ch9.wmv" expression="full" duration="2739" fileSize="147029922" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert.ism/manifest" expression="full" duration="2739" fileSize="6250" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/9F71/0E2B1BD5-983D-431E-A7FF-9E8B010A9F71/mvcconfstevehebert_ch9.wmv" length="99461868" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steve-Hebert-ModelBinding-derived-types-using-the-DerivedTypeModelBinder-in-MvcContrib/RSS</wfw:commentRss>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Eric Sowell: Evolving Practices in Using jQuery and Ajax in ASP.NET MVC Applications</title>
      <description><![CDATA[ <p>Since ASP.NET MVC was released, many of us have found that Ajax-rich applications are easier than ever to build on the ASP.NET platform. Over time I have learned some techniques and better practices through trial-and-error and the advice of smart developers. In this session I will show you things I have learned and practices I have started using more consistently in my own projects, at work and on the side, to build better, more consistent and more re-usable ajax functionality into my sites.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:933de8deb1974f95ad6c9e88014ca16c">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Eric-Sowell-Evolving-Practices-in-Using-jQuery-and-Ajax-in-ASPNET-MVC-Applications</comments>
      <itunes:summary> Since ASP.NET MVC was released, many of us have found that Ajax-rich applications are easier than ever to build on the ASP.NET platform. Over time I have learned some techniques and better practices through trial-and-error and the advice of smart developers. In this session I will show you things I have learned and practices I have started using more consistently in my own projects, at work and on the side, to build better, more consistent and more re-usable ajax functionality into my sites. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>3524</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Eric-Sowell-Evolving-Practices-in-Using-jQuery-and-Ajax-in-ASPNET-MVC-Applications</link>
      <pubDate>Sun, 13 Feb 2011 00:36:05 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Eric-Sowell-Evolving-Practices-in-Using-jQuery-and-Ajax-in-ASPNET-MVC-Applications</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_2MB_ch9.wmv" expression="full" duration="3524" fileSize="97723453" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_ch9.mp3" expression="full" duration="3524" fileSize="28199530" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_ch9.wma" expression="full" duration="3524" fileSize="28518945" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_ch9.wmv" expression="full" duration="3524" fileSize="120410576" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_high_ch9.mp4" expression="full" duration="3524" fileSize="553385134" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_low_ch9.mp4" expression="full" duration="3524" fileSize="64477442" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_Zune_ch9.wmv" expression="full" duration="3524" fileSize="188506630" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell.ism/manifest" expression="full" duration="3524" fileSize="8688" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/A16C/933DE8DE-B197-4F95-AD6C-9E88014CA16C/mvcconf2ericsowell_ch9.wmv" length="120410576" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>5</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Eric-Sowell-Evolving-Practices-in-Using-jQuery-and-Ajax-in-ASPNET-MVC-Applications/RSS</wfw:commentRss>
      <category>Ajax</category>
      <category>ASP.NET</category>
      <category>jQuery</category>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Shay Friedman: The Big Comparison of ASP.NET MVC View Engines</title>
      <description><![CDATA[ <p>One of the strongest features of the ASP.NET MVC framework is its extensibility capabilities, which enables using different components with ease. In this session you will learn the differences between the view engines available to you at the moment -the web forms view engine, Spark, NHaml and Razor.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:fb4e08646fb6490982f69e8801359807">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Shay-Friedman-The-Big-Comparison-of-ASPNET-MVC-View-Engines</comments>
      <itunes:summary> One of the strongest features of the ASP.NET MVC framework is its extensibility capabilities, which enables using different components with ease. In this session you will learn the differences between the view engines available to you at the moment -the web forms view engine, Spark, NHaml and Razor. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>2748</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Shay-Friedman-The-Big-Comparison-of-ASPNET-MVC-View-Engines</link>
      <pubDate>Sun, 13 Feb 2011 00:35:45 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Shay-Friedman-The-Big-Comparison-of-ASPNET-MVC-View-Engines</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_2MB_ch9.wmv" expression="full" duration="2748" fileSize="29859416" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_ch9.mp3" expression="full" duration="2748" fileSize="21989028" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_ch9.wma" expression="full" duration="2748" fileSize="22240587" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_ch9.wmv" expression="full" duration="2748" fileSize="67749922" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_high_ch9.mp4" expression="full" duration="2748" fileSize="653907264" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_low_ch9.mp4" expression="full" duration="2748" fileSize="28493261" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_Zune_ch9.wmv" expression="full" duration="2748" fileSize="131301976" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman.ism/manifest" expression="full" duration="2748" fileSize="6234" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/9807/FB4E0864-6FB6-4909-82F6-9E8801359807/mvcconf2shayfriedman_ch9.wmv" length="67749922" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Shay-Friedman-The-Big-Comparison-of-ASPNET-MVC-View-Engines/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Chris Canal: Real World Application Development with Mvc3 NHibernate, FluentNHibernate and Castle Windsor</title>
      <description><![CDATA[ <p>In this session we will look at how we can use a number of popular .Net OSS projects to develop a real world application. Based on production code, we will look at how using a combination of NHibernate, FluentNHibernate, Castle Windsor and a number of other OSS (AutoMapper, MvcContrib, FluentMvc) to reduce the friction of application development and remove a lot of infrastructural concerns. We will explore how we can leverage these tools to drive a convention based development experience and make it easier for ourselves and team mates to write applications and deliver what the client wants.</p><p><em>Recorded live via Live Meeting as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:121fa322a10b476b90759e880136ff59">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Chris-Canal-ASPNET-Castle-Windsor</comments>
      <itunes:summary> In this session we will look at how we can use a number of popular .Net OSS projects to develop a real world application. Based on production code, we will look at how using a combination of NHibernate, FluentNHibernate, Castle Windsor and a number of other OSS (AutoMapper, MvcContrib, FluentMvc) to reduce the friction of application development and remove a lot of infrastructural concerns. We will explore how we can leverage these tools to drive a convention based development experience and make it easier for ourselves and team mates to write applications and deliver what the client wants. Recorded live via Live Meeting as part of mvcConf 2 </itunes:summary>
      <itunes:duration>3240</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Chris-Canal-ASPNET-Castle-Windsor</link>
      <pubDate>Sat, 12 Feb 2011 21:33:16 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Chris-Canal-ASPNET-Castle-Windsor</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_2MB_ch9.wmv" expression="full" duration="3240" fileSize="80451969" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_ch9.mp3" expression="full" duration="3240" fileSize="25927337" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_ch9.wma" expression="full" duration="3240" fileSize="26217883" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_ch9.wmv" expression="full" duration="3240" fileSize="108344874" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_high_ch9.mp4" expression="full" duration="3240" fileSize="807934471" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_low_ch9.mp4" expression="full" duration="3240" fileSize="57308370" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_Zune_ch9.wmv" expression="full" duration="3240" fileSize="173560928" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal.ism/manifest" expression="full" duration="3240" fileSize="6918" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/FF59/121FA322-A10B-476B-9075-9E880136FF59/mvcconf2chriscanal_ch9.wmv" length="108344874" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Chris-Canal-ASPNET-Castle-Windsor/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>ASP.NET MVC 3</category>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Wrap Up with Jon Galloway &amp; Javier Lozano</title>
      <description><![CDATA[ <p>Conference wrap up with Jon Galloway &amp; Javier Lozano</p><p><em>Recorded live as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:519b03eeb0b2427581b39e86007a543b">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Wrap-Up-with-Jon-Galloway--Javier-Lozano</comments>
      <itunes:summary> Conference wrap up with Jon Galloway &amp;amp; Javier Lozano Recorded live as part of mvcConf 2 </itunes:summary>
      <itunes:duration>513</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Wrap-Up-with-Jon-Galloway--Javier-Lozano</link>
      <pubDate>Thu, 10 Feb 2011 19:42:50 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Wrap-Up-with-Jon-Galloway--Javier-Lozano</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_2MB_ch9.wmv" expression="full" duration="513" fileSize="105623953" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_ch9.mp3" expression="full" duration="513" fileSize="4105574" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_ch9.wma" expression="full" duration="513" fileSize="4162515" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_ch9.wmv" expression="full" duration="513" fileSize="62792511" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_high_ch9.mp4" expression="full" duration="513" fileSize="168215182" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_low_ch9.mp4" expression="full" duration="513" fileSize="26391362" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_Zune_ch9.wmv" expression="full" duration="513" fileSize="57048566" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup.ism/manifest" expression="full" duration="513" fileSize="6046" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/543B/519B03EE-B0B2-4275-81B3-9E86007A543B/mvcconfwrapup_ch9.wmv" length="62792511" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Nic Fillingham</dc:creator>
      <itunes:author>Jon Galloway, Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Wrap-Up-with-Jon-Galloway--Javier-Lozano/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
    </item>
  <item>
      <title>mvcConf 2 - Glenn Block: Take some REST with WCF</title>
      <description><![CDATA[ <p>In WCF, we’re serious about HTTP and we’re serious about REST. We’re making deep investments in WCF to provide more natural support for HTTP and for building RESTful systems. If you want to exposing your APIs in a web friendly manner that leverages all the richness, scale and evolve-ability that HTTP has to offer then this talk is for you.</p><p><em>Recorded live as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:9368df813b074234a9999e86001c2d70">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Glenn-Block-Take-some-REST-with-WCF</comments>
      <itunes:summary> In WCF, we’re serious about HTTP and we’re serious about REST. We’re making deep investments in WCF to provide more natural support for HTTP and for building RESTful systems. If you want to exposing your APIs in a web friendly manner that leverages all the richness, scale and evolve-ability that HTTP has to offer then this talk is for you. Recorded live as part of mvcConf 2 </itunes:summary>
      <itunes:duration>3182</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Glenn-Block-Take-some-REST-with-WCF</link>
      <pubDate>Thu, 10 Feb 2011 07:21:57 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Glenn-Block-Take-some-REST-with-WCF</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_2MB_ch9.wmv" expression="full" duration="3182" fileSize="333428679" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_ch9.mp3" expression="full" duration="3182" fileSize="25458680" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_ch9.wma" expression="full" duration="3182" fileSize="25743251" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_ch9.wmv" expression="full" duration="3182" fileSize="235128525" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_high_ch9.mp4" expression="full" duration="3182" fileSize="930162840" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_low_ch9.mp4" expression="full" duration="3182" fileSize="116398605" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_Zune_ch9.wmv" expression="full" duration="3182" fileSize="217928580" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock.ism/manifest" expression="full" duration="3182" fileSize="8506" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/2d70/9368df81-3b07-4234-a999-9e86001c2d70/mvcconfglennblock_ch9.wmv" length="235128525" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Nic Fillingham</dc:creator>
      <itunes:author>Jon Galloway, Nic Fillingham</itunes:author>
      <slash:comments>11</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Glenn-Block-Take-some-REST-with-WCF/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
      <category>REST</category>
      <category>WCF</category>
    </item>
  <item>
      <title>mvcConf 2 - Phil Haack: The NuGet-y Goodness of Delivering Packages</title>
      <description><![CDATA[ <p>The NuGet-y Goodness of Delivering Packages NuGet makes the integration between your apps and 3rd party components easy as pie by providing a simple and extensible process. In this session we'll cover how you can create, consume and publish your libraries (packages) and fully leverage external components while at the same time contributing to the .NET OSS community.</p><div id="entry-body"><p><em>Recorded live as part of <a href="http://www.mvcconf.com/">mvcConf 2</a></em></p></div> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:69fb4c97b3a04280ad759e850152e031">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Phil-Haack-The-NuGet-y-Goodness-of-Delivering-Packages</comments>
      <itunes:summary> The NuGet-y Goodness of Delivering Packages NuGet makes the integration between your apps and 3rd party components easy as pie by providing a simple and extensible process. In this session we&#39;ll cover how you can create, consume and publish your libraries (packages) and fully leverage external components while at the same time contributing to the .NET OSS community. Recorded live as part of mvcConf 2 </itunes:summary>
      <itunes:duration>2975</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Phil-Haack-The-NuGet-y-Goodness-of-Delivering-Packages</link>
      <pubDate>Thu, 10 Feb 2011 07:18:47 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Phil-Haack-The-NuGet-y-Goodness-of-Delivering-Packages</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_2MB_ch9.wmv" expression="full" duration="2975" fileSize="339278501" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_ch9.mp3" expression="full" duration="2975" fileSize="23802764" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_ch9.wma" expression="full" duration="2975" fileSize="24067019" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_ch9.wmv" expression="full" duration="2975" fileSize="203031283" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_high_ch9.mp4" expression="full" duration="2975" fileSize="873540233" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_low_ch9.mp4" expression="full" duration="2975" fileSize="107212882" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_Zune_ch9.wmv" expression="full" duration="2975" fileSize="188855338" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack.ism/manifest" expression="full" duration="2975" fileSize="8490" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/E031/69FB4C97-B3A0-4280-AD75-9E850152E031/mvcconfphilhaack_ch9.wmv" length="203031283" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Nic Fillingham</dc:creator>
      <itunes:author>Jon Galloway, Nic Fillingham</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Phil-Haack-The-NuGet-y-Goodness-of-Delivering-Packages/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
      <category>NuGet</category>
    </item>
  <item>
      <title>mvcConf 2 - Scott Guthrie Keynote</title>
      <description><![CDATA[ <p>Scott Guthrie gives the keynote presentation for <a href="http://www.mvcconf.com">mvcConf 2</a> broadcast live from the Channel 9 studios.</p><p>In this session Scott discusses the future of ASP.NET MVC and answers questions submitted live from the online viewers.</p><p><em>Recorded live as part of <a href="http://www.mvcconf.com">mvcConf 2</a></em></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c0de2f3b76e145c0ba209e85013340d2">]]></description>
      <comments>http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Scott-Guthrie-Keynote</comments>
      <itunes:summary> Scott Guthrie gives the keynote presentation for mvcConf 2 broadcast live from the Channel 9 studios. In this session Scott discusses the future of ASP.NET MVC and answers questions submitted live from the online viewers. Recorded live as part of mvcConf 2 </itunes:summary>
      <itunes:duration>3464</itunes:duration>
      <link>http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Scott-Guthrie-Keynote</link>
      <pubDate>Thu, 10 Feb 2011 01:41:34 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Scott-Guthrie-Keynote</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_2MB_ch9.wmv" expression="full" duration="3464" fileSize="545274867" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_ch9.mp3" expression="full" duration="3464" fileSize="27717929" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_ch9.wma" expression="full" duration="3464" fileSize="28026289" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_ch9.wmv" expression="full" duration="3464" fileSize="435066215" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_high_ch9.mp4" expression="full" duration="3464" fileSize="1134771628" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_low_ch9.mp4" expression="full" duration="3464" fileSize="201416643" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_Zune_ch9.wmv" expression="full" duration="3464" fileSize="386570270" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote.ism/manifest" expression="full" duration="3464" fileSize="8522" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/40d2/c0de2f3b-76e1-45c0-ba20-9e85013340d2/mvcconf2011keynote_ch9.wmv" length="435066215" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Nic Fillingham</dc:creator>
      <itunes:author>Jon Galloway, Nic Fillingham</itunes:author>
      <slash:comments>11</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Scott-Guthrie-Keynote/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
      <category>Scott Guthrie</category>
    </item>
  <item>
      <title>mvcConf 2011 - Streaming Live Right Now!</title>
      <description><![CDATA[ <p>mvcConf 2011 is streaming live from the (newly renovated) Channel 9 studios right now.</p><p>To watch the broadcast - for free - in 720P smooth streaming head to: <strong><a href="http://www.mvcconf.com">http://www.mvcconf.com</a></strong> </p><p>For the full event schedule check out <strong><a href="http://www.mvcconf.com/schedule">http://www.mvcconf.com/schedule</a></strong></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:5c4f3257dd874398b3df9e840126a246">]]></description>
      <comments>http://channel9.msdn.com/posts/mvcConf-2011-Streaming-Live-Right-Now</comments>
      <itunes:summary> mvcConf 2011 is streaming live from the (newly renovated) Channel 9 studios right now. To watch the broadcast - for free - in 720P smooth streaming head to: http://www.mvcconf.com  For the full event schedule check out http://www.mvcconf.com/schedule </itunes:summary>
      <link>http://channel9.msdn.com/posts/mvcConf-2011-Streaming-Live-Right-Now</link>
      <pubDate>Tue, 08 Feb 2011 18:00:17 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/mvcConf-2011-Streaming-Live-Right-Now</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/77a1f63a-ff28-40a9-a1bb-6e5243bb8d4b.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/9ac22e41-f15b-4bcf-a6da-f9fa6b6ab417.jpg" height="240" width="320"></media:thumbnail>      
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/mvcConf-2011-Streaming-Live-Right-Now/rss</wfw:commentRss>
      <category>ASP.NET</category>
      <category>MVC</category>
    </item>
  <item>
      <title>12/9 - ASP.NET Web Platform Firestarter</title>
      <description><![CDATA[ <p>Join your Microsoft Developer Evangelists for this free event that will get you up to speed with Microsoft ASP.NET web development, going from zero to sixty in one day. Whether you’re just starting out or are already on the web and looking for the latest developments, this technical content will take you through a progression of sessions, all focused on developing with the Microsoft Web Platform. By the end of the day, you’ll be familiar with latest advances and have a solid understanding of ASP.NET web development options.<br><br><strong>Session 1: To the Web with ASP.NET 4 Web Forms</strong><br>The tried-and-true approach for creating effective and robust websites, ASP.NET 4 Web Forms offers powerful abstractions and rapid application development features. Add in recent advances in ASP.NET 4 and Microsoft Visual Studio 2010 and you’ll be crafting amazing sites in no time.<br><br><strong>Session 2: Looking at ASP.NET MVC</strong><br>ASP.NET MVC (Model View Controller) is a relatively new option, offering a variety of potential benefits such as separation of concerns, flexibility, control, and testability. In this session, you’ll learn the essentials, along with the latest advances, so you can get started right away.<br><br><strong>Session 3: The Web Platform Smorgasbord</strong><br>Join us for this relaxed but rapid-fire look at a variety of web topics including tools and tech.<br><br><strong>Session 4: Introducing WebMatrix</strong><br>WebMatrix is a new option that provides a simple but powerful way to create web applications. You can create sites based on existing open-source applications, or dive right in and create from scratch. From code and testing to data and deployment, we’ll introduce WebMatrix and show you how it can make your life easier.<br><br><strong>Session 5: Evaluating Your Web Options</strong><br>You’re up to speed with the latest in ASP.NET MVC, Web Forms, and WebMatrix, but you may be wondering how and when to choose between them. The great news is you don’t always have to choose just one. In this session we’ll talk about factors to consider, options for adoption/migration, and ways to combine ASP.NET Web Forms and MVC in the same web application.<br><br><strong>Session 6: Creating Effective Websites with ASP.NET</strong><br>Knowing how to create websites with ASP.NET is important, but making them effective is the key. This final session dives into additional options and techniques that apply to both Web Forms and ASP.NET MVC applications. From scripting with jQuery and AJAX, design with CSS, markup and validation techniques, and tools for testing, you’ll learn how to set your sites (and skills) apart from the rest.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/mvc/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f2d1b65261984ca8b9f19e45001f9054">]]></description>
      <comments>http://channel9.msdn.com/posts/129-ASPNET-Web-Platform-Firestarter</comments>
      <itunes:summary> Join your Microsoft Developer Evangelists for this free event that will get you up to speed with Microsoft ASP.NET web development, going from zero to sixty in one day. Whether you’re just starting out or are already on the web and looking for the latest developments, this technical content will take you through a progression of sessions, all focused on developing with the Microsoft Web Platform. By the end of the day, you’ll be familiar with latest advances and have a solid understanding of ASP.NET web development options.Session 1: To the Web with ASP.NET 4 Web FormsThe tried-and-true approach for creating effective and robust websites, ASP.NET 4 Web Forms offers powerful abstractions and rapid application development features. Add in recent advances in ASP.NET 4 and Microsoft Visual Studio 2010 and you’ll be crafting amazing sites in no time.Session 2: Looking at ASP.NET MVCASP.NET MVC (Model View Controller) is a relatively new option, offering a variety of potential benefits such as separation of concerns, flexibility, control, and testability. In this session, you’ll learn the essentials, along with the latest advances, so you can get started right away.Session 3: The Web Platform SmorgasbordJoin us for this relaxed but rapid-fire look at a variety of web topics including tools and tech.Session 4: Introducing WebMatrixWebMatrix is a new option that provides a simple but powerful way to create web applications. You can create sites based on existing open-source applications, or dive right in and create from scratch. From code and testing to data and deployment, we’ll introduce WebMatrix and show you how it can make your life easier.Session 5: Evaluating Your Web OptionsYou’re up to speed with the latest in ASP.NET MVC, Web Forms, and WebMatrix, but you may be wondering how and when to choose between them. The great news is you don’t always have to choose just one. In this session we’ll talk about factors to consider, options for adoption/migration, and ways to</itunes:summary>
      <link>http://channel9.msdn.com/posts/129-ASPNET-Web-Platform-Firestarter</link>
      <pubDate>Tue, 07 Dec 2010 01:55:09 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/129-ASPNET-Web-Platform-Firestarter</guid>      
      <dc:creator>MSDN Online Media</dc:creator>
      <itunes:author>MSDN Online Media</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/129-ASPNET-Web-Platform-Firestarter/rss</wfw:commentRss>
      <category>ASP.NET</category>
      <category>ASP.NET 4</category>
      <category>ASP.NET MVC</category>
      <category>MSDN Simulcast</category>
      <category>MVC</category>
      <category>Simulcast</category>
    </item>    
</channel>
</rss>