<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Craig Shoemaker</title><link>http://weblogs.asp.net/craigshoemaker/default.aspx</link><description>&lt;a href="http://polymorphicpodcast.com/"&gt;Host of the Polymorphic Podcast&lt;/a&gt; and &lt;a href="http://infragistics.com/"&gt;New Media Evangelist for Infragistics&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PolymorphicPodcastBlog" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Integrating Infragistics Drag &amp; Drop with jQuery and Microsoft Ajax Preview 6</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/1gIMn7huWRw/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx</link><pubDate>Tue, 10 Nov 2009 21:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7250872</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7250872</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#comments</comments><description>&lt;h2&gt;The Concept&lt;/h2&gt;

&lt;p&gt;I created “&lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx"&gt;Ugly Outfitters&lt;/a&gt;” to showcase the interaction between &lt;a href="http://www.infragistics.com/dotnet/netadvantage/aspnet/dragdrop.aspx#Overview" mce_href="http://www.infragistics.com/dotnet/netadvantage/aspnet/dragdrop.aspx#Overview"&gt;Infragistics Drag &amp;amp; Drop&lt;/a&gt;, &lt;a href="http://jquery.com/" mce_href="http://jquery.com/"&gt;jQuery&lt;/a&gt; and &lt;a href="http://aspnet.codeplex.com/wikipage?title=AJAX&amp;amp;referringTitle=Home" mce_href="http://aspnet.codeplex.com/wikipage?title=AJAX&amp;amp;referringTitle=Home"&gt;Microsoft Ajax Preview 6&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Why Ugly Outfitters? Well, I decided that rather than just dragging around some bland icons on the screen why not attempt to inject a little bit of humor into the process. Like I said... attempt ;)&lt;/p&gt;

&lt;p&gt;If you want to jump right in take a look at this short video demonstrating the application with a quick overview of the code:&lt;/p&gt;

&lt;p&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" mce_src="http://www.youtube.com/v/LUTAwKFybsc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Also available are &lt;a href="http://community.infragistics.com/aspnet/media/p/186691.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/186691.aspx"&gt;higher quality versions of the video.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What follows is an excerpt of the discussion of what’s found in Ugly Outfitters. The best way to get acquainted with the details is always to &lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_download" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_download"&gt;download the code&lt;/a&gt; and review it’s design.&lt;/p&gt;

&lt;h2&gt;The Approach&lt;/h2&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-11-06/uo.gif" mce_src="http://media.infragistics.com/community/images/craigs/blog/2009-11-06/uo.gif" align="right" hspace="10" vspace="10"&gt;&lt;/p&gt;

&lt;p&gt;The page is constructed to have a list of shirts on the top of the page, a list of pants along the bottom and a large “outfit designer” area to preview combinations. Along with the coupling of the garment images, when an image is dropped on the page the garment title and description are updated.&lt;/p&gt;

&lt;p&gt;A typical approach of constructing a page like this is often to include a server-side repeater to generate the HTML required to list the shirt and pant images. Instead of explicitly rendering HTML for each list item, this page uses a series of client templates to create the thumb nail lists. The data for the page is served to the client in JSON arrays, rather than being embedded into blocks of HTML. Using the JSON arrays make coding interaction on the page easy as all the required data is available in a programmatically accessible format.&lt;/p&gt;

&lt;h3&gt;Variations&lt;/h3&gt;

&lt;p&gt;The sample is available in three different variations. The first sample uses the ASP.NET ScriptManager control to bring in the required scripts and leverages the code behind to render the JSON array to the page. &lt;/p&gt;

&lt;p&gt;The second sample is exactly the same as the first except instead of using a ScriptManager, the JavaScript files are loaded into the page using the Microsoft Ajax Preview 6 Script Loader control. The Script Loader is used to bring in ASP.NET AJAX, the Client Templates, jQuery and the Infragistics Drag and Drop Framework.&lt;/p&gt;

&lt;p&gt;The final variation extends the second sample, but removes the dependence on the code behind and is a static HTML file. Data is injected into the page by referencing a dynamic JavaScript file. This script file is added as a custom script and then loaded into the page using the Script Loader.&lt;/p&gt;

&lt;p&gt;To read the full write-up including code samples, please check out: &lt;a href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_jumpStart" mce_href="http://blogs.infragistics.com/blogs/craig_shoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx#_jumpStart"&gt;Integrating Infragistics Drag &amp;amp; Drop with jQuery and Microsoft Ajax Preview 6&lt;/a&gt; on my Infragistics blog.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7250872" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/NetAdvantage/default.aspx">NetAdvantage</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Infragistics/default.aspx">Infragistics</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/10/integrating-infragistics-drag-amp-drop-with-jquery-and-microsoft-ajax-preview-6.aspx</feedburner:origLink></item><item><title>Serialize and Deserialize JSON</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/3rAKSzpqTpY/serialize-and-deserialize-json.aspx</link><pubDate>Fri, 06 Nov 2009 16:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7248382</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7248382</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/06/serialize-and-deserialize-json.aspx#comments</comments><description>
&lt;p&gt;On one of the projects I am working on I needed a way to work get the JSON string generated from some sort of serialization process. If you are working Ajax or MVC controller actions, this work is done for you automatically, but I wanted the string all by itself. After some searching I ran across this article &lt;a href="http://msdn.microsoft.com/en-us/library/bb412179.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb412179.aspx"&gt;How to: Serialize and Deserialize JSON Data&lt;/a&gt;. The article is great, and gave me everything I needed to know, but I thought I would make it a little cleaner and wrap it all up in a class.&lt;/p&gt;

&lt;p&gt;Below is the a generic class that will serialize and deserialize JSON:&lt;/p&gt;

