<?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>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>0</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>0</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>3</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>3</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><item><title>History of User Experience</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/PSq9xy_rZVM/history-of-user-experience.aspx</link><pubDate>Tue, 19 May 2009 23:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7093128</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7093128</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/05/19/history-of-user-experience.aspx#comments</comments><description>&lt;p&gt;The dawn of &lt;a href="http://en.wikipedia.org/wiki/User_experience"&gt;user experience&lt;/a&gt; is a contestable topic. Some UX thought leaders place the discipline’s origin surrounding the emergence of user centered design in the 1980’s, while others see the the beginning coming even earlier. This week’s guest is &lt;a href="http://tobiask.net/"&gt;Dr. Tobias Komischke&lt;/a&gt; Director of &lt;a href="http://www.infragistics.com/ux/"&gt;User Experience at Infragistics&lt;/a&gt;. Dr. Komischke details why he sees UX originating in the context of World War II where interacting with technical systems became a matter of life and death.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://community.infragistics.com/pixel8/media/p/95683.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;h3&gt;The Origins of User Experience&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Human_factors"&gt;Human Factors&lt;/a&gt; field began to emerge around World War II as researchers began to realize that humans interacting with technical systems was no trivial endeavor. Operators using technical systems, even when their lives depended upon accurate and reliable results, eventually hit obvious human limitations.&lt;/p&gt;

&lt;p&gt;These findings lead to research asking:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What do human limitations mean for systems design? &lt;/li&gt;

  &lt;li&gt;How can systems be designed to help aid these limitations? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the beginning the underlying principals of UX began as simple observations and as time passed the topic shifted from human factors to user-centered design. &lt;/p&gt;

&lt;p&gt;Formal study of originated from many fronts. European and Scandinavian labor unions issued studies surrounding occupational health and ergonomic research. Corporations found interest in the field as efficiency and productivity gains became apparent when users required less training and shorter learning curves for technical systems. Initially research focused on related hardware, but eventually studies migrated the software focusing on making systems more individual, learnable, controllable and featuring increasingly pleasant user interfaces.&lt;/p&gt;