&lt;pre style="border: 1px solid rgb(204, 204, 204); padding: 10px; background-color: rgb(238, 238, 238); font-family: courier,courier new,sans-serif; font-size: 1.2em;"&gt;using System.IO;&lt;br&gt;using System.Runtime.Serialization.Json;&lt;br&gt;&lt;br&gt;public class JsonSerializer&lt;t&gt;&lt;br&gt;{&lt;br&gt;    public JsonSerializer() { }&lt;br&gt;&lt;br&gt;    public string Serialize(T instance)&lt;br&gt;    {&lt;br&gt;        using (MemoryStream stream = new MemoryStream())&lt;br&gt;        {&lt;br&gt;            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));&lt;br&gt;            ser.WriteObject(stream, instance);&lt;br&gt;            stream.Position = 0;&lt;br&gt;&lt;br&gt;            using (StreamReader rdr = new StreamReader(stream))&lt;br&gt;            {&lt;br&gt;                return rdr.ReadToEnd();&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;br&gt;    public T Deserialize(string json)&lt;br&gt;    {&lt;br&gt;        using (MemoryStream stream = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(json)))&lt;br&gt;        {&lt;br&gt;            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));&lt;br&gt;            T result = (T)serializer.ReadObject(stream);&lt;br&gt;            return result;    &lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/t&gt;&lt;/pre&gt;

&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: For a more robust solution, &lt;a href="http://twitter.com/jglozano/status/5482607550"&gt;Javier Lozano suggests&lt;/a&gt; checking out &lt;a href="http://www.codeplex.com/Json"&gt;Json.NET&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7248382" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/C_2300_/default.aspx">C#</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/06/serialize-and-deserialize-json.aspx</feedburner:origLink></item><item><title>VM Workshop: Model View ViewModel (MVVM) and the Presentation Model Pattern in 5 UI Platforms</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/AB1eX7VYgSo/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx</link><pubDate>Tue, 03 Nov 2009 16:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7245973</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7245973</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx#comments</comments><description>
&lt;p&gt;For some reason the family of design patterns that exist around the &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller" mce_href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;Model View Controller&lt;/a&gt; pattern seem to be an elusive band of characters. The first time I&amp;nbsp; encountered Model View Controller I studied the text hard trying to understand how the &lt;a href="http://en.wikipedia.org/wiki/Strategy_pattern" mce_href="http://en.wikipedia.org/wiki/Strategy_pattern"&gt;Strategy&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Observer_pattern" mce_href="http://en.wikipedia.org/wiki/Observer_pattern"&gt;Observer&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Composite_pattern" mce_href="http://en.wikipedia.org/wiki/Composite_pattern"&gt;Composite&lt;/a&gt; patterns worked together to accomplish some goal that – try as I might - remained fuzzy. Somehow I have a sense that I am not alone.&lt;/p&gt;

&lt;p&gt;Model View Controller (MVC) is the parent pattern to a number of contemporary patterns that seem to find a natural home in Microsoft development. Variations of MVC have appeared over the years in an attempt to work within the construct of modern event-driven programming models. One of most distinguishing differences among MVC and some of the derivative patterns is that with MVC the controller executes first, where with the other patterns the view tends to execute first and then delegates control to some sort of “presentation” class.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://polymorphicpodcast.com/vmworkshop/patterns.gif" alt="VM Workshop Patterns" mce_src="http://polymorphicpodcast.com/vmworkshop/patterns.gif" height="382" width="550"&gt;&lt;/p&gt;

&lt;p&gt;A few years ago I did a series on Model View Presenter (MVP) [&lt;a href="http://polymorphicpodcast.com/shows/mv-patterns/" mce_href="http://polymorphicpodcast.com/shows/mv-patterns/"&gt;Design Patterns Bootcamp: Model View * Patterns&lt;/a&gt;] in an attempt to discuss how to completely abstract away the user interface layer. MVP proves to be an effective pattern, but can be confusing to some with the heavy use of interfaces and events.&lt;/p&gt;

&lt;p&gt;The recent popularity of XAML applications has brought focus to the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;Model View ViewModel&lt;/a&gt; (MVVM) pattern, which is technically a fine-tuned version of &lt;a href="http://martinfowler.com/eaaDev/PresentationModel.html" mce_href="http://martinfowler.com/eaaDev/PresentationModel.html"&gt;Presentation Model&lt;/a&gt; that &lt;a href="http://blogs.msdn.com/johngossman/archive/2005/10/11/479632.aspx" mce_href="http://blogs.msdn.com/johngossman/archive/2005/10/11/479632.aspx"&gt;takes advantage of .NET’s data binding framework&lt;/a&gt;. Further, the advent of ASP.NET MVC has created a strong push for some sort of presentation strategy into the realm of ASP.NET WebForms.&lt;/p&gt;

&lt;p&gt;So this history lesson is great, but how do you do you write the code to implement the patterns?&lt;/p&gt;

&lt;h2&gt;Introducing VM Workshop&lt;/h2&gt;

&lt;p&gt;The &lt;a href="http://polymorphicpodcast.com/vmworkshop" mce_href="http://polymorphicpodcast.com/vmworkshop"&gt;VM Workshop&lt;/a&gt; is a simple reference application demonstrating the Model View ViewModel and Presentation Model pattern in a number of different UI platforms.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/vmworkshop/" mce_href="http://polymorphicpodcast.com/vmworkshop/"&gt;&lt;img src="http://polymorphicpodcast.com/vmworkshop/logo.png" mce_src="http://polymorphicpodcast.com/vmworkshop/logo.png" align="right" border="0" height="227" hspace="15" vspace="15" width="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project includes examples in:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Silverlight &lt;/li&gt;

  
&lt;li&gt;WPF &lt;/li&gt;

  
&lt;li&gt;WebForms &lt;/li&gt;

  
&lt;li&gt;ASP.NET MVC &lt;/li&gt;

  
&lt;li&gt;Ajax &lt;/li&gt;

  
&lt;li&gt;WinForms &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…and as an &lt;a href="http://vmworkshop.codeplex.com/" mce_href="http://vmworkshop.codeplex.com/"&gt;open source project&lt;/a&gt;, you are invited to help add examples of how to deal with a myriad of different UI use cases!&lt;/p&gt;

&lt;p&gt;The purpose of the VM Workshop is to be a working programmer’s reference, not an exposition in pattern purity. Therefore you may see small details that may not fit the textbook definition of the patterns, but the point is to provide a template for effective pattern use. For instance there is an example in ASP.NET MVC is included in VM Workshop. Obviously the pattern being implemented is Model View Controller, but the construction of a “view model” class is still relevant in this context. While referring to ViewModel class in a ASP.NET application may be technically inappropriate, I use the term “view model” to interchangeably refer to a ViewModel or Presentation Model class for simplicity. &lt;/p&gt;

&lt;p&gt;I recently messaged &lt;a href="http://blogs.msdn.com/johngossman/" mce_href="http://blogs.msdn.com/johngossman/"&gt;John Gossman&lt;/a&gt;, arguably one of the most visible proponent of MVVM, to ask whether or not MVVM is exclusive to XMAL applications or if the pattern may be applied to any UI platform. John replied saying:&lt;/p&gt;

&lt;blockquote&gt;
 
&lt;p&gt;&lt;i&gt;I think the pattern is completely applicable to any UI technology.&amp;nbsp; There are some details around the use of commands and data-binding that tend to be XAML specific, so I tend to use MVVM for the XAML version of the pattern and to keep from having religious wars with Patterns zealots.&amp;nbsp; The more general pattern is called PresentationModel by Fowler.&amp;nbsp; OTOH, one of the nice things is if you design your Model and ViewModel’s correctly you should be able to reuse them between XAML-based and other UI technologies.&lt;/i&gt; &lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;VM Workshop is meant to be a learn-by-example project showcasing different styles of implementation.&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;Examples in C# and VB.NET&lt;/h3&gt;

&lt;p&gt;Often discussions surrounding design patterns tend to only be available in C#. In order to extend the conversation to as many developers as possible, I’ve include a VB.NET solution that operates in complete parity to the C# version. The only difference in the VB.NET version is that due to lack of lambda support some of the places &lt;a href="http://www.codeplex.com/AutoMapper" mce_href="http://www.codeplex.com/AutoMapper"&gt;AutoMapper&lt;/a&gt; is leveraged in the C# version are removed and objects are mapped manually. &lt;/p&gt;

&lt;h2&gt;A Grid, a Form and an Action&lt;/h2&gt;

&lt;p&gt;The initial example is provided for all the UI platforms. Each implementation features the same UI and workflow composition. First a grid is presented to the user:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://polymorphicpodcast.com/vmworkshop/grid.png" alt="Grid" mce_src="http://polymorphicpodcast.com/vmworkshop/grid.png" height="278" width="234"&gt;&lt;/p&gt;

&lt;p&gt;Upon selecting an individual item, an edit form becomes available allowing the user make changes to the item:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://polymorphicpodcast.com/vmworkshop/form.png" alt="Form" mce_src="http://polymorphicpodcast.com/vmworkshop/form.png" height="257" width="372"&gt;&lt;/p&gt;

&lt;blockquote&gt;
  
&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; These screen shots here are taken from the WebForms sample, but the UI reflects the appropriate look for each of the respective UI technologies.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;p&gt;Once changes are complete, and the ‘Save' button is pressed, the persistence operation is initiated. After persistence is complete, each implementation tells the UI to how to response respond to the action.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Please note that true persistence is not implemented in VM Workshop.&lt;/b&gt; In an effort to avoid using a database (which keeps the code more portable) persistence functions are simply stubbed out in the code. In the end, the project includes the same messages that would be sent among the application layers in any real-world application. &lt;/p&gt;

&lt;h2&gt;Minimizing Code in the View&lt;/h2&gt;

&lt;p&gt;The motivation for using these patterns is often creating a more testable user interface layer, decoupling your application from UI technologies or perhaps to promote better application composition. No matter what the motivation, the overarching goal is to remove application logic from the view layer. The examples in VM Workshop use a number of general concepts to achieve a thin view. &lt;/p&gt;

&lt;h3&gt;Lazy Loading&lt;/h3&gt;

&lt;p&gt;The grids are populated through a lazy loaded property on the view model class. This ensures that the request for data is restricted to only the times when the data wasn’t previously prepared. Another benefit is that a call to somehow ‘get stuff’ is not required. When the grid binds to the 'Products' property the property’s implementation knows where to get the data if it doesn’t have it.&lt;/p&gt;

&lt;h3&gt;Visibility Properties&lt;/h3&gt;

&lt;p&gt;Visibility properties (in XAML implementations) or boolean properties on the view model classes are used to control whether or not controls, messages or other UI elements appear to the user. Binding the state of these properties to the appropriate elements on the screen relieves the view of having to decide what is shown to the user and what is hidden.&lt;/p&gt;

&lt;h3&gt;No Logical Operations&lt;/h3&gt;

&lt;p&gt;While taking great care to remove all logical operations from the view, even seemingly benign tasks such as casting input into primitive types is delegated to the view model or some other class for execution. Even simple operations like type casting can quickly cascade into a series of business rules. Consider how convoluted validation scenarios can become when the application is expecting a currency value, but is one way or another served a string. While the validation does have UI implications, this type of logic is best handled in a lower level than the view.&lt;/p&gt;

&lt;h3&gt;Presentation Objects and Data Transfer Objects&lt;/h3&gt;

&lt;p&gt;The use of presentation objects or data transfer objects, or DTOs, (I tend to flip between terms depending on my mood) is used to accomplish at least two goals:&lt;/p&gt;

&lt;ol&gt;
  
&lt;li&gt;&lt;b&gt;Hide the domain model from the rest of the application.&lt;/b&gt; Concealing the full-fledged Products class from the view makes sure unnecessary pressure is not exerted on the model to mutate at the whim of the view. 
    &lt;br&gt;&lt;br&gt;&lt;/li&gt;

  
&lt;li&gt;&lt;b&gt;Make custom mapping the responsibility of the type.&lt;/b&gt; The presentation object’s job is to prepare the data coming from the domain model into a form that is natural to the view. This mapping or conversion responsibility is best placed in the hands of the presentation object and not within the procedure of an operation. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Get Acquainted&lt;/h2&gt;

&lt;p&gt;Check out the video that will get you oriented with VM Workshop:&lt;/p&gt;

&lt;p&gt;
&lt;object height="344" width="425"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/zXIzIzbO7pM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/zXIzIzbO7pM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" mce_src="http://www.youtube.com/v/zXIzIzbO7pM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/object&gt;
&lt;/p&gt;

&lt;h2&gt;Get Involved&lt;/h2&gt;

&lt;p&gt;The code for &lt;a href="http://vmworkshop.codeplex.com" mce_href="http://vmworkshop.codeplex.com"&gt;VM Workshop is available on CodePlex&lt;/a&gt; and you are encouraged to submit your implementations into the workshop!&lt;/p&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;p&gt;VM Workshop uses &lt;a href="http://nbuilder.org/" mce_href="http://nbuilder.org/"&gt;nBuilder&lt;/a&gt; create data objects and &lt;a href="http://www.codeplex.com/AutoMapper" mce_href="http://www.codeplex.com/AutoMapper"&gt;AutoMapper&lt;/a&gt; for DTO to domain object mapping.&lt;/p&gt;

&lt;h2&gt;Thanks&lt;/h2&gt;

&lt;p&gt;Thanks to &lt;a href="http://infragistics.com/" mce_href="http://infragistics.com/"&gt;Infragistics&lt;/a&gt; for providing the time to develop the VM Workshop.&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7245973" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/windows+forms/default.aspx">windows forms</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVVM/default.aspx">MVVM</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/03/vm-workshop-model-view-viewmodel-mvvm-and-the-presentation-model-pattern-in-5-ui-platforms.aspx</feedburner:origLink></item><item><title>ASP.NET AJAX Preview 6 with Stephen Walther </title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/bgQepCVh1bU/asp-net-ajax-preview-6-with-stephen-walther.aspx</link><pubDate>Mon, 02 Nov 2009 23:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7245521</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7245521</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/11/02/asp-net-ajax-preview-6-with-stephen-walther.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://stephenwalther.com/blog/"&gt;Stephen Walther&lt;/a&gt;, Microsoft Product Manager for &lt;a href="http://asp.net/ajax"&gt;ASP.NET AJAX&lt;/a&gt;, joins the show to discuss the recent advancements in the AJAX toolset found in Preview 6. Listen or download below!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/ajaxpreview6/" mce_href="http://polymorphicpodcast.com/shows/ajaxpreview6/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" height="58" width="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table border="0" cellpadding="3" cellspacing="3"&gt;&lt;tbody&gt;
    
&lt;tr&gt;
      &lt;th align="left"&gt;Full Speed:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-10-26-ajaxpreview6.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-10-26-ajaxpreview6.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;
    &lt;/tr&gt;

    
&lt;tr&gt;
      &lt;th align="left"&gt;Fast Version:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-10-26-ajaxpreview6_fast.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-10-26-ajaxpreview6_fast.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;

    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Just about all the details discussed in our conversation are available from the following links:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/10/15/announcing-microsoft-ajax-library-preview-6-and-the-microsoft-ajax-minifier.aspx"&gt;Announcing Microsoft Ajax Library (Preview 6) and the Microsoft Ajax Minifier&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://weblogs.asp.net/bleroy/archive/2009/10/15/entirely-unobtrusive-and-imperative-templates-with-microsoft-ajax-4-preview-6.aspx"&gt;Entirely unobtrusive and imperative templates with Microsoft Ajax Library Preview 6&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34488"&gt;CodePlex Site&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://jtemplates.tpython.com/"&gt;jTemplates&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;A Changed Landscape: ASP.NET AJAX&lt;/h3&gt;

&lt;p&gt;If you are in the Southern California area and would like to see some of the latest AJAX bits in action I am giving my talk to the following user groups: &lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://www.iedotnetug.org/UG/"&gt;Inland Empire .NET User Group&lt;/a&gt; 12/8/09 &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.ocdotnet.org/"&gt;Orange County .NET User Group&lt;/a&gt; 1/12/10 &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.ladotnet.org/default.asp"&gt;LA.NET User Group&lt;/a&gt; 2/1/10 &lt;/li&gt;

&lt;/ul&gt;

&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7245521" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-10-26-ajaxpreview6.mp3" length="37611422" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/11/02/asp-net-ajax-preview-6-with-stephen-walther.aspx</feedburner:origLink></item><item><title>Magic, Mind-Controlled Interfaces and What Makes an Experience Architect</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/BXQYKsMTztE/magic-mind-controlled-interfaces-and-what-makes-an-experience-architect.aspx</link><pubDate>Wed, 14 Oct 2009 17:13:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7229880</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7229880</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/10/14/magic-mind-controlled-interfaces-and-what-makes-an-experience-architect.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://www.cynergysystems.com/blogs/page/rickbarraza"&gt;Rick Barraza&lt;/a&gt; returns to Pixel8 to discuss magic, storytelling, mind control interfaces and even a little development! According to Rick, true experience design mixes elements you may not automatically attribute to software design. Using these unexpected elements along with the tried-and-true principals of user interface design, usability and information design help you craft polished experiences.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/180651.aspx"&gt;&lt;img src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" mce_src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" border="0" height="118" width="276"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Rick explores the concepts of what it takes to turn raw technology into something compelling for end users and accessible for busy developers. He uses two of his research projects as object lessons for these concepts.&lt;/p&gt;

&lt;h3&gt;Project Maestro&lt;/h3&gt;

&lt;p&gt;A working example of the final product of an experience architect’s work is embodied in the Maestro Project. If you are a long time follower of Pixel8, you’ll remember our interview highlighting Maestro: &lt;a href="http://community.infragistics.com/pixel8/media/p/91901.aspx"&gt;8 Days, 1 Dev = MS Surface *Minority Report* Style in WPF&lt;/a&gt;. If you have yet so see &lt;a href="http://community.infragistics.com/pixel8/media/p/91901.aspx"&gt;this video&lt;/a&gt;, please take the time - it is a half hour very well spent!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91901.aspx"&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-10-08/mastro.jpg" border="0" height="319" width="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.imdb.com/title/tt0181689/"&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-10-08/minority-gloves.png" border="0" height="280" width="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;The initial work conducted by &lt;a href="http://johnnylee.net/projects/wii"&gt;Johnny Chung Lee&lt;/a&gt; and &lt;a href="http://www.brianpeek.com/blog/pages/wiimotelib.aspx"&gt;Brian Peek&lt;/a&gt; created the foundation for Maestro, but the additions of a simple WPF layout and the use of some &lt;a href="http://www.imdb.com/title/tt0181689/"&gt;familiar gloves&lt;/a&gt; gave Maestro the hook to be truly compelling.&lt;/p&gt;

&lt;h3&gt;Emotiv Thought Control Demo&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://emotiv.com/"&gt;Emotiv thought control device&lt;/a&gt; is an input device that allows the user to provide input data using while using their thoughts exclusively. Much like voice recognition input the thought “reader” must first be trained to the user to establish a baseline of brain activity. Once this baseline is established then changes in brain activity are read and recognized by the hardware eventually translating to events that may be programmatically handled.&lt;/p&gt;

&lt;p&gt;One of the first demonstrations to appear on the web of such a device is the Emotiv Stonehenge Demo.&lt;/p&gt;

&lt;object height="344" width="425"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/YxMux4uEkLI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/YxMux4uEkLI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/object&gt;

&lt;p&gt;While technically sufficient, Rick saw and opportunity to improve on the experience using the input device while creating a much more compelling demonstration of the technology. Check out Rick's take on conducting the same type of demonstration:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cynergysystems.com/blogs/page/rickbarraza?entry=emotiv_thought_control_wpf_and"&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-10-08/emotiv-video.png" border="0" height="301" width="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key to this execution is the use of a &lt;a href="http://www.google.com/search?q=wpf+pixel+shader+effects"&gt;pixel shader effect&lt;/a&gt;. When Rick first started to give this demonstration some observers were dubious. Were the transitions timed? Did Rick have a Wii controller hidden somewhere? The addition of a warp effect as a transition between photos echoed the same effects moviegoers are conditioned to see when space and time are manipulated with one’s mind finally produced a believable result.&lt;/p&gt;

&lt;p&gt;Because e&lt;i&gt;veryone knows that when you control matter with your mind the result is a rippled environment ;)&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-10-08/star-wars-force-push.png" border="0" height="206" width="350"&gt;&lt;/p&gt;