&lt;p&gt;As computers proliferated the workplace in the 1980’s and 90’s user-centered design took on an even greater importance. Books by &lt;a href="http://www.jnd.org/"&gt;Don Norman&lt;/a&gt; (&lt;a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0385267746"&gt;The Design of Everyday Things&lt;/a&gt;) and &lt;a href="http://www.useit.com/"&gt;Jakob Nielsen&lt;/a&gt; (&lt;a href="http://www.amazon.com/Designing-Usability-VOICES-Jakob-Nielsen/dp/156205810X/"&gt;Designing Web Usability&lt;/a&gt;) found a wide audience and helped further explain the principles of user-centered design and and expose the tenants of usability.&lt;/p&gt;

&lt;p&gt;Even with the popularity of usability taking hold, user experience as we know it today had yet to be established. Usability focuses on the UI being effective, efficient and satisfactory to the user. As more organizations adopted user-centered design teams began paying attention to details beyond usability. User experience began to include broader topics that include talk of user’s emotions, the appeal of a UI and visual design. User experience became an inclusive and broad set of disciplines that included the contributions from engineers, psychologists, designers and more.&lt;/p&gt;

&lt;p&gt;In the end, the following disciplines represent the major set of professionals that make up the field of User Experience:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Engineers &lt;/li&gt;

  &lt;li&gt;Psychologists &lt;/li&gt;

  &lt;li&gt;User Research &lt;/li&gt;

  &lt;li&gt;Visual and Graphic Designers &lt;/li&gt;

  &lt;li&gt;Testers &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;UX for Organizations Big and Small&lt;/h2&gt;

&lt;p&gt;Often a discussion of user experience and the litany of disciplines that contribute to the field leave the impression that true UX are only for very large organizations. While those with bountiful resources can deploy all the different roles, smaller organizations may still carry out a user centered design process. What’s important is understanding the process is rather than hiring every role.&lt;/p&gt;

&lt;p&gt;One of they keys that smaller teams should keep in mind is to not to start coding right away, but try to understand what they want to build before construction begins. Look at the market for existing applications/solutions and find out where the the user needs lie.&lt;/p&gt;

&lt;h3&gt;The T-Shaped Professional&lt;/h3&gt;

&lt;p&gt;Small teams find that even though they may not be able to hire all people to fulfill all aspect of a UX team, hiring the so called &lt;i&gt;T-shaped&lt;/i&gt; professional helps even out competencies.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/pixel8/images/t-shaped.png" title="T-Shaped UX Professional" alt="T-Shaped UX Professional" border="0" width="500" height="500"&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.infragistics.com/community/pixel8/images/multi-t.png" title="Multiple Professionals Give Coverage" alt="Multiple Professionals Give Coverage" border="0" width="500" height="500"&gt;&lt;/p&gt;

&lt;h2&gt;Minimum Team Composition&lt;/h2&gt;

&lt;p&gt;Often people ask about a starting place or the minimum roles required to have a bare-bones UX team. Tobias’ suggestion is to have at least:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1 analytical person &lt;/li&gt;

  &lt;li&gt;1 conceptual person &lt;/li&gt;

  &lt;li&gt;1 visual designer &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today’s design and technology trends require projects to have something cutting edge looking great very early in the process. These three roles put you in a very good position to start with the right concepts in mind. From there your team can learn new disciplines or hire team members to fill in the gaps.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7093128" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-05-18-uxhistory.mp3" length="27316561" 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/05/19/history-of-user-experience.aspx</feedburner:origLink></item><item><title>Exploring ASP.NET MVC 1.0</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/2PPV2XGeqrs/exploring-asp-net-mvc-1-0.aspx</link><pubDate>Wed, 29 Apr 2009 15:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7064643</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7064643</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/04/29/exploring-asp-net-mvc-1-0.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/aspnetmvc1/"&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;&lt;b&gt;Note:&lt;/b&gt; Be sure to check out the &lt;a href="http://feeds2.feedburner.com/PolymorphicPodcastFastFeed"&gt;Fast Feed&lt;/a&gt; if your are looking for the same content in 3/4th the time!&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Our Guests&lt;/h2&gt;
&lt;p&gt;Join &lt;a href="http://jeffreypalermo.com/"&gt;Jeffrey Palermo&lt;/a&gt; and &lt;a href="http://www.lostechies.com/blogs/hex/"&gt;Eric Hexter&lt;/a&gt; as they discuss the release version of ASP.NET MVC and some practical examples real-world development.&lt;/p&gt;

&lt;h3&gt;Action Filters&lt;/h3&gt;  
&lt;p&gt;Action filters are extensibility points into the lifecycle of a controller request. There are many great resources that show how to use action filters:&lt;/p&gt;
  
&lt;ul&gt;   
&lt;li&gt;&lt;a href="http://www.squaredroot.com/post/2008/04/MVC-Error-Handler-Filter.aspx"&gt;MVC: Action Filter for Handling Errors&lt;/a&gt; &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filters.aspx"&gt;Logging with ASP.NET MVC Action Filters&lt;/a&gt; &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://haacked.com/archive/2008/08/14/aspnetmvc-filters.aspx"&gt;Filters in ASP.NET MVC&lt;/a&gt; &lt;/li&gt;
 &lt;/ul&gt;
  
&lt;p&gt;... and the following is a list of the interfaces you can leverage to tap into the requests:&lt;/p&gt;
  
&lt;ul&gt;   
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.iexceptionfilter.aspx"&gt;IExceptionFilter&lt;/a&gt; &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://weblogs.asp.net/controlpanel/blogs/IAuthorizationFilter"&gt;IAuthorizationFilter&lt;/a&gt; &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.iactionfilter.aspx"&gt;IActionFilter&lt;/a&gt; &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.iresultfilter.aspx"&gt;IResultFilter&lt;/a&gt; &lt;/li&gt;
 &lt;/ul&gt;
  &lt;h3&gt;Action Selectors &lt;/h3&gt;  
&lt;p&gt;Another way to gain control over a request is to pipe into action selectors. This gives you control to decide if an which HTTP verbs an action accepts. For more information on configuring action selectors, check out the following posts:&lt;/p&gt;
  
&lt;ul&gt;   
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd695917.aspx"&gt;The Life And Times of an ASP.NET MVC Controller&lt;/a&gt;&lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://codeclimber.net.nz/archive/2009/04/08/13-asp.net-mvc-extensibility-points-you-have-to-know.aspx"&gt;13 ASP.NET MVC extensibility points you have to know&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
  &lt;h3&gt;Pain Points? We Don't Have no Stinkin' Pain Points!&lt;/h3&gt;  
&lt;p&gt;When I asked Jeffery and Eric what the remaining pain points of ASP.NET MVC were, I got a surprising response – none. Since the framework is interface-based    &lt;br&gt;top-to-bottom features are pluggable at every level. If the framework doesn't provide something needed - you may extend any portion of framework when necessary.&lt;/p&gt;
  
&lt;p&gt;After being pushed, Eric did mention that he would like to see &lt;a href="http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx"&gt;areas in MVC&lt;/a&gt;. Areas will allow you to group controllers and they are likely to appear in MVC v2.&amp;nbsp; For now Eric has extended &lt;a href="http://209.85.173.132/search?q=cache:5kaGlr6IVBoJ:blog.codeville.net/2008/11/05/app-areas-in-aspnet-mvc-take-2/+areas+in+asp.net+mvc&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us&amp;amp;client=firefox-a"&gt;Steve Sanderson’s implementation of areas&lt;/a&gt; (link is a Google cache link since the site seems to be having issues lately).&lt;/p&gt;
  &lt;h3&gt;ASP.NET MVC in Action&lt;/h3&gt;  
&lt;p&gt;&lt;a href="http://jeffreypalermo.com/"&gt;Jeffrey Palermo&lt;/a&gt;, &lt;a href="http://flux88.com/"&gt;Ben Scheirman&lt;/a&gt; and &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/"&gt;Jimmy Bogard&lt;/a&gt; bring you the upcoming ASP.NET MVC in Action from Manning:&lt;/p&gt;
 &lt;iframe src="http://rcm.amazon.com/e/cm?t=drazz75-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=1933988622&amp;amp;md=10FE9736YVPPT7A0FBG2&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;/iframe&gt;  &lt;h3&gt;Headspring Development Stack&lt;/h3&gt;  
&lt;p&gt;The guys at &lt;a href="http://www.headspringsystems.com/"&gt;Headspring Systems&lt;/a&gt; have a full stack of open source software that they use to help start and support applications:&lt;/p&gt;
  
&lt;ul&gt;   
&lt;li&gt;&lt;a href="http://solutionfactory.codeplex.com/"&gt;SolutionFactory&lt;/a&gt;: Visual Studio add-in that exports a solution into a multi-project template &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://watin.sourceforge.net/"&gt;Watin&lt;/a&gt;: .NET automated web application testing &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://www.codeplex.com/AutoMapper"&gt;AutoMapper&lt;/a&gt;: Object-to-object mapping strategy &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://www.gallio.org/"&gt;Gallio&lt;/a&gt;:&amp;nbsp; Test automation platform &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://www.mbunit.com/"&gt;MbUnit&lt;/a&gt;: Unit test framework &lt;/li&gt;
    
&lt;li&gt;&lt;a href="http://docs.jquery.com/QUnit"&gt;qUnit&lt;/a&gt;: jQuery unit test framework &lt;/li&gt;
 &lt;/ul&gt;
 
&lt;hr&gt;
&lt;h2&gt;Also on the Show&lt;/h2&gt;
&lt;h3&gt;Why isn’t Learning ASP.NET MVC Pragmatic Advice?&lt;/h3&gt;  
&lt;p&gt;&lt;a href="http://blog.wekeroad.com/blog/i-spose-ill-just-say-it-you-should-learn-mvc/"&gt;Rob Conery&lt;/a&gt; and &lt;a href="http://blog.theaccidentalgeek.com/post/2009/04/23/I-Spose-Irsquo3bll-Just-Say-It-Still-Waiting-For-a-GOOD-Reason-to-Learn-MVC.aspx"&gt;Joe Brinkman&lt;/a&gt; recently engaged in a lively conversation on the merits (and reasons) for learning the ASP.NET MVC framework. If you are not careful the exchange may sound a bit like a shouting match, but these guys seem to be pretty comfortable with one another. but in the end if you pull anything out of it, I think it’s best summed by by Rob:&lt;/p&gt;
  
&lt;blockquote&gt;   
&lt;p&gt;You Should &lt;strong&gt;Learn&lt;/strong&gt; MVC – not that you have to use it (although I wish you would – it’s tons of fun!)&lt;/p&gt;
 &lt;/blockquote&gt;
  
&lt;p&gt;The often hailed wisdom from page ‘Pragmatic Programmer’ states:&lt;/p&gt;
  
&lt;blockquote&gt;   
&lt;p&gt;&lt;strong&gt;Learn at least one new language every year.&lt;/strong&gt; Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet.&lt;/p&gt;
 &lt;/blockquote&gt;
  
&lt;p&gt;While MVC is not a new language per se, but every ASP.NET developer should spend time with the framework – if not to use, then at least it to sharpen your development arsenal.&lt;/p&gt;
  
&lt;p&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=drazz75-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=020161622X&amp;amp;md=10FE9736YVPPT7A0FBG2&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7064643" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-04-28-aspnetmvc1.mp3" length="45275389" 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/MVC/default.aspx">MVC</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/04/29/exploring-asp-net-mvc-1-0.aspx</feedburner:origLink></item><item><title>The Value of Web Forms and Design Constraints</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/0OuPSyePFXk/the-value-of-web-forms-and-design-constraints.aspx</link><pubDate>Mon, 13 Apr 2009 21:49:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7045471</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7045471</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/04/13/the-value-of-web-forms-and-design-constraints.aspx#comments</comments><description>&lt;p&gt;Senior Principal of Product Ideation and Design at &lt;a href="http://yahoo.com/"&gt;Yahoo!&lt;/a&gt; Inc. and founder of &lt;a href="http://lukew.com/"&gt;LukeW Interface Designs&lt;/a&gt; Luke Wroblewski joins us to discuss&amp;nbsp;how adding elements of constraint helps shape the design process. Luke also spends some time&amp;nbsp;discussing the often-understated value of the HTML web form.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://getpixel8ed.com/shows/lukew" mce_href="http://getpixel8ed.com/shows/lukew"&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;What goes into a redesign of a Yahoo! property?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Define the strategic goals of the company&lt;/li&gt;

&lt;li&gt;Make a list of core behavior, expected needs and features users can be delighted by&lt;/li&gt;

&lt;li&gt;Add to list features user come to expect and must not be removed&lt;/li&gt;

&lt;li&gt;Prioritize performance, accessibility, instrumentation and monetization requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Creative Process is Given Life By Constraints&lt;/h2&gt;
&lt;p&gt;Web pages may be crafted to do just about anything – the trick is to build build appropriate constraints. The design team may use targeted use cases or place necessary performance constraints. Boxing the problem begins to help form the design process.&lt;/p&gt;
&lt;h3&gt;Art of removing Elements&lt;/h3&gt;
&lt;p&gt;When you are trying to get a message across you begin by adding elements. Often the design process turns a corner and you are adding information or design elements for the sake of the design. A better approach may be adding only the items necessary at a minimum to get the point across. If you can balance this practice with the business needs of the organization, you’ve found a winning design.&lt;/p&gt;
&lt;h2&gt;How to Manage Diverse Interests&lt;/h2&gt;
&lt;p&gt;The Yahoo! homepage has many stakeholders who want representation. The question developers and designer must grapple with is what is the right representation? During the early days at eBay many groups wanted to feature their deliverables at the point of sale. The design team ranked and prioritized features against the goals of the organization. This helped build consensus on what should and should not be in the final design.&lt;/p&gt;
&lt;h2&gt;The Value of Web Form Design&lt;/h2&gt;
&lt;p&gt;Luke tells us that every single defining characteristic of things you can do online is run through a web form. Whether you are looking to comment on an article, buy a product, sign up for a service, do some data entry, upload video or just about anything else on the web – you do it through a web form. In the end the form is a barrier to what people really want to do – interact somehow with the website. Therefore elegance in building an designing web forms is a necessity.&lt;/p&gt;

&lt;p&gt;Check out Luke's book: &lt;a href="http://www.amazon.com/Web-Form-Design-Filling-Blanks/dp/1933820241/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239637214&amp;amp;sr=8-2"&gt;Web Form Design: Filling in the Blanks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.amazon.com/Web-Form-Design-Filling-Blanks/dp/1933820241/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239637214&amp;amp;sr=8-2"&gt;&lt;img src="http://www.lukew.com/img5/webformdesign.gif" border="0" width="217" height="326"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Gradual Engagement&lt;/h3&gt;
&lt;p&gt;Luke’s concept of &lt;a href="http://www.alistapart.com/articles/signupforms"&gt;gradual engagement&lt;/a&gt; encourages you not to hide your entire website behind a signup page. Rather us a conversational or natural flow of engaging with the user to gather profile information.&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7045471" width="1" height="1"&gt;</description><enclosure url="http://download.infragistics.com/pixel8/media/pixel8-2009-04-09-lukew.mp3" length="29266664" 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/04/13/the-value-of-web-forms-and-design-constraints.aspx</feedburner:origLink></item><item><title>Update Controls: Leaving INotifyPropertyChanged?</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/xelAaOzb7Zo/update-controls-leaving-inotifypropertychanged.aspx</link><pubDate>Fri, 10 Apr 2009 22:25:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7041422</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7041422</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/04/10/update-controls-leaving-inotifypropertychanged.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/updatecontrols/"&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;a href="http://twitter.com/michaellperry"&gt;Michael L. Perry&lt;/a&gt; is a software developer, architect, host of the &lt;a href="http://adventuresinsoftware.com/blog/?cat=15"&gt;Adventures in Software podcast&lt;/a&gt; and creator of &lt;a href="http://updatecontrols.net/"&gt;Update Controls&lt;/a&gt;. 

&lt;p&gt;Update Controls is a framework available for WPF, WinForms and a few other formats that relieves developers from the heavy lifting of synchronizing UI controls.&lt;/p&gt;

&lt;p&gt;In Michael’s words:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Update Controls is better than data binding, because it does not require that you implement INotifyPropertyChanged. It connects controls directly to CLR properties. And it works through layers of business logic.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://updatecontrols.net/"&gt;Check out the videos and examples here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7041422" width="1" height="1"&gt;</description><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/Polymorphic+Podcast/default.aspx">Polymorphic Podcast</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/04/10/update-controls-leaving-inotifypropertychanged.aspx</feedburner:origLink></item><item><title>Use jQuery to Decorate Links</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/RCC4bg9D-VE/use-jquery-to-decorate-links.aspx</link><pubDate>Fri, 10 Apr 2009 20:55:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7041267</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=7041267</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/04/10/use-jquery-to-decorate-links.aspx#comments</comments><description>
&lt;p&gt;I’ve recently been in the habit of decorating links to Twitter profiles with the Twitter icon. This technique makes it easy for readers to scan a page and know exactly where the link points without having to spend time hovering over or clicking on the link.&lt;/p&gt;


&lt;p&gt;After creating the code for this a few times manually, I decided it was time to come up with something a bit more elegant. My enduring love for jQuery proved useful once again. The following code is just a few lines of jQuery code to add the Twitter icon to each Twitter link on the page.&lt;/p&gt;

&lt;pre style="padding: 4px; background-color: rgb(238, 238, 238);"&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br&gt; .twitter-link&lt;br&gt; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-image:url(images/icons/fav-twitter.png);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-repeat:no-repeat;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding-left:20px;&lt;br&gt; }&lt;br&gt;&amp;lt;/style&amp;gt;&lt;br&gt;&amp;lt;script src="jquery-1.3.2.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(document).ready(function() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("a").each(function() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($(this).attr("href").toLowerCase().indexOf("http://twitter.com") != -1) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(this).addClass("twitter-link");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;p&gt;...&lt;/p&gt;