&lt;h3&gt;‘Hollywood Draws First Blood’&lt;/h3&gt;

&lt;p&gt;Rick establishes the concept that Hollywood has created visual cues for thought control, so preserving them helps make the experience more enjoyable and understandable. The real-world technology may be new, but the concept is often simulated in the movies and on TV where storytellers have set expectations on what the experience might be like in real life.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/images/craigs/blog/2009-10-08/iphone.jpg" border="0" height="203" width="300"&gt;&lt;/p&gt;

&lt;p&gt;A perfect everyday example of this concept is found on the iPhone. When you snap a picture, what do you &lt;i&gt;hear&lt;/i&gt;? That shutter sound is not only unnecessary, but in a sense it is a lie told to the user. There is no exposing film or shutter in a digital camera! It’s the addition of this familiar sound, however that gives users a recognizable source of feedback to know when the picture taking is complete.&lt;/p&gt;

&lt;h4&gt;Support or Reject Assumptions?&lt;/h4&gt;

&lt;p&gt;So the question remains, should you support false assumptions? Should you tell these little lies? Perhaps for a while general affordances in user design are possible by embracing these assumptions, while striving to change them as the product evolves.&lt;/p&gt;

&lt;h3&gt;The Prestige&lt;/h3&gt;

&lt;p&gt;Finally Rick discusses how the movie ‘&lt;a href="http://www.imdb.com/title/tt0482571/"&gt;The Prestige&lt;/a&gt;’ is an excellent metaphor of the aspirations of an experience architect.&lt;/p&gt;

&lt;object height="344" width="425"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/MgNVC6Hv4KE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/MgNVC6Hv4KE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/object&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7229880" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-10-08-experience-arch.mp3" length="987518" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/user+experience/default.aspx">user experience</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Pixel8/default.aspx">Pixel8</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/10/14/magic-mind-controlled-interfaces-and-what-makes-an-experience-architect.aspx</feedburner:origLink></item><item><title>15 Desktop Backgrounds to Support .NET Development (and pay homage to the Gu)</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/ADutHsRO2jI/15-desktop-backgrounds-to-support-net-development-and-pay-homage-to-the-gu.aspx</link><pubDate>Tue, 06 Oct 2009 14:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7223795</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>17</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7223795</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/10/06/15-desktop-backgrounds-to-support-net-development-and-pay-homage-to-the-gu.aspx#comments</comments><description>&lt;div style="padding: 4px; background-color: rgb(255, 255, 204);"&gt;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I created a Windows 7 theme pack with all of these backgrounds. &lt;a href="http://polymorphicpodcast.com/GuBackgrounds-v1.zip"&gt;You can download it here.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;This weekend was one of those times I just couldn't get “that thing” out of my head. After a &lt;a href="http://twitter.com/shanselman/status/4371917920" mce_href="http://twitter.com/shanselman/status/4371917920"&gt;short conversation&lt;/a&gt; on Twitter earlier in the week about &lt;a href="http://twitter.com/craigshoemaker/status/4372399652" mce_href="http://twitter.com/craigshoemaker/status/4372399652"&gt;desktop backgrounds&lt;/a&gt; I kept thinking about how much fun it would be to just sit down and do some design work. &lt;/p&gt;

&lt;p&gt;The rubber hit the road after being inspired by the &lt;a href="http://www.smashingmagazine.com/2009/09/30/desktop-wallpaper-calendar-october-2009/" mce_href="http://www.smashingmagazine.com/2009/09/30/desktop-wallpaper-calendar-october-2009/"&gt;Smashing Magazine’s themed desktop wallpapers&lt;/a&gt;. Then it hit me - how about a series of desktop wallpapers themed toward the .NET developer – and who better to represent the community than &lt;a href="http://weblogs.asp.net/scottgu" mce_href="http://weblogs.asp.net/scottgu"&gt;ScottGu&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;So, with all apologies to &lt;a href="http://twitter.com/scottgu" mce_href="http://twitter.com/scottgu"&gt;Mr. Guthrie&lt;/a&gt; here are my backgrounds for your pleasure:&lt;/p&gt;

&lt;h3&gt;Morning&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Morning.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Morning.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MorningThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MorningThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Morning.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Morning.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Priceless&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Priceless.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Priceless.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/PricelessThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/PricelessThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Priceless.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Priceless.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Minimum Speed&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGu.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGuThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGuThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MinimumSpeedGu.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Caution&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Caution.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Caution.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/CautionThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/CautionThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Caution.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Caution.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Population&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Population.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Population.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/PopulationThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/PopulationThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Population.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Population.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Calligraphy&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Calligraphy.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Calligraphy.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/CalligraphyThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/CalligraphyThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Calligraphy.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Calligraphy.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Granny&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Granny.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Granny.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/GrannyThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/GrannyThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Granny.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Granny.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Bird&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bird.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bird.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BirdThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BirdThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bird.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bird.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Bubbles&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bubbles.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bubbles.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BubblesThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BubblesThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bubbles.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Bubbles.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Brilliant&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Brilliant.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Brilliant.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BrilliantThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/BrilliantThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Brilliant.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/Brilliant.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Base&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBase.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBase.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBaseThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBaseThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBase.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/AllYourBase.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Hello&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGu.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGuThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGuThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/HelloMyNameIsTheGu.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Rated Gu&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGu.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGuThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGuThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGu.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/RatedGu.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Your Father&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFather.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFather.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFatherThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFatherThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFather.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/YourFather.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;May the Gu&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYou.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYou.png"&gt;&lt;img src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYouThumb.png" mce_src="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYouThumb.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYou.png" mce_href="http://polymorphicpodcast.com/images/desktopbackgrounds/gu/MayTheGuBeWithYou.png"&gt;Click here to download full size version.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, which one is your favorite?&lt;/p&gt;

&lt;p&gt;If you decide to use one, I’d love to know! You can send a reply to &lt;a href="http://twitter.com/craigshoemaker" mce_href="http://twitter.com/craigshoemaker"&gt;@craigshoemaker&lt;/a&gt; on Twitter, and you can even use the &lt;a href="http://search.twitter.com/search?q=%23showmeyourdesktop" mce_href="http://search.twitter.com/search?q=%23showmeyourdesktop"&gt;#showmeyourdesktop&lt;/a&gt; hash tag if you like.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Bonus Backgrounds&lt;/h3&gt;
&lt;p&gt;This all got started as I was creating &lt;a href="http://craigshoemaker.wordpress.com/2009/10/02/wandering-lights/" mce_href="http://craigshoemaker.wordpress.com/2009/10/02/wandering-lights/"&gt;Wandering Lights&lt;/a&gt; and &lt;a href="http://craigshoemaker.wordpress.com/2009/10/05/overkill/" mce_href="http://craigshoemaker.wordpress.com/2009/10/05/overkill/"&gt;Overkill&lt;/a&gt;, if you want to check out some non-Gu backgrounds ;)&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7223795" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Community+News/default.aspx">Community News</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/10/06/15-desktop-backgrounds-to-support-net-development-and-pay-homage-to-the-gu.aspx</feedburner:origLink></item><item><title>Updated Video for ‘Using Firebug and jQuery’ Post</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/GY8oqut2RF4/updated-video-for-using-firebug-and-jquery-post.aspx</link><pubDate>Fri, 18 Sep 2009 21:41:51 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7210612</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7210612</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/09/18/updated-video-for-using-firebug-and-jquery-post.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://encosia.com/"&gt;Dave Ward&lt;/a&gt; and I recently &lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/08/04/using-firebug-and-jquery.aspx"&gt;recorded a video demonstrating Dave’s techniques for quickly working with jQuery&lt;/a&gt; on any webpage. Dave does a great job quickly showing you how you can work with tools like &lt;a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet"&gt;jQuerify&lt;/a&gt; and &lt;a href="http://www.selectorgadget.com/"&gt;SelectorGadget&lt;/a&gt; to easily prototype functionality and work with the host of &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; features.&lt;/p&gt;  &lt;p&gt;Unfortunately the original video source was a little distorted so the final compressed video suffered even further. To better the viewing experience, we decided to record the video and fix the production issues. &lt;/p&gt;  &lt;p&gt;You can watch the video in the following ways:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On &lt;a href="http://www.youtube.com/watch?v=JB6MIV_lHI0"&gt;YouTube&lt;/a&gt; (make sure to click the HQ or High Quality button in the player)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://polymorphicpodcast.com/podcast/video/firebug-and-jquery/polymorphicpodcast-firebug2.wmv"&gt;Download the original WMV&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Watch in the embedded player below&lt;/li&gt; &lt;/ul&gt; &lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JB6MIV_lHI0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/JB6MIV_lHI0&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7210612" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/CSS/default.aspx">CSS</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/09/18/updated-video-for-using-firebug-and-jquery-post.aspx</feedburner:origLink></item><item><title>Expression Blend Design Time Data Using MVVM </title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/vhf6flvN2kg/expression-blend-design-time-data-using-mvvm.aspx</link><pubDate>Tue, 11 Aug 2009 22:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7166884</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7166884</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/08/11/expression-blend-design-time-data-using-mvvm.aspx#comments</comments><description>&lt;p&gt;Today’s show features Microsoft MVP and &lt;a href="http://identitymine.com/"&gt;Identity Mine&lt;/a&gt; integrator &lt;a href="http://blog.galasoft.ch/"&gt;Laurent Bugnion&lt;/a&gt;. Laurent discusses his experience with working in XAML applications that use MVVM and working with developers and designers to create beautiful applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/jquery/" mce_href="http://polymorphicpodcast.com/shows/jquery/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" height="58" width="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table border="0" cellpadding="3" cellspacing="3"&gt;&lt;tbody&gt;

    &lt;tr&gt;
      &lt;th align="left"&gt;Full Speed:&lt;/th&gt;

      &lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-08-11-blendmvvm.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      &lt;td&gt;&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     &lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     &lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-08-11-blendmvvm.mp3"&gt;     &lt;param name="quality" value="high"&gt;     &lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;&lt;/td&gt;

    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;th align="left"&gt;Fast Version:&lt;/th&gt;

      &lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-08-11-blendmvvm_fast.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      &lt;td&gt;&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" height="24" width="290"&gt;     &lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     &lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-08-11-blendmvvm_fast.mp3"&gt;     &lt;param name="quality" value="high"&gt;     &lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;&lt;/td&gt;

    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;


&lt;p&gt;The interview includes the following topics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Origins of MVVM
    &lt;br&gt;&lt;/li&gt;

  &lt;li&gt;Advantages of using Blend
    &lt;br&gt;&lt;/li&gt;

  &lt;li&gt;Role of integrator
    &lt;br&gt;&lt;/li&gt;

  &lt;li&gt;Providing design time data to Blend with MVVM includes the answers to these questions:&lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;Who prepares the data?&lt;/li&gt;

    &lt;li&gt;What are the mechanics that Blend uses to display design time data?&lt;/li&gt;

    &lt;li&gt;Where does the data live in the program?&lt;/li&gt;

    &lt;li&gt;How is the data provided to Blend?
      &lt;br&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;li&gt;Ways to overcome paint points in Blend&lt;/li&gt;

  &lt;ul&gt;

    &lt;li&gt;Applications must pass the “Blendability” test&lt;/li&gt;

    &lt;ul&gt;
      &lt;li&gt;Failure is often dictated by poorly abstracted dependencies on databases, services etc.&lt;/li&gt;
    &lt;/ul&gt;

    &lt;li&gt;Test often in Blend&lt;/li&gt;
  &lt;/ul&gt;