&lt;pre style="padding: 4px; background-color: rgb(238, 238, 238);"&gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://twitter.com/craigshoemaker"&amp;gt;craigshoemaker&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/decorate-links.htm" mce_href="http://polymorphicpodcast.com/decorate-links.htm" target="_blank"&gt;Check out this working example&lt;/a&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;Obviously the uses for this approach don’t stop at Twitter. I first started using this technique for creating links to PDFs (which gives the user a heads up they may want to go walk the dog while they wait for their PDF reader to load). &lt;/p&gt;

&lt;p&gt;What other uses do you see here? &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update &lt;/b&gt;4/16/2009&lt;b&gt;:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.frederikvig.com/" mce_href="http://www.frederikvig.com/"&gt;Fredrik Vig&lt;/a&gt; suggested in the comments the following much more elegant approach: &lt;br&gt;&lt;/p&gt;
&lt;pre style="padding: 4px; background-color: rgb(238, 238, 238);"&gt;$("a[href^='http://twitter.com']").addClass("twitter-link");&lt;/pre&gt;

&lt;p&gt;Read the ^ like: target all links that start with http://twitter.com.&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7041267" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/jQuery/default.aspx">jQuery</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/04/10/use-jquery-to-decorate-links.aspx</feedburner:origLink></item><item><title>Secrets of Real World ASP.NET Dynamic Data Websites eBook Now Available</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/_JnWSlU6XaY/secrets-of-real-world-asp-net-dynamic-data-websites-ebook-now-available.aspx</link><pubDate>Wed, 25 Mar 2009 13:38:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6999889</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=6999889</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/03/25/secrets-of-real-world-asp-net-dynamic-data-websites-ebook-now-available.aspx#comments</comments><description>
&lt;p&gt;I am pleased to announce that &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 ASP.NET Dynamic Data Websites&lt;/a&gt; is now available as a &lt;a href="http://wrox.com/go/blox" mce_href="http://wrox.com/go/blox"&gt;Wrox Blox ebook&lt;/a&gt;. The material for this book is largely pulled from the recent talks I’ve given at various user groups and developer conferences on the same topic.&lt;/p&gt;