&lt;/ul&gt;

&lt;h2&gt;Resources&lt;/h2&gt;

&lt;p&gt;The following links are resources mentioned in the show:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91950.aspx"&gt;Implementing MVVM in WPF&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91949.aspx"&gt;Implementing MVVM in Silverlight&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://joshsmithonwpf.wordpress.com/"&gt;Josh Smith&lt;/a&gt;’s &lt;a href="http://mvvmfoundation.codeplex.com/"&gt;MVVM Foundation&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;Polymorphic Podcast &lt;a href="http://polymorphicpodcast.com/"&gt;FastFeed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7166884" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVVM/default.aspx">MVVM</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/08/11/expression-blend-design-time-data-using-mvvm.aspx</feedburner:origLink></item><item><title>Using Firebug and jQuery</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/MSkEKqlApj0/using-firebug-and-jquery.aspx</link><pubDate>Tue, 04 Aug 2009 18:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7161221</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7161221</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/08/04/using-firebug-and-jquery.aspx#comments</comments><description>
&lt;p&gt;A recent episode of the &lt;a href="http://polymorphicpodcast.com/" mce_href="http://polymorphicpodcast.com/"&gt;Polymorphic Podcast&lt;/a&gt; includes &lt;a href="http://polymorphicpodcast.com/shows/jquery/" mce_href="http://polymorphicpodcast.com/shows/jquery/"&gt;jQuery Secrets with Dave Ward&lt;/a&gt;. During our discussion &lt;a href="http://encosia.com/" mce_href="http://encosia.com/"&gt;Dave&lt;/a&gt; mentioned some techniques and tools to use alongside &lt;a href="http://getfirebug.com/" mce_href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; and &lt;a href="http://jquery.com" mce_href="http://jquery.com"&gt;jQuery&lt;/a&gt;. After our interview we got together again to record &lt;a href="http://polymorphicpodcast.com/podcast/video/firebug-and-jquery/" mce_href="http://polymorphicpodcast.com/podcast/video/firebug-and-jquery/"&gt;this video&lt;/a&gt; that demonstrates:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;How to install Firebug&lt;/li&gt;

  
&lt;li&gt;Firebug basics&lt;/li&gt;

  
&lt;li&gt;How to inject jQuery into just about any page using &lt;a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet" mce_href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet"&gt;jQuerify&lt;/a&gt;&lt;/li&gt;

  
&lt;li&gt;Building selectors with &lt;a href="http://www.selectorgadget.com/" mce_href="http://www.selectorgadget.com/"&gt;SelectorGadget&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;How to interactively manipulate pages on the fly&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dave is a powerhouse of knowledge and experience in this area – &lt;a href="http://polymorphicpodcast.com/podcast/video/firebug-and-jquery/" mce_href="http://polymorphicpodcast.com/podcast/video/firebug-and-jquery/"&gt;enjoy the video&lt;/a&gt;!&lt;/p&gt;

&lt;div style="padding: 5px; background-color: rgb(255, 255, 204);"&gt;&lt;b&gt;Update:&lt;/b&gt; Dave and I re-recorded the video and made it available in higher-quality formats. Check out &lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/09/18/updated-video-for-using-firebug-and-jquery-post.aspx"&gt;Updated Video for ‘Using Firebug and jQuery’ Post&lt;/a&gt; for details.&lt;/div&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7161221" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/video/default.aspx">video</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/08/04/using-firebug-and-jquery.aspx</feedburner:origLink></item><item><title>Professional Activity August 2008 to Date</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/6_emvuyz7W0/professional-activity-august-2008-to-date.aspx</link><pubDate>Fri, 24 Jul 2009 16:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7154067</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7154067</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/07/24/professional-activity-august-2008-to-date.aspx#comments</comments><description>
&lt;p&gt;Every year around this time I turn my attention to &lt;a href="http://www.amazon.com/What-Ive-Done/dp/B0011Z78K8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1248452724&amp;amp;sr=1-1" mce_href="http://www.amazon.com/What-Ive-Done/dp/B0011Z78K8/ref=sr_1_1?ie=UTF8&amp;amp;qid=1248452724&amp;amp;sr=1-1"&gt;what I’ve done&lt;/a&gt; over the past year in order to update my &lt;a href="http://mvp.support.microsoft.com/profile/Craig.Shoemaker" mce_href="http://mvp.support.microsoft.com/profile/Craig.Shoemaker"&gt;MVP profile&lt;/a&gt;. While the engine Microsoft provides has many ways to list accomplishments and activities, I’ve always had a difficult time trying to find the right way to list my activities over the year.&lt;/p&gt;

&lt;p&gt;Often at the end of the year bloggers will list links to the “greatest hits” posts for readers to review. I thought I’d turn it up a notch. The following links represent just about everything I’ve done from August 2008 to date. &lt;/p&gt;

&lt;p&gt;Hopefully you’ll find something fun or valuable below that you may have missed this last year :)&lt;/p&gt;

&lt;h3&gt;Podcast Episodes&lt;/h3&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/" mce_href="http://polymorphicpodcast.com/"&gt;Polymorphic Podcast&lt;/a&gt; &lt;/li&gt;

  
&lt;ol&gt;
    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/jquery" mce_href="http://polymorphicpodcast.com/shows/jquery"&gt;jQuery Secrets with Dave Ward&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/automapper" mce_href="http://polymorphicpodcast.com/shows/automapper"&gt;AutoMapper with Jimmy Bogard&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/aspnetmvc1" mce_href="http://polymorphicpodcast.com/shows/aspnetmvc1"&gt;Exploring ASP.NET MVC 1&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/updatecontrols" mce_href="http://polymorphicpodcast.com/shows/updatecontrols"&gt;Update Controls Leaving INotifyPropertyChanged?&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/digital-life" mce_href="http://polymorphicpodcast.com/shows/digital-life"&gt;Digital Productivity Strategies for Developers&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/controlhtml" mce_href="http://polymorphicpodcast.com/shows/controlhtml"&gt;Controlling HTML in ASP.NET WebForms&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/aspnetseo" mce_href="http://polymorphicpodcast.com/shows/aspnetseo"&gt;ASP.NET SEO&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/webperformance" mce_href="http://polymorphicpodcast.com/shows/webperformance"&gt;ASP.NET Caching and Performance&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://polymorphicpodcast.com/shows/craigslist" mce_href="http://polymorphicpodcast.com/shows/craigslist"&gt;Interview with craigslist.com Founder Craig Newmark&lt;/a&gt;
      &lt;br&gt;&lt;/li&gt;
  &lt;/ol&gt;

  
&lt;li&gt;&lt;a href="http://getpixel8ed.com" mce_href="http://getpixel8ed.com"&gt;Pixel8&lt;/a&gt; &lt;/li&gt;

  
&lt;ol&gt;
    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/103725.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/103725.aspx"&gt;7 Dos and Don’ts in Getting Started in User Centered Design&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/95683.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/95683.aspx"&gt;History of User Experience&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91953.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91953.aspx"&gt;Value of Web Forms and Design Constraints&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91949.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91949.aspx"&gt;Implementing Model-View-ViewModel in Silverlight&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91950.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91950.aspx"&gt;Implementing Model-View-ViewModel in WPF&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91952.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91952.aspx"&gt;Implementing MVVM &amp;amp; Exploring UX Design Patterns&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91948.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91948.aspx"&gt;ASP.NET 4 and Visual Studio 2010 Enhancements&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91947.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91947.aspx"&gt;Silverlight: Live Mesh Integration, Surviving the Olympics and Future Expectations – Interview with Scott Guthrie&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91945.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91945.aspx"&gt;Developer’s Guide to User Experience Design&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91944.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91944.aspx"&gt;Silverlight 2.0: Beyond the Basics&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91943.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91943.aspx"&gt;4 Elements of Professional WPF Applications&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/91938.aspx" mce_href="http://community.infragistics.com/pixel8/media/p/91938.aspx"&gt;Learning to Build on Rich UI Platforms&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/ul&gt;

&lt;h3&gt;Video Interviews&lt;/h3&gt;

&lt;ol&gt;
  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/79463.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/79463.aspx"&gt;Introducing Silverlight Data Visualization&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/90158.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/90158.aspx"&gt;Lap Aroung Web Client 2009 Vol1 &amp;amp; Coming Vol2 Features&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Screencasts&lt;/h3&gt;

&lt;ol&gt;
  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/105503.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/105503.aspx"&gt;WebDataGrid Paging with the WebSlider&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;WebDataGrid Paging Overview: &lt;a href="http://community.infragistics.com/aspnet/media/p/105015.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/105015.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://community.infragistics.com/aspnet/media/p/105483.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/105483.aspx"&gt;Part 2&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/100304.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/100304.aspx"&gt;Drag and Drop Rows Between WebDataGrids&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/98918.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/98918.aspx"&gt;WebDataGrid in ASP.NET MVC : Hello World&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/98916.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/98916.aspx"&gt;Issue Tracker Code Review : NetAdvantage ASP.NET in ASP.NET MVC&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/92416.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/92416.aspx"&gt;WebDropDown Multi-Select – Selections Handled on the Server&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/92412.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/92412.aspx"&gt;WebDropDown Multi-Select – Selections Handled on the Client&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/92406.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/92406.aspx"&gt;Embedding the WebProgressBar Inside a WebDataGrid Custom Column&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/90893.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/90893.aspx"&gt;Introduction to the Infragistics Drag and Drop Framework&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/88944.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/88944.aspx"&gt;Persist WebDataGrid Moved Columns&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/87811.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/87811.aspx"&gt;WebDropDown Data Paging&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/87810.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/87810.aspx"&gt;WebDropDown Lazing Loading&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/87808.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/87808.aspx"&gt;WebProgressBar Setting the Value&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/86764.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/86764.aspx"&gt;WebDataGrid Custom Row Edit Template&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/86763.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/86763.aspx"&gt;WebDropDown Custom Templates&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/86762.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/86762.aspx"&gt;WebDataMenu Custom Templates&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/86761.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/86761.aspx"&gt;WebDataTree Custom Templates&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79157.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79157.aspx"&gt;WebDataGrid: Create a Custom Pager Template&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79156.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79156.aspx"&gt;WebSplitterControl: Hiding the Split Bar&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79155.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79155.aspx"&gt;WebSplitterControl: Hello World&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79154.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79154.aspx"&gt;WebDataGrid Control Templates&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79153.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79153.aspx"&gt;WebDataGrid Client Row Selection&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79152.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79152.aspx"&gt;WebDialogWindow: Hello World&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79151.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79151.aspx"&gt;WebDialogWindow: Exploring Common Properties&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79150.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79150.aspx"&gt;WebDialogWindow: Creating a Wizard&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79149.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79149.aspx"&gt;Introduction to WebSpellChecker&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79148.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79148.aspx"&gt;Implementing Auto Check with WebSpellChecker&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79147.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79147.aspx"&gt;Spell Check Multiple Controls on a Page&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79146.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79146.aspx"&gt;WebImageViewer Introduction&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79145.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79145.aspx"&gt;Customizing WebDataGrid Columns&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79144.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79144.aspx"&gt;Creating Custom WebDataGrid Headers and Footers&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79143.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79143.aspx"&gt;Introduction to the WebDataGrid Read-Only Behaviors&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79142.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79142.aspx"&gt;Customizing WebDataGrid Column Resizing Behavior&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79141.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79141.aspx"&gt;WebDataGrid: Ajax Master/Detail Page&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79140.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79140.aspx"&gt;Implementing the Live Form Ajax Pattern&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/media/p/79139.aspx" mce_href="http://community.infragistics.com/aspnet/media/p/79139.aspx"&gt;WebDataGrid CRUD Behaviors&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125526.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125526.aspx"&gt;Using the Silverlight Commanding Framework with Model-View-ViewModel&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125525.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125525.aspx"&gt;Edit to xamWebGrid Cell Styles in Expression Blend&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125516.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125516.aspx"&gt;Introduction to xamWebGrid Template Columns&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125515.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125515.aspx"&gt;Introduction to xamWebGrid Sorting&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125514.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125514.aspx"&gt;Overview of xamWebGrid Row Customizations&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125441.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125441.aspx"&gt;Customizing xamWebGrid Paging Template&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125440.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125440.aspx"&gt;Customizing xamWebGrid GroupBy Headers&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125431.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125431.aspx"&gt;Using xamWebGrid Edit Mode Events&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125429.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125429.aspx"&gt;Introduction to xamWebGrid Edit Behaviors&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125428.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125428.aspx"&gt;Conditional Cell Formatting in the xamWebGrid&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125426.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125426.aspx"&gt;Introduction to xamWebGrid Column Moving&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125420.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125420.aspx"&gt;Introduction to xamWebGrid Fixed Columns&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/125026.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/125026.aspx"&gt;Add Silverlight Controls to the Visual Studio Toolbox&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/silverlight/media/p/124531.aspx" mce_href="http://community.infragistics.com/silverlight/media/p/124531.aspx"&gt;Overview of Basic xamWebGrid Behaviors&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;eBook&lt;/h3&gt;

&lt;ol&gt;
  
&lt;li&gt;&lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/Secrets-of-Real-World-ASP-NET-Dynamic-Data-Websites.productCd-047045735X.html" mce_href="http://www.wrox.com/WileyCDA/WroxTitle/Secrets-of-Real-World-ASP-NET-Dynamic-Data-Websites.productCd-047045735X.html"&gt;Secrets of Real World Dynamic Data Websites&lt;/a&gt;, &lt;i&gt;Wrox,&lt;/i&gt; March 2009, 34 pages &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Presentations&lt;/h3&gt;

&lt;ol&gt;
  
&lt;li&gt;Secrets of Real World Dynamic Data Websites 
    
&lt;ul&gt;
      
&lt;li&gt;Southern California Code Camp, 1/09 &lt;/li&gt;

      
&lt;li&gt;Orange County .NET User Group, 9/08 &lt;/li&gt;

      
&lt;li&gt;Los Angeles .NET User Group, 11/08 &lt;/li&gt;

      
&lt;li&gt;San Diego .NET User Group, 1/09 &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Blogs&lt;/h3&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/" mce_href="http://weblogs.asp.net/craigshoemaker/"&gt;ASP.NET Blog&lt;/a&gt; &lt;/li&gt;

  
&lt;ol&gt;
    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/06/23/7-dos-and-don-ts-in-getting-started-in-user-centered-design.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2009/06/23/7-dos-and-don-ts-in-getting-started-in-user-centered-design.aspx"&gt;7 Dos and Don'ts in Getting Started in User Centered Design&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/bHwiLLztbcg/jquery-secrets-with-dave-ward.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/bHwiLLztbcg/jquery-secrets-with-dave-ward.aspx"&gt;jQuery Secrets with Dave Ward&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/06/11/netadvantage-asp-net-in-asp-net-mvc.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2009/06/11/netadvantage-asp-net-in-asp-net-mvc.aspx"&gt;NetAdvantage ASP.NET in ASP.NET MVC&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/yRtjCGW_ZeA/surprising-ajax-adoption-stats.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/yRtjCGW_ZeA/surprising-ajax-adoption-stats.aspx"&gt;Surprising Ajax Adoption Stats&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/QBuvdEnP7uw/automapper-with-jimmy-bogard.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/QBuvdEnP7uw/automapper-with-jimmy-bogard.aspx"&gt;AutoMapper with Jimmy Bogard&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/PSq9xy_rZVM/history-of-user-experience.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/PSq9xy_rZVM/history-of-user-experience.aspx"&gt;History of User Experience&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/2PPV2XGeqrs/exploring-asp-net-mvc-1-0.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/2PPV2XGeqrs/exploring-asp-net-mvc-1-0.aspx"&gt;Exploring ASP.NET MVC 1.0&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/0OuPSyePFXk/the-value-of-web-forms-and-design-constraints.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/0OuPSyePFXk/the-value-of-web-forms-and-design-constraints.aspx"&gt;The Value of Web Forms and Design Constraints&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/xelAaOzb7Zo/update-controls-leaving-inotifypropertychanged.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/xelAaOzb7Zo/update-controls-leaving-inotifypropertychanged.aspx"&gt;Update Controls: Leaving INotifyPropertyChanged?&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/RCC4bg9D-VE/use-jquery-to-decorate-links.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/RCC4bg9D-VE/use-jquery-to-decorate-links.aspx"&gt;Use jQuery to Decorate Links&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/_JnWSlU6XaY/secrets-of-real-world-asp-net-dynamic-data-websites-ebook-now-available.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/_JnWSlU6XaY/secrets-of-real-world-asp-net-dynamic-data-websites-ebook-now-available.aspx"&gt;Secrets of Real World ASP.NET Dynamic Data Websites eBook Now Available&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/_yfZkVSr4kI/search-multiple-labels-in-gmail.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/_yfZkVSr4kI/search-multiple-labels-in-gmail.aspx"&gt;Search Multiple Labels in Gmail&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/jvngOjHAEC8/digital-productivity-strategies-for-developers.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/jvngOjHAEC8/digital-productivity-strategies-for-developers.aspx"&gt;Digital Productivity Strategies for Developers&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/LiD-Y_zE8sA/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/LiD-Y_zE8sA/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx"&gt;Hands-On Model-View-ViewModel (MVVM) for Silverlight and WPF&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://feedproxy.google.com/%7Er/PolymorphicPodcastBlog/%7E3/6-OIpdidC18/2009-southern-california-code-camp-session-materials.aspx" mce_href="http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/6-OIpdidC18/2009-southern-california-code-camp-session-materials.aspx"&gt;2009 Southern California Code Camp Session Materials&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/19/asp-net-4-0-and-visual-studio-2010-enhancements.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/19/asp-net-4-0-and-visual-studio-2010-enhancements.aspx"&gt;ASP.NET 4.0 and Visual Studio 2010 Enhancements&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/02/controlling-html-in-asp-net-webforms.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/02/controlling-html-in-asp-net-webforms.aspx"&gt;Controlling HTML in ASP.NET WebForms&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/21/the-illusion-of-persistence-saving-test-data.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/21/the-illusion-of-persistence-saving-test-data.aspx"&gt;The Illusion of Persistence: Saving Test Data&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/21/productive-writing.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/21/productive-writing.aspx"&gt;Productive Writing&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/13/silverlight-live-mesh-integration-surviving-the-olympics-and-future-expectations-interview-with-scott-guthrie.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/13/silverlight-live-mesh-integration-surviving-the-olympics-and-future-expectations-interview-with-scott-guthrie.aspx"&gt;Silverlight: Live Mesh Integration, Surviving the Olympics and Future Expectations – Interview with Scott Guthrie&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/07/using-jquery-to-call-asp-net-ajax-page-methods-by-example.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/07/using-jquery-to-call-asp-net-ajax-page-methods-by-example.aspx"&gt;Using jQuery to Call ASP.NET AJAX Page Methods – By Example&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/06/poor-man-s-client-templates.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/06/poor-man-s-client-templates.aspx"&gt;Poor Man’s Client Templates&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/05/bookrepository-the-mock-data-repository-for-testing-and-demos.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/11/05/bookrepository-the-mock-data-repository-for-testing-and-demos.aspx"&gt;BookRepository: The Mock Data Repository for Testing and Demos&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/10/14/asp-net-seo.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/10/14/asp-net-seo.aspx"&gt;ASP.NET SEO&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/10/02/developer-s-guide-to-user-experience-design.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/10/02/developer-s-guide-to-user-experience-design.aspx"&gt;Developer’s Guide to User Experience Design&lt;/a&gt; &lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/09/29/using-jquery-to-call-asp-net-ajax-page-methods.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/09/29/using-jquery-to-call-asp-net-ajax-page-methods.aspx"&gt;Using jQuery to Call ASP.NET AJAX Page Methods&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/29/silverlight-2-0-beyond-the-basics.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/29/silverlight-2-0-beyond-the-basics.aspx"&gt;Silverlight 2.0: Beyond the Basics&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/28/asp-net-caching-and-performance.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/28/asp-net-caching-and-performance.aspx"&gt;ASP.NET Caching and Performance&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/22/4-elements-of-professional-wpf-applications.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/22/4-elements-of-professional-wpf-applications.aspx"&gt;4 Elements of Professional WPF Applications&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/19/new-asp-net-generated-image-control.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/19/new-asp-net-generated-image-control.aspx"&gt;New ASP.NET Generated Image Control&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/14/hide-your-corporate-underpants-using-personas-in-ux-design.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/14/hide-your-corporate-underpants-using-personas-in-ux-design.aspx"&gt;Hide Your Corporate Underpants - Using Personas in UX Design&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/12/installing-net-3-5-and-visual-studio-2008-sp1-my-gotchas.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/12/installing-net-3-5-and-visual-studio-2008-sp1-my-gotchas.aspx"&gt;Installing .NET 3.5 and Visual Studio 2008 SP1 - My Gotchas&lt;/a&gt;&lt;/li&gt;

    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/06/learning-to-build-on-rich-ui-platforms.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/08/06/learning-to-build-on-rich-ui-platforms.aspx"&gt;Learning to Build on Rich UI Platforms&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/"&gt;Infragistics Blog&lt;/a&gt;: (excludes cross-posted items from above) 
    
&lt;ol&gt;
      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/16/persisting-moved-webdatagrid-columns.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/16/persisting-moved-webdatagrid-columns.aspx"&gt;Persisting Moved WebDataGrid Columns&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/09/more-2009-1-videos-webdropdown-and-webprogressbar.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/09/more-2009-1-videos-webdropdown-and-webprogressbar.aspx"&gt;More 2009.1 Videos: WebDropDown and WebProgressBar&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/04/sneak-peek-at-netadvantage-web-client-2009-1.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/04/04/sneak-peek-at-netadvantage-web-client-2009-1.aspx"&gt;Sneak Peek at NetAdvantage Web Client 2009.1&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/01/12/webdatagrid-client-row-selection-videos.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2009/01/12/webdatagrid-client-row-selection-videos.aspx"&gt;WebDataGrid Client Row Selection Videos&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2008/12/08/webdatagrid-crud-behaviors.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2008/12/08/webdatagrid-crud-behaviors.aspx"&gt;WebDataGrid CRUD Behaviors&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2008/11/06/building-an-ajax-master-detail-page-with-the-webdatagrid.aspx" mce_href="http://community.infragistics.com/blogs/craig_shoemaker/archive/2008/11/06/building-an-ajax-master-detail-page-with-the-webdatagrid.aspx"&gt;Building an Ajax Master/Detail Page with the WebDataGrid&lt;/a&gt; &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Articles&lt;/h3&gt;

&lt;ol&gt;
  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/articles/introduction-to-the-infragistics-web-drag-and-drop-framework.aspx" mce_href="http://community.infragistics.com/aspnet/articles/introduction-to-the-infragistics-web-drag-and-drop-framework.aspx"&gt;Introduction to the Infragistics Web Drag and Drop Framework&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/articles/learn-to-build-a-webdatagrid-custom-pager.aspx" mce_href="http://community.infragistics.com/aspnet/articles/learn-to-build-a-webdatagrid-custom-pager.aspx"&gt;Learn to Build a WebDataGrid Custom Pager&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/articles/implementing-an-ajax-live-form-with-netadvantage-webclient-controls.aspx" mce_href="http://community.infragistics.com/aspnet/articles/implementing-an-ajax-live-form-with-netadvantage-webclient-controls.aspx"&gt;Implementing an Ajax Live Form with NetAdvantage Web Client Controls&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/articles/building-an-ajax-master-detail-page-with-the-webdatagrid.aspx" mce_href="http://community.infragistics.com/aspnet/articles/building-an-ajax-master-detail-page-with-the-webdatagrid.aspx"&gt;Building a Master/Detail Page with WebDataGrid&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://community.infragistics.com/aspnet/articles/implementing-webdatagrid-client-side-search.aspx" mce_href="http://community.infragistics.com/aspnet/articles/implementing-webdatagrid-client-side-search.aspx"&gt;Implementing WebDataGrid Client Side Search&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Forums&lt;/h3&gt;

&lt;ul&gt;
  
&lt;li&gt;Occasional contribution to the &lt;a href="http://community.infragistics.com/members/craigshoemaker/default.aspx" mce_href="http://community.infragistics.com/members/craigshoemaker/default.aspx"&gt;Infragistics support forums&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Twitter&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;You can always &lt;a href="http://twitter.com/craigshoemaker"&gt;find me on Twitter&lt;/a&gt; too ;)&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7154067" width="1" height="1"&gt;</description><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/07/24/professional-activity-august-2008-to-date.aspx</feedburner:origLink></item><item><title>7 Dos and Don'ts in Getting Started in User Centered Design</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/tfXOO1rV56k/7-dos-and-don-ts-in-getting-started-in-user-centered-design.aspx</link><pubDate>Tue, 23 Jun 2009 22:47:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7132858</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7132858</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/06/23/7-dos-and-don-ts-in-getting-started-in-user-centered-design.aspx#comments</comments><description>
&lt;p&gt;This week’s &lt;a href="http://getpixel8ed.com/" mce_href="http://getpixel8ed.com/"&gt;Pixel8&lt;/a&gt; episode continues the series of user experience fundamentals with &lt;a href="http://tobiask.net/" mce_href="http://tobiask.net/"&gt;Dr. Tobias Komischke&lt;/a&gt; Director of &lt;a href="http://www.infragistics.com/ux/" mce_href="http://www.infragistics.com/ux/"&gt;User Experience at Infragistics&lt;/a&gt;. Tobias shares seven user-centered design concepts and the associated “dos” and “don’ts” with each point.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/103725.aspx"&gt;&lt;img src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" mce_src="http://download.infragistics.com/users/pixel8/images/pixel8podcast.png" border="0" width="276" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;1: Orientation&lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Try to answer the three fundamental questions for every screen: 
    