&lt;p&gt;In this book you learn the basics of Dynamic Data and quickly move into how to leverage the features in some practical scenarios. If you’ve ever looked at Dynamic Data and wondered:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;How do I move the data context to a lower application level and out of the web layer?&lt;/li&gt;

  
&lt;li&gt;How do I execute custom business layer logic against the Dynamic Data controls?&lt;/li&gt;

  
&lt;li&gt;How do I build reusable and programmatically customizable field templates?&lt;/li&gt;

  
&lt;li&gt;How do I secure Dynamic Data scaffolding using ASP.NET membership services?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;... then this book is for you!&lt;/p&gt;

&lt;p&gt;The price tag is reasonable – well under $10 – no too bad for a technology book!&lt;/p&gt;

&lt;p&gt;If you are interested in the full talk, feel free to contact me (&lt;a href="http://twitter.com/craigshoemaker/" mce_href="http://twitter.com/craigshoemaker/"&gt;&lt;img src="http://polymorphicpodcast.com/images/icons/fav-twitter.png" mce_src="http://polymorphicpodcast.com/images/icons/fav-twitter.png" style="margin: 0px; padding: 0px;" border="0"&gt;&lt;/a&gt; &lt;a href="http://twitter.com/craigshoemaker/" mce_href="http://twitter.com/craigshoemaker/"&gt;@craigshoemaker&lt;/a&gt; or &lt;a href="http://weblogs.asp.net/craigshoemaker/contact.aspx" mce_href="http://weblogs.asp.net/craigshoemaker/contact.aspx"&gt;my contact page&lt;/a&gt;) and maybe we can work out a remote lunch-n-learn type presentation. Better yet, if you are local to Southern California perhaps we can work out something in person.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6999889" 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/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/Dynamic+Data/default.aspx">Dynamic Data</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/03/25/secrets-of-real-world-asp-net-dynamic-data-websites-ebook-now-available.aspx</feedburner:origLink></item><item><title>Search Multiple Labels in Gmail</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/_yfZkVSr4kI/search-multiple-labels-in-gmail.aspx</link><pubDate>Wed, 18 Mar 2009 16:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6975458</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=6975458</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/03/18/search-multiple-labels-in-gmail.aspx#comments</comments><description>&lt;p&gt;Yesterday I posted a podcast &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; where I talk about using Gmail for implementing the concepts found in the book &lt;a href="http://tr.im/mygtd" mce_href="http://tr.im/mygtd"&gt;Getting Things Done&lt;/a&gt;. I talk about not being able to search inside multiple labels and thus needing two accounts for managing “things to do”. &lt;/p&gt;  &lt;p&gt;Just as I suspected I had missed something and &lt;a href="http://sharpbites.blogspot.com/" mce_href="http://sharpbites.blogspot.com/"&gt;Alberto&lt;/a&gt; and &lt;a href="http://twitter.com/DeanPendley" mce_href="http://twitter.com/DeanPendley"&gt;Dean Pendley&lt;/a&gt; were kind enough to point out that it’s &lt;i&gt;easy &lt;/i&gt;to search multiple labels in Gmail... &lt;/p&gt;  &lt;h2&gt;Find Messages with Multiple Labels&lt;/h2&gt;  &lt;p&gt;Consider messages marked with the labels “personal” and “calls”. Finding your personal call list is as easy as typing the following Gmail’s search box:&lt;/p&gt;  &lt;p style="margin: 0px; padding: 10px; width: 50%; position: relative; background-color: rgb(255, 255, 204);"&gt;l:personal l:calls &lt;/p&gt;  &lt;p&gt;Should you want to find something specific within this list you simply add additional search terms at the end of the query. For instance if you want to find all the calls you need to make about bills labeled as personal you use:&lt;/p&gt;  &lt;p style="margin: 0px; padding: 10px; width: 50%; position: relative; background-color: rgb(255, 255, 204);"&gt;l:personal l:call bills&lt;/p&gt;  &lt;h2&gt;Find Messages in Multiple Labels&lt;/h2&gt;  &lt;p&gt;If you are looking for messages in both labels, all you have to do is add the OR keyword. So looking for all your items labeled as personal and calls would be:&lt;/p&gt;  &lt;p style="margin: 0px; padding: 10px; width: 50%; position: relative; background-color: rgb(255, 255, 204);"&gt;l:personal OR l:calls&lt;/p&gt;  &lt;p&gt;It’s that simple!&lt;/p&gt;  &lt;h2&gt;Consolidation?&lt;/h2&gt;  &lt;p&gt;I still haven’t decided yet if I will consolidate my personal and work accounts based off this information. My concern is that this may be a lot of typing queries to make sure I am only looking at what I want. I will try it out with new personal projects and next actions for a while though.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6975458" width="1" height="1"&gt;</description><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/03/18/search-multiple-labels-in-gmail.aspx</feedburner:origLink></item><item><title>Digital Productivity Strategies for Developers</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/jvngOjHAEC8/digital-productivity-strategies-for-developers.aspx</link><pubDate>Tue, 17 Mar 2009 17:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6970987</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=6970987</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/03/17/digital-productivity-strategies-for-developers.aspx#comments</comments><description>
&lt;p&gt;&lt;a href="http://polymorphicpodcast.com/shows/digital-life/"&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;h2&gt;Our Guest: Jean-Paul Boodhoo&lt;/h2&gt;
&lt;p&gt;Our special guest this week is &lt;a href="http://jpboodhoo.com/" title="Jean-Paul S. Boodhoo - Develop With Passion" rel="friend met colleague"&gt;Jean Paul Boodhoo&lt;/a&gt; &lt;a href="http://twitter.com/jpboodhoo"&gt;&lt;img src="http://polymorphicpodcast.com/images/icons/fav-twitter.png" alt="Follow JP on Twitter" border="0"&gt;&lt;/a&gt; who is a developer, trainer, and author specializing in .NET and Agile development. When I first heard about JP’s summer where he worked while traveling around the world after giving away the contents of his home – I knew I had to have him share how he did it.&lt;/p&gt;

&lt;h2&gt;Truly Going Paperless&lt;/h2&gt;
&lt;p&gt;While very few of us will have an opportunity to have such a grand adventure as JP and his family did his techniques are something we can all benefit from. In this show JP shares how he uses the following services to be 100% mobile keep a paperless office:&lt;/p&gt;

&lt;ul&gt;
  
&lt;li&gt;&lt;a href="http://www.earthclassmail.com/"&gt;Earth Class Mail&lt;/a&gt;: global PO box with options to send parcels to wherever you are in the world &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://neatco.com/"&gt;Neat Co&lt;/a&gt;: scanning, storing and working with receipts &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.efax.com/"&gt;eFax&lt;/a&gt;: for faxing documents via email &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://skype.com/"&gt;Skype&lt;/a&gt;: Unlimited &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/livemeeting/"&gt;LiveMeeting&lt;/a&gt;: with active speaker switching for video conferences &lt;/li&gt;

  
&lt;li&gt;&lt;a href="http://www.ultravnc.com/"&gt;UltraVNC&lt;/a&gt;: for remote pair programming &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Getting Things Done&lt;/h2&gt;
&lt;p&gt;I got a copy of&amp;nbsp; &lt;a href="http://tr.im/mygtd"&gt;Getting Things Done&lt;/a&gt;&amp;nbsp; for Christmas and quickly became energized by &lt;a href="http://www.davidco.com/"&gt;David Allen&lt;/a&gt;’s concepts. I discuss in the show how I use custom &lt;a href="http://mail.google.com/"&gt;Gmail&lt;/a&gt; accounts and a defined workflow to implement the tenants of GTD. Gmail’s labeling, search, archive and starring features make a great way to keep track of projects and next actions.&lt;/p&gt;