&lt;ul&gt;
      
&lt;li&gt;Where am I? &lt;/li&gt;

      
&lt;li&gt;Where have I come from? &lt;/li&gt;

      
&lt;li&gt;What's next? 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;Employ UI patterns (often implemented by controls) to answer these questions 
    
&lt;ul&gt;
      
&lt;li&gt;Bread crumb and outlook bars do an excellent job of orienting a user &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Provide a blank context for a screen &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;2: Visual Attention &lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Group items that go together &lt;/li&gt;

  
&lt;li&gt;Make important elements stick out using size and color &lt;/li&gt;

  
&lt;li&gt;Use relative white space as a way to draw attention &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t &lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Give all visual elements the same “weight” in size and color &lt;/li&gt;

  
&lt;li&gt;Use motion or animation unless you have a good reason to do so &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;3: Visual Structure and Flow&lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Think about how people consume visual information (often top to bottom and left to right) &lt;/li&gt;

  
&lt;li&gt;Provide visual clues to guide users what to look at first, next and so on &lt;/li&gt;

  
&lt;li&gt;Place controls that finalize actions at the end of the flow &lt;/li&gt;

  
&lt;li&gt;Pay attention to consistent alignment &lt;/li&gt;

  
&lt;li&gt;Try to adhere to established conventions &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Add components to a screen simply because there is space to fill &lt;/li&gt;

  
&lt;li&gt;Place submit buttons at the top of a form&amp;nbsp; - we’re looking at you, &lt;a href="http://sharepoint.microsoft.com/" mce_href="http://sharepoint.microsoft.com/"&gt;SharePoint&lt;/a&gt; :) &lt;/li&gt;

  
&lt;li&gt;Require users add in un-necessary data &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;4: Scrolling &amp;amp; Paging&lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Employ paging when data is 3x or more larger than the available view area &lt;/li&gt;

  
&lt;li&gt;Give ways for users to jump to specific pages when dealing with a lot of data &lt;/li&gt;

  
&lt;li&gt;&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Scroll horizontally unless you absolutely must &lt;/li&gt;

  
&lt;li&gt;Scroll endlessly &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;5: Text &lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Vary font sizes to bring attention to important text &lt;/li&gt;

  
&lt;li&gt;Choose font sizes that people can read &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Select text colors that are hard to read &lt;/li&gt;

  
&lt;li&gt;Use text when it obstructs the meaning or a function of an operation – consider using an icon &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;6: Icons&lt;/h2&gt;

&lt;p&gt;Do &lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Use icons to save screen real estate &lt;/li&gt;

  
&lt;li&gt;Provide a legend to explain meaning of icons &lt;/li&gt;

  
&lt;li&gt;Define tool tips to give context and meaning to icons &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Use icons to represent complicated concepts &lt;/li&gt;

  
&lt;li&gt;Use icons inconsistently throughout the application &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;7: Graphs&lt;/h2&gt;

&lt;p&gt;Do&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Bar charts when possible 
    
&lt;ul&gt;
      
&lt;li&gt;Research indicates bar charts are easiest to interpret as the X axis doesn’t convey meaning relative to the value &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;Label chart scales &lt;/li&gt;

  
&lt;li&gt;Use appropriate scale values &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;Rely solely on ability of the user to interpret volumes 
    
&lt;ul&gt;
      
&lt;li&gt;For example, 3D pie charts may prove difficult to understand as volumes are difficult for users to rate &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Reference Books&lt;/h3&gt;

&lt;p&gt;In the interview Tobias mentions a number of books that you may find useful when building data visualization screens:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://www.amazon.com/Elements-Graphing-Data-William-Cleveland/dp/0963488414/" mce_href="http://www.amazon.com/Elements-Graphing-Data-William-Cleveland/dp/0963488414/"&gt;Elements of Graphing Data&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.amazon.com/Visual-Display-Quantitative-Information-2nd/dp/0961392142/" mce_href="http://www.amazon.com/Visual-Display-Quantitative-Information-2nd/dp/0961392142/"&gt;The Visual Display of Quantitative Information&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.amazon.com/Envisioning-Information-Edward-R-Tufte/dp/0961392118/" mce_href="http://www.amazon.com/Envisioning-Information-Edward-R-Tufte/dp/0961392118/"&gt;Envisioning Information&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.amazon.com/Information-Visualization-Second-Interactive-Technologies/dp/1558608192/" mce_href="http://www.amazon.com/Information-Visualization-Second-Interactive-Technologies/dp/1558608192/"&gt;Information Visualization&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7132858" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-06-23-7dosdonts.mp3" length="31665332" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/user+experience/default.aspx">user experience</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Pixel8/default.aspx">Pixel8</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/06/23/7-dos-and-don-ts-in-getting-started-in-user-centered-design.aspx</feedburner:origLink></item><item><title>jQuery Secrets with Dave Ward</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/bHwiLLztbcg/jquery-secrets-with-dave-ward.aspx</link><pubDate>Mon, 22 Jun 2009 13:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7131982</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7131982</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/06/22/jquery-secrets-with-dave-ward.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://encosia.com/" mce_href="http://encosia.com/"&gt;Dave Ward&lt;/a&gt; specializes in writing about ASP.NET, jQuery and ASP.NET AJAX. He is a contributing author to ASP.NET Ajax in Action, Second Edition from Manning, &lt;a href="http://nerddinner.com/" mce_href="http://nerddinner.com/"&gt;Nerd Dinner&lt;/a&gt;’s JavaScript secret weapon, listed on the &lt;a href="http://programming.alltop.com/" mce_href="http://programming.alltop.com/"&gt;Programming homepage of Alltop&lt;/a&gt; and newly inducted &lt;a href="http://aspinsiders.com/" mce_href="http://aspinsiders.com/"&gt;ASP Insider&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/jquery/" mce_href="http://polymorphicpodcast.com/shows/jquery/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" width="378" height="58"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table border="0" cellpadding="3" cellspacing="3"&gt;&lt;tbody&gt;
    
&lt;tr&gt;
      &lt;th align="left"&gt;Full Speed:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery.mp3" mce_href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" width="290" height="24"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;
    &lt;/tr&gt;

    
&lt;tr&gt;
      &lt;th align="left"&gt;Fast Version:&lt;/th&gt;
      
&lt;td&gt;&lt;a href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery_fast.mp3" mce_href="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery_fast.mp3"&gt;download&lt;/a&gt;&lt;/td&gt;

      
&lt;td&gt;
&lt;object type="application/x-shockwave-flash" data="http://polymorphicpodcast.com/plugins/audio-player/player.swf" id="audioplayer1" width="290" height="24"&gt;     
&lt;param name="movie" value="http://polymorphicpodcast.com/plugins/audio-player/player.swf"&gt;     
&lt;param name="FlashVars" value="playerID=1&amp;amp;bg=0xE9E6DF&amp;amp;leftbg=0xEEEEEE&amp;amp;lefticon=0x666666&amp;amp;rightbg=0xCCCCCC&amp;amp;rightbghover=0x999999&amp;amp;righticon=0x666666&amp;amp;righticonhover=0xFFFFFF&amp;amp;text=0x666666&amp;amp;slider=0x666666&amp;amp;track=0xFFFFFF&amp;amp;border=0x666666&amp;amp;loader=0xCCCCCC&amp;amp;soundFile=http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery_fast.mp3"&gt;     
&lt;param name="quality" value="high"&gt;     
&lt;param name="wmode" value="transparent"&gt;     &lt;/object&gt;
&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p style="margin: 5px; padding: 5px; background-color: rgb(238, 238, 238);"&gt;&lt;b&gt;Note:&lt;/b&gt; Be sure to check out the &lt;a href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed" mce_href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed"&gt;Fast Feed&lt;/a&gt; if your are looking for the same content in 3/4ths the time!&lt;/p&gt;

&lt;h2&gt;What is jQuery?&lt;/h2&gt;

&lt;p&gt;The &lt;a href="http://jquery.com/" mce_href="http://jquery.com/"&gt;jQuery&lt;/a&gt; movement is seemingly everywhere, but if you still remain curious what jQuery is, &lt;a href="http://www.west-wind.com/weblog/" mce_href="http://www.west-wind.com/weblog/"&gt;Rick Strahl&lt;/a&gt; has an excellent introduction to library here: &lt;a href="http://www.west-wind.com/presentations/jquery/" mce_href="http://www.west-wind.com/presentations/jquery/"&gt;An Introduction to jQuery&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Jquery" mce_href="http://en.wikipedia.org/wiki/Jquery"&gt;jQuery Wikipedia page&lt;/a&gt; tells us that jQuery contains the following features:&lt;/p&gt;

&lt;blockquote style="font-style: italic;"&gt;
  
&lt;ul&gt;
    
&lt;li&gt;DOM element selections using the cross-browser open source selector engine Sizzle, a spin-off out of jQuery project &lt;/li&gt;

    
&lt;li&gt;DOM traversal and modification (including support for CSS 1-3 and basic XPath) &lt;/li&gt;

    
&lt;li&gt;Events &lt;/li&gt;

    
&lt;li&gt;CSS manipulation &lt;/li&gt;

    
&lt;li&gt;Effects and animations &lt;/li&gt;

    
&lt;li&gt;Ajax &lt;/li&gt;

    
&lt;li&gt;Extensibility &lt;/li&gt;

    
&lt;li&gt;Utilities - such as browser version and the each function. &lt;/li&gt;

    
&lt;li&gt;JavaScript Plugins &lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Dave’s jQuery Tips for Web Developers&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;strong&gt;Learn the selectors -they are crucial! &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;&lt;a href="http://docs.jquery.com/Selectors/even" mce_href="http://docs.jquery.com/Selectors/even"&gt;:even&lt;/a&gt; and &lt;a href="http://docs.jquery.com/Selectors/odd" mce_href="http://docs.jquery.com/Selectors/odd"&gt;:odd&lt;/a&gt; – &lt;a href="http://15daysofjquery.com/examples/zebra/" mce_href="http://15daysofjquery.com/examples/zebra/"&gt;zebra striping is the classic example&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://docs.jquery.com/Selectors/not" mce_href="http://docs.jquery.com/Selectors/not"&gt;:not&lt;/a&gt; – Powerful when using classes as flags. &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://docs.jquery.com/Selectors/text" mce_href="http://docs.jquery.com/Selectors/text"&gt;:text&lt;/a&gt; – Often overlooked. Easier/cleaner than ‘input[type=text]’. &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://docs.jquery.com/Selectors/attributeEndsWith#attributevalue" mce_href="http://docs.jquery.com/Selectors/attributeEndsWith#attributevalue"&gt;attribute$=ID&lt;/a&gt; – One way to overcome the ClientID issue.&amp;nbsp; (&lt;a href="http://encosia.com/2009/06/09/11-keystrokes-that-made-my-jquery-selector-run-10x-faster/" mce_href="http://encosia.com/2009/06/09/11-keystrokes-that-made-my-jquery-selector-run-10x-faster/"&gt;Be careful about performance&lt;/a&gt;) 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Leverage &lt;/strong&gt;&lt;a href="http://www.mikeborozdin.com/post/CSS-Class-Names-Instead-of-ASPNET-Client-IDs.aspx" mce_href="http://www.mikeborozdin.com/post/CSS-Class-Names-Instead-of-ASPNET-Client-IDs.aspx"&gt;&lt;strong&gt;CSS classes instead of element IDs&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;Avoids the ClientID issue &lt;/li&gt;

      
&lt;li&gt;Good for selecting groups, like GridView rows. 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Look for plugins before reinventing the wheel &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;&lt;a href="http://jqueryui.com/" mce_href="http://jqueryui.com/"&gt;jQueryUI&lt;/a&gt; covers the basics &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://plugins.jQuery.com" mce_href="http://plugins.jQuery.com"&gt;plugins.jQuery.com&lt;/a&gt; for more 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Conversely, be sure you need a plugin &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;Classic example is using an &lt;a href="http://plugins.jquery.com/project/accordion" mce_href="http://plugins.jquery.com/project/accordion"&gt;accordion&lt;/a&gt; when &lt;a href="http://docs.jquery.com/Effects/slideToggle" mce_href="http://docs.jquery.com/Effects/slideToggle"&gt;slideToggle&lt;/a&gt; is all you really needed. &lt;/li&gt;

      
&lt;li&gt;Similarly, a lot of people don’t realize they can use &lt;a href="http://docs.jquery.com/Utilities/jQuery.each" mce_href="http://docs.jquery.com/Utilities/jQuery.each"&gt;$.each()&lt;/a&gt; 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Don’t be afraid to use fake CSS classes as “flags” &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;Blackjack game example: .card.flipped and .card:not(.flipped) 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Write Unobtrusive JavaScript &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;ASP.NET conditioned us to think &lt;a href="http://www.w3schools.com/aspnet/prop_webcontrol_button_onclientclick.asp" mce_href="http://www.w3schools.com/aspnet/prop_webcontrol_button_onclientclick.asp"&gt;OnClientClient&lt;/a&gt; and &lt;a href="http://www.4guysfromrolla.com/articles/021104-1.aspx" mce_href="http://www.4guysfromrolla.com/articles/021104-1.aspx"&gt;Attributes.Add&lt;/a&gt; is proper, but wiring up &lt;a href="http://docs.jquery.com/Events/bind" mce_href="http://docs.jquery.com/Events/bind"&gt;unobtrusive event handlers is much cleaner and more maintainable&lt;/a&gt; 
        