&lt;p&gt;Further I use the service, &lt;a href="http://3mindme.com/"&gt;3mindme&lt;/a&gt; to implement a digital &amp;nbsp;ticker file&amp;nbsp; (see the book for an explanation!). Finally, to keep the accounts accessible I use &lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt; to map each mail account to a different browser so I can keep each account authenticated… works like a champ!&lt;/p&gt;

&lt;p&gt;If all of this is foreign to you I&amp;nbsp; suggest you get a copy of the book for yourself and find out why the GTD concept is so practical.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tr.im/mygtd"&gt;&lt;img src="http://polymorphicpodcast.com/images/gtd-book.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: Some listeners pointed out how easy it is to search multiple labels in Gmail. I posted about it here: &lt;a href="http://weblogs.asp.net/craigshoemaker/archive/2009/03/18/search-multiple-labels-in-gmail.aspx"&gt;Search Multiple Labels in Gmail&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6970987" width="1" height="1"&gt;</description><enclosure url="http://polymorphicpodcast.com/podcast/files/PolymorphicPodcast-2009-03-16-digital-life.mp3" length="39864730" 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/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/software+development/default.aspx">software development</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/03/17/digital-productivity-strategies-for-developers.aspx</feedburner:origLink></item><item><title>Hands-On Model-View-ViewModel (MVVM) for Silverlight and WPF</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/LiD-Y_zE8sA/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx</link><pubDate>Thu, 26 Feb 2009 14:36:40 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6929405</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>13</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=6929405</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/02/26/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx#comments</comments><description>&lt;p&gt;Over the years I have spent a fair amount of time thinking about &lt;a href="http://polymorphicpodcast.com/shows/mv-patterns/"&gt;design patterns surrounding the presentation layer&lt;/a&gt;. Just as your values as a grown-up are often determined by experiences you have as a child – I think my interest in these patterns stem from frustrations I had as a newbie developer.&lt;/p&gt;  &lt;p&gt;When I first started, I made my way onto a team developing software for a financial company. The obvious pre-requisites emerged: quality and accuracy were paramount to the success of the project, and the features and scope of the project were always expanding. The problem was soon I realized that the way this application was built would compromise our ability to deliver to the necessary standards.&lt;/p&gt;  &lt;p&gt;The problems included:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Web pages with over 2,000 lines of code in Page_Load event method&lt;/li&gt;    &lt;li&gt;A complete disregard for any attempt to automate testing&lt;/li&gt;    &lt;li&gt;Un-extensible architecture &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;... and host of other issues pushed me to learn how to avoid these problems in the future.&lt;/p&gt;  &lt;p&gt;A drive to push as much code of the the user interface layer seem to be a step in the right direction. While by no means a silver bullet, breaking apart the application would help bring some order to the chaos and provide a foundation for automated testing and application extensibility. The usual suspects for this kind of separation are &lt;a href="http://en.wikipedia.org/wiki/Model_view_controller"&gt;Model-View-Controller (MVC)&lt;/a&gt; and it’s derivative patterns.&lt;/p&gt;  &lt;h2&gt;Presentation Models for XAML Applications&lt;/h2&gt;  &lt;p&gt;With the emergence of WPF, the change in architecture brought about a need to shift the approach of separation of concerns in the presentation layer. The approach of Model-View-Controller and it’s offspring were an obvious choice, but the existing models were required no small amount of shoe-horning to make a comfortable match for XAML applications. &lt;/p&gt;  &lt;p&gt;Looking to apply a pattern with a more natural fit &lt;a href="http://blogs.msdn.com/johngossman/"&gt;John Gossman&lt;/a&gt; helped popularize &lt;a href="http://blogs.msdn.com/johngossman/"&gt;Model-View-ViewModel (MVVM)&lt;/a&gt; for use in WPF. (He and his team even went as far as to use the pattern while &lt;a href="#devBlend"&gt;developing Expression Blend&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;.) As WPF matured and Silverlight began to emerge, this time MVVM seemed like the go-to pattern, but resources with concrete instruction are few and far between.&lt;/p&gt;  &lt;h2&gt;Looking for Guidance&lt;/h2&gt;  &lt;p&gt;As with all the Model View * patterns, there usually follows a learning curve to anyone new to the approach. Therefore I set out to find a way to provide an &amp;quot;apples to apples&amp;quot; comparison of how to implement MVVM in both Silverlight and WPF.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" height="345" alt="Comparing apples to apples: Implementing Model-View-ViewModel in Silverlight and WPF" src="http://download.infragistics.com/pixel8/images/mvvm-sl-wpf.png" width="346" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;I decided to create some long-form screencasts that will help teach the concepts of MVVM. I contacted Microsoft Program Manager &lt;a href="http://timheuer.com/blog/"&gt;Tim Heuer&lt;/a&gt; to tackle the Silverlight project and WPF Super Ninja &lt;a href="http://joshsmithonwpf.wordpress.com/"&gt;Josh Smith&lt;/a&gt; to lead the way for a WPF implementation. &lt;/p&gt;  &lt;p&gt;The charge was simple: create a quiz application that harnesses the power of MVVM. The result is the following two screencasts (each an hour in length) that dive into the details of using MVVM.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://pixel8.infragistics.com/default.aspx#Episode:11927"&gt;&lt;img height="188" alt="Implementing Model-View-ViewModel in Silverlight" src="http://download.infragistics.com/pixel8/images/btn-mvvm-sl.png" width="250" border="0" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://pixel8.infragistics.com/default.aspx#Episode:11933"&gt;&lt;img height="188" alt="Implementing Model-View-ViewModel in Silverlight" src="http://download.infragistics.com/pixel8/images/btn-mvvm-wpf.png" width="250" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;If you are new to Silverlight, WPF and MVVM, I suggest you &lt;a href="http://pixel8.infragistics.com/default.aspx#Episode:11927"&gt;begin by watching the Silverlight video first&lt;/a&gt;. Tim does a great job of explaining the pattern from the ground up and showing how all the dots are connected. Once you are a little more comfortable with the basics, &lt;a href="http://pixel8.infragistics.com/default.aspx#Episode:11933"&gt;Josh’s video attempts to take a more real-world looking domain model and prepare it for his WPF application&lt;/a&gt; with a clean ViewModel interface. Both are worth the time as each presenter did an excellent job of demonstrating their approach.&lt;/p&gt;  &lt;p align="left"&gt;I hope you find them useful!&lt;/p&gt;  &lt;h2&gt;Resources&lt;/h2&gt;  &lt;p&gt;For further reading on Model-View-ViewModel:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;WPF Apps With The Model-View-ViewModel Design Pattern&lt;/a&gt; by Josh Smith &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx"&gt;Introduction to Model/View/ViewModel pattern for building WPF apps&lt;/a&gt; by John Gossman &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Foot Notes&lt;/h3&gt;  &lt;ol&gt;   &lt;li id="devBlend"&gt;John describes this experience using MVVM while developing Expression Blend during a Pixel8 interview: &lt;a href="http://pixel8.infragistics.com/Default.aspx#Episode:9071"&gt;John Gossman Architects WPF&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6929405" 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/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/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/Pixel8/default.aspx">Pixel8</category><category domain="http://weblogs.asp.net/craigshoemaker/archive/tags/MVVM/default.aspx">MVVM</category><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/02/26/hands-on-model-view-viewmodel-mvvm-for-silverlight-and-wpf.aspx</feedburner:origLink></item><item><title>2009 Southern California Code Camp Session Materials</title><link>http://feedproxy.google.com/~r/PolymorphicPodcastBlog/~3/6-OIpdidC18/2009-southern-california-code-camp-session-materials.aspx</link><pubDate>Wed, 28 Jan 2009 17:25:33 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6866732</guid><dc:creator>craigshoemaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/craigshoemaker/rsscomments.aspx?PostID=6866732</wfw:commentRss><comments>http://weblogs.asp.net/craigshoemaker/archive/2009/01/28/2009-southern-california-code-camp-session-materials.aspx#comments</comments><description>&lt;p&gt;I realize this is a little late, but I thought I would put up links for the session materials to whomever attended my &lt;a href="http://www.socalcodecamp.com/session.aspx?sid=5720b7fa-0ff7-450d-b211-bff32ebda021"&gt;10 Secrets of Real World Dynamic Data Websites&lt;/a&gt; at the &lt;a href="http://www.socalcodecamp.com/"&gt;Southern California Rock n’ Roll Code Camp&lt;/a&gt; this year.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://polymorphicpodcast.com/sessions/realworlddd"&gt;You can get the power point deck, database and code right here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For those who expressed interest… the little “shortcut” utility I was using is &lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt;… I can not say enough good things about SlickRun!&lt;/p&gt;  &lt;p&gt;Thanks again for those of you who came out – I hope to see you all again. I will keep you posted as I just submitted my first draft of an ebook for Wrox based off the types of material you saw in the talk.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6866732" width="1" height="1"&gt;</description><feedburner:origLink>http://weblogs.asp.net/craigshoemaker/archive/2009/01/28/2009-southern-california-code-camp-session-materials.aspx</feedburner:origLink></item></channel></rss>