&lt;ul&gt;
          
&lt;li&gt;$(‘#element’).click() is the same as $addHandler($get(‘element’), ‘click’) in ASP.NET AJAX &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://www.ejball.com/EdAtWork/2005/03/28/JavaScriptAnonymousFunctions.aspx" mce_href="http://www.ejball.com/EdAtWork/2005/03/28/JavaScriptAnonymousFunctions.aspx"&gt;Anonymous functions&lt;/a&gt; are the norm in most jQuery code examples.&amp;nbsp; Nothing to be scared of.&amp;nbsp; More syntactical sugar than anything 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Use &lt;/strong&gt;&lt;a href="http://getfirebug.com/" mce_href="http://getfirebug.com/"&gt;&lt;strong&gt;Firebug&lt;/strong&gt;&lt;/a&gt; 
    
&lt;ul&gt;
      
&lt;li&gt;The &lt;a href="http://getfirebug.com/logging.html" mce_href="http://getfirebug.com/logging.html"&gt;inspect&lt;/a&gt; and &lt;a href="http://getfirebug.com/console.html" mce_href="http://getfirebug.com/console.html"&gt;console&lt;/a&gt; help you learn faster &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx" mce_href="http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx"&gt;IE8’s developer toolbar&lt;/a&gt; works pretty well too 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Take advantage Bookmarklets &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;&lt;a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet" mce_href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet"&gt;jQueryify&lt;/a&gt; – inject jQuery into any page, for testing through Firebug &lt;/li&gt;

      
&lt;li&gt;&lt;a href="http://www.selectorgadget.com/" mce_href="http://www.selectorgadget.com/"&gt;SelectorGadget&lt;/a&gt; – Very helpful for learning selectors interactively 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Minify and &lt;/strong&gt;&lt;strong&gt;Combine your scripts&lt;/strong&gt; 
    
&lt;ul&gt;
      
&lt;li&gt;When using many plugins, you’ll end up with the same “bloat” that is often associated with ASP.NET AJAX (due to the Toolkit, not the base library) &lt;/li&gt;

      
&lt;li&gt;Read &lt;a href="http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/" mce_href="http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/"&gt;Automatically minify and combine JavaScript in Visual Studio&lt;/a&gt; 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Boost Serving Time&lt;/strong&gt; 
    
&lt;ul&gt;
      
&lt;li&gt;Use &lt;a href="http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/" mce_href="http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/"&gt;&lt;u&gt;the Google hosted version of jQuery&lt;/u&gt;&lt;/a&gt; for public facing sites 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  
&lt;li&gt;&lt;strong&gt;Take advantage of JavaScript IntelliSense &lt;/strong&gt;
    
&lt;ul&gt;
      
&lt;li&gt;Get the &lt;a href="http://docs.jquery.com/Downloading_jQuery#Download_jQuery" mce_href="http://docs.jquery.com/Downloading_jQuery#Download_jQuery"&gt;jQuery vsdoc file&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;Read &lt;a href="http://blogs.msdn.com/webdevtools/" mce_href="http://blogs.msdn.com/webdevtools/"&gt;Jeff King&lt;/a&gt;’s great &lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/11/18/jscript-intellisense-faq.aspx" mce_href="http://blogs.msdn.com/webdevtools/archive/2008/11/18/jscript-intellisense-faq.aspx"&gt;FAQ detailing how common issues when configuring JavaScript IntelliSense&lt;/a&gt; &lt;/li&gt;

      
&lt;li&gt;If all else fails, just &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx"&gt;/// &amp;lt;reference path=”~/path/to/jquery-1.3.2.vsdoc” /&amp;gt; in a JS include&lt;/a&gt; 
        &lt;br&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Other Resources Mentioned in the Show&lt;/h2&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://aspnet.codeplex.com/Wiki/View.aspx?title=AJAX" mce_href="http://aspnet.codeplex.com/Wiki/View.aspx?title=AJAX"&gt;New Features in ASP.NET 4 AJAX&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/" mce_href="http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/"&gt;Why ASP.NET AJAX UpdatePanels are dangerous&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/02/controlling-html-in-asp-net-webforms.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/archive/2008/12/02/controlling-html-in-asp-net-webforms.aspx"&gt;Controlling HTML in ASP.NET WebForms&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.javascripttoolbox.com/jquery/cheatsheet/" mce_href="http://www.javascripttoolbox.com/jquery/cheatsheet/"&gt;jQuery 1.3.2 Cheat Sheet&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.cygen.com/dotnetiq/" mce_href="http://www.cygen.com/dotnetiq/"&gt;dotnetIQ: Learn .NET on your iPhone&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed" mce_href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed"&gt;Polymorphic Podcast FastFeed&lt;/a&gt; &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.jsmag.com/" mce_href="http://www.jsmag.com/"&gt;JsMag&lt;/a&gt; is offering a discount (listen to the show for the coupon code!) &lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7131982" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-06-19-jquery.mp3" length="43311869" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/06/22/jquery-secrets-with-dave-ward.aspx</feedburner:origLink></item><item><title>NetAdvantage ASP.NET in ASP.NET MVC</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/fkWqdDCIn9s/netadvantage-asp-net-in-asp-net-mvc.aspx</link><pubDate>Thu, 11 Jun 2009 17:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7117665</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7117665</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/06/11/netadvantage-asp-net-in-asp-net-mvc.aspx#comments</comments><description>&lt;p&gt;When I reported for Infragistics booth duty at TechEd 2009 the first person to walk up to me smiled and said, “So... what do you guys have for MVC?” Now I am pleased to announce I can do more than smile back. &lt;/p&gt;

&lt;p&gt;The following is a set guidance for working with the Infragistics NetAdvantage ASP.NET toolset in ASP.NET MVC. This guidance comes with articles (this being the first of many), how-to videos, a support forum, a downloadable sample application and a live version of the sample in the Infragistics Labs.&lt;/p&gt;

&lt;p&gt;To be clear this is not a set of new controls created for MVC. The example you see here, in the videos and the sample application were built using the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview" mce_href="http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview"&gt;NetAdvantage ASP.NET 2009 Vol. 1&lt;/a&gt; release of the toolset. What we are making available includes samples, guidance and a new control that helps decouple our server controls from WebForms dependencies.&lt;/p&gt;

&lt;p style="margin: 35px;"&gt;&lt;b&gt;As long as you focus on areas of the controls that do not initiate post backs or rely on ViewState, you soon find many behaviors and functions that work perfectly in an ASP.NET MVC application.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;As what is presented here is the meeting of two widely different architectures, we encourage and look forward to you feedback and suggestions. Please feel free to tell us how our existing controls may work better in MVC as well as ideas for new controls to more naturally fit the MVC approach.&lt;/p&gt;
&lt;h2&gt;Respecting the Culture While Keeping it Real&lt;/h2&gt;
&lt;p&gt;Simply put - server controls were never supposed to work in the MVC framework. In fact, some might consider it a bit of an unholy union to have &lt;a href="http://haacked.com/archive/2009/05/05/page-view-lockdown.aspx" mce_href="http://haacked.com/archive/2009/05/05/page-view-lockdown.aspx"&gt;declarative WebForms markup in a view page&lt;/a&gt;. While you can’t help but respect the spirit of these perspectives, sometimes there are exceptions.&lt;/p&gt;

&lt;p&gt;We recognize that there are many thousands of existing Infragistics customers who may want to use ASP.NET MVC. These developers want to get the most out of their investment by using the toolset wherever possible, regardless of the type of application they are building. Therefore Infragistics is extending the reach of our traditional toolset while looking toward the future of building some new controls that do not rely on ViewState or post backs.&lt;/p&gt;

&lt;p&gt;Brace yourself - the examples that follow include ASPX markup in the view. The markup is necessary to host WebForms controls in MVC, but the purpose is limited. The purpose of this code serves to merely instantiate the UI objects on the page. What you do not see are big blocks of logic in the UI – separation of concerns is preserved.&lt;/p&gt;

&lt;p&gt;In the end what the markup is fulfilling an equivalent role of HtmlHelper extension methods.&lt;/p&gt;
&lt;h2&gt;Hello World&lt;/h2&gt;
&lt;p&gt;To get you acquainted with what’s involved, consider a page that has an instance of the WebDataGrid that renders a list of contacts to the user.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/wdg-hellworld.png" style="border-width: 0px; display: inline;" title="WebDataGrid MVC Hello World" alt="WebDataGrid MVC Hello World" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/wdg-hellworld.png" border="0" width="596" height="655"&gt;&lt;/p&gt;
&lt;h3&gt;View Model&lt;/h3&gt;
&lt;p&gt;This class simply models the data that the view page needs to render correctly. A list of &lt;b&gt;Person&lt;/b&gt; types is expected in the &lt;b&gt;People&lt;/b&gt; property.&lt;/p&gt;

&lt;pre style="margin: 5px; padding: 5px; background-color: rgb(238, 238, 238);"&gt;public class WdgBasicView&lt;br&gt;{&lt;br&gt;    public IList&lt;person&gt; People { get; set; }&lt;br&gt;}&lt;br&gt;&lt;/person&gt;&lt;/pre&gt;
&lt;h3&gt;Controller&lt;/h3&gt;
&lt;p&gt;The controller creates a new instance of the view model and fills the object with the appropriate data objects.&lt;/p&gt;

&lt;pre style="margin: 5px; padding: 5px; background-color: rgb(238, 238, 238);"&gt;public class WdgController : Controller&lt;br&gt;{&lt;br&gt;    public ActionResult Index()&lt;br&gt;    {&lt;br&gt;        var vm = new WdgBasicView();&lt;br&gt;        vm.People = FakeRepository&lt;person&gt;.Create().Add(10).GetAll();&lt;br&gt;        return View(vm);&lt;br&gt;    }&lt;br&gt;}&lt;br&gt;&lt;/person&gt;&lt;/pre&gt;
&lt;h3&gt;View&lt;/h3&gt;
&lt;p&gt;The markup for the WebDataGrid is just like what you are accustomed to find in a WebForms page. Having this markup on the page gives you the flexibility to easily change the appearance and behavior of the control.&lt;/p&gt;

&lt;p&gt;Notice the declaration of the IGMvcScriptManager control. This control is responsible for interrogating any Infragistics controls on the page for the script references the ASP.NET AJAX ScriptManager would normally generate. The script references are then generated and emitted to the page. This control must be placed after any Infragistics controls in the markup so the controls are available in the DOM by the time the references are rendered.&lt;/p&gt;

&lt;pre style="margin: 5px; padding: 5px; background-color: rgb(238, 238, 238);"&gt;&amp;lt;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage&amp;lt;MvcTest.Models.WdgBasicView&amp;gt;" %&amp;gt;&lt;br&gt;&amp;lt;%@ Register Assembly="Infragistics.Web.Mvc" Namespace="Infragistics.Web.Mvc" TagPrefix="cc1" %&amp;gt;&lt;br&gt;&amp;lt;%@ Register Assembly="Infragistics35.Web.v9.1, Version=9.1.20091.1015, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb"&lt;br&gt;    Namespace="Infragistics.Web.UI.GridControls" TagPrefix="ig" %&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;%&lt;br&gt;        wdg.DataSource = this.Model.People;&lt;br&gt;        wdg.DataBind();&lt;br&gt;    %&amp;gt;&lt;br&gt;&lt;br&gt;    &amp;lt;ig:WebDataGrid ID="wdg" &lt;br&gt;        runat="server" Width="50%" &lt;br&gt;        EnableViewState="false"&amp;gt;&lt;br&gt;    &amp;lt;/ig:WebDataGrid&amp;gt;&lt;br&gt;    &lt;br&gt;    &amp;lt;cc1:IGMvcScriptManager ID="sm" runat="server" /&amp;gt;&lt;br&gt;    &lt;br&gt;&amp;lt;/asp:Content&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h2&gt;Adding Behavior&lt;/h2&gt;
&lt;p&gt;While the grid produced above is interesting, the real benefit comes when you begin to add some of the behaviors of the grid. Adjust the markup slightly by adding the following behaviors, and now your users may interact with individual grid cells on the client and adjust the column width.&lt;/p&gt;

&lt;pre style="margin: 5px; padding: 5px; background-color: rgb(238, 238, 238);"&gt;&amp;lt;ig:WebDataGrid ID="wdg"&lt;br&gt;    runat="server" Width="50%"&lt;br&gt;    EnableViewState="false"&amp;gt;&lt;br&gt;    &amp;lt;Behaviors&amp;gt;&lt;br&gt;        &amp;lt;ig:ColumnResizing /&amp;gt;&lt;br&gt;        &amp;lt;ig:Activation /&amp;gt;&lt;br&gt;    &amp;lt;/Behaviors&amp;gt;&lt;br&gt;&amp;lt;/ig:WebDataGrid&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h2&gt;Watch the Video&lt;/h2&gt;
&lt;p&gt;This above sample is implemented in this video.&lt;/p&gt;

&lt;p&gt;
&lt;object width="425" height="344"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Y1neW48n8vU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/Y1neW48n8vU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" mce_src="http://www.youtube.com/v/Y1neW48n8vU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;h2&gt;The Next Step: Issue Tracker Sample Application&lt;/h2&gt;
&lt;p&gt;To go beyond the simplicity of the Hello World sample above, we’ve created a sample issue tracker application that brings together a number of the Infragistics controls with ASP.NET MVC. &lt;/p&gt;

&lt;p&gt;You may get acquainted with the sample in the following ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://labs.infragistics.com/aspnetmvc/issuetracker/" mce_href="http://labs.infragistics.com/aspnetmvc/issuetracker/"&gt;Browse the live sample&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://netadvantagemvc.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28615" mce_href="http://netadvantagemvc.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28615"&gt;Download the code&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="http://weblogs.asp.net/aspnet/media/p/98916.aspx" mce_href="http://weblogs.asp.net/aspnet/media/p/98916.aspx"&gt;Watch video doing a code review of the application&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first page you encounter is the Issue List page. The WebDataGrid is responsible for rendering the table, and the WebChart control creates the pie graph visualizing the Issue Severity data.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueList.png" style="border-width: 0px; display: inline;" title="Issue List: Using the WebDataGrid and WebChart" alt="Issue List: Using the WebDataGrid and WebChart" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueList.png" border="0" width="600" height="666"&gt; &lt;/p&gt;

&lt;p&gt;To add issues to the list, the New Issue page features the WebDropDown, WebHTMLEditor and WebSlider controls.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/NewIssue.png" style="border-width: 0px; display: inline;" title="New Issues: Using the WebDropDown, W" alt="New Issues: Using the WebDropDown, W" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/NewIssue.png" border="0" width="600" height="695"&gt; &lt;/p&gt;

&lt;p&gt;The drop down has a list of the Issue Types available to the user. These types are presented in the drop down with a custom item template.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/NewIssue2.png" style="border-width: 0px; display: inline;" title="New Issue: WebDropDown custom item template" alt="New Issue: WebDropDown custom item template" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/NewIssue2.png" border="0" width="600" height="456"&gt; &lt;/p&gt;

&lt;p&gt;The Issue Types are maintained on a page that include the WebDataGrid with the RowEditTemplate enabled.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes1.png" style="border-width: 0px; display: inline;" title="Issue Types: Using the WebDataGrid" alt="Issue Types: Using the WebDataGrid" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes1.png" border="0" width="600" height="363"&gt; &lt;/p&gt;

&lt;p&gt;By double-clicking on the left-most column of the grid you have access to the grid’s data for editing.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes2.png" style="border-width: 0px; display: inline;" title="Issue Types: Editing data using the RowEditTemplate" alt="Issue Types: Editing data using the RowEditTemplate" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes2.png" border="0" width="600" height="363"&gt; &lt;/p&gt;

&lt;p&gt;By clicking on the Add button, the same template is made available to add items to the list.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes3.png" style="border-width: 0px; display: inline;" title="IssueTypes: Using the RowEditTemplate to add items to the list" alt="IssueTypes: Using the RowEditTemplate to add items to the list" mce_src="http://media.infragistics.com/community/aspnet/articles/intro-na-mvc/IssueTypes3.png" border="0" width="600" height="363"&gt;&lt;/p&gt;

&lt;p&gt;For a more in-depth code review of the sample application watch the video on the Infragistics Community Site: &lt;a href="http://weblogs.asp.net/aspnet/media/p/98916.aspx" mce_href="http://weblogs.asp.net/aspnet/media/p/98916.aspx"&gt;Issue Tracker Sample: Using the WebClient Controls in ASP.NET MVC&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Support and Testing&lt;/h2&gt;
&lt;p&gt;There is no official support through the Infragistics Developer Support for the toolset in MVC at this time. We do, however, have a &lt;a href="http://blogs.infragistics.com/forums/369.aspx" mce_href="http://blogs.infragistics.com/forums/369.aspx"&gt;new support forum available for your questions surrounding NetAdvantage for ASP.NET in ASP.NET MVC&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Let Us Know&lt;/h2&gt;
&lt;p&gt;Please let us know what you think! Leave comments here, email me at cshoemaker [at] infragistics.com, or find any other to get in contact with us. We want to know about your experiences with this approach as well as your suggestions for new controls that more naturally fit the MVC model.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Downloads" mce_href="http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Downloads"&gt;NetAdvantage ASP.NET Evaluation&lt;/a&gt; &lt;/li&gt;

&lt;li&gt;Hello World 
    
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://media.infragistics.com/community/aspnet/codesamples/mvc-helloworld/mvc-helloworld.zip" mce_href="http://media.infragistics.com/community/aspnet/codesamples/mvc-helloworld/mvc-helloworld.zip"&gt;Code Download&lt;/a&gt; &lt;/li&gt;

&lt;li&gt;&lt;a href="http://weblogs.asp.net/aspnet/media/p/98918.aspx" mce_href="http://weblogs.asp.net/aspnet/media/p/98918.aspx"&gt;Video&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;Issue Tracker Sample Application 
    
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://labs.infragistics.com/aspnetmvc/issuetracker/" mce_href="http://labs.infragistics.com/aspnetmvc/issuetracker/"&gt;Live sample&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://netadvantagemvc.codeplex.com/" mce_href="http://netadvantagemvc.codeplex.com/"&gt;CodePlex Project&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="http://weblogs.asp.net/aspnet/media/p/98916.aspx" mce_href="http://weblogs.asp.net/aspnet/media/p/98916.aspx"&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;&lt;a href="http://blogs.infragistics.com/forums/369.aspx" mce_href="http://blogs.infragistics.com/forums/369.aspx"&gt;Support Forum&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7117665" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Infragistics/default.aspx">Infragistics</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/06/11/netadvantage-asp-net-in-asp-net-mvc.aspx</feedburner:origLink></item><item><title>Surprising Ajax Adoption Stats</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/yRtjCGW_ZeA/surprising-ajax-adoption-stats.aspx</link><pubDate>Mon, 25 May 2009 14:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7097442</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7097442</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/05/25/surprising-ajax-adoption-stats.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;My friend &lt;A href="http://codeclimber.net.nz/" mce_href="http://codeclimber.net.nz/"&gt;Simone Chiaretta&lt;/A&gt; is hosting a short poll looking to find out what type of Ajax adoption exists and what client frameworks and tools you use. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://codeclimber.net.nz/archive/2009/05/25/survey-on-ajax-adoption-some-quick-stats.aspx" mce_href="http://codeclimber.net.nz/archive/2009/05/25/survey-on-ajax-adoption-some-quick-stats.aspx"&gt;He has an interesting post on some of the preliminary results&lt;/A&gt;. According to his sample&amp;nbsp;8% of people are still &lt;STRONG&gt;hand-crafting&lt;/STRONG&gt; Ajax calls! (Now there's one that took me by surprise)&lt;/P&gt;
&lt;P mce_keep="true"&gt;Make your voice heard and take his super-short survey here:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp; &lt;A href="http://www.zoomerang.com/Survey/survey-intro.zgi?p=WEB22973CYKW2H"&gt;&lt;FONT size=2 face=Tahoma&gt;http://www.zoomerang.com/Survey/survey-intro.zgi?p=WEB22973CYKW2H&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7097442" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Community+News/default.aspx">Community News</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/05/25/surprising-ajax-adoption-stats.aspx</feedburner:origLink></item><item><title>AutoMapper with Jimmy Bogard</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/QBuvdEnP7uw/automapper-with-jimmy-bogard.aspx</link><pubDate>Wed, 20 May 2009 17:49:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7093687</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7093687</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/05/20/automapper-with-jimmy-bogard.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/" mce_href="http://www.lostechies.com/blogs/jimmy_bogard/"&gt;Jimmy Bogard&lt;/a&gt;, lead developer for the &lt;a href="http://www.codeplex.com/AutoMapper" title="http://www.codeplex.com/AutoMapper" mce_href="http://www.codeplex.com/AutoMapper"&gt;AutoMapper&lt;/a&gt; project, joins us today to discuss the inner workings and applications of the object-to-object mapper AutoMapper.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/automapper/" mce_href="http://polymorphicpodcast.com/shows/automapper/"&gt;&lt;img src="http://polymorphicpodcast.com/images/ListenBanner.png" title="Listen to the Show" alt="Listen to the Show" mce_src="http://polymorphicpodcast.com/images/ListenBanner.png" border="0" width="378" height="58"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AutoMapper is an object-to-object mapper that helps you prepare objects to cross application boundaries.You can get examples and documentation on &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/22/automapper-the-object-object-mapper.aspx" mce_href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/01/22/automapper-the-object-object-mapper.aspx"&gt;Jimmy’s post that introduces AutoMapper&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Resources&lt;/h3&gt;

&lt;p&gt;Here are some further resources to help you get started with AutoMapper:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;DimeCast: &lt;a href="http://www.dimecasts.net/Casts/CastDetails/111" mce_href="http://www.dimecasts.net/Casts/CastDetails/111"&gt;Introduction to AutoMapper&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Official project home: &lt;a href="http://www.codeplex.com/AutoMapper" title="http://www.codeplex.com/AutoMapper" mce_href="http://www.codeplex.com/AutoMapper"&gt;www.codeplex.com/AutoMapper&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/05/11/automapper-and-ioc.aspx" mce_href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/05/11/automapper-and-ioc.aspx"&gt;AutoMapper and IoC&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Tribute&lt;/h3&gt;

&lt;p&gt;If you wish to stick around after the end of the show I’ve included a special tribute to my friend Monica Rodriguez. Monica is the wife of Sol Rodriguez who’s band &lt;a href="http://greenleafavenue.com/" mce_href="http://greenleafavenue.com/"&gt;Greenleaf Avenue&lt;/a&gt; provides bumper music for the show. &lt;a href="http://www.whittierdailynews.com/news/ci_12383472" mce_href="http://www.whittierdailynews.com/news/ci_12383472"&gt;Her battle with cancer recently ended&lt;/a&gt; and I wanted to do something special to honor her. If you would like to read her story and send some encouragement to Sol, please check out &lt;a href="http://www.solandmonica.com" mce_href="http://www.solandmonica.com"&gt;www.solandmonica.com&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7093687" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-05-19-automapper.mp3" length="39673002" type="audio/mpeg" /><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Podcast/default.aspx">Podcast</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/05/20/automapper-with-jimmy-bogard.aspx</feedburner:origLink></item></channel></rss>
