<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Scott Hanselman's Computer Zen</title>
    <link>http://www.hanselman.com/blog/</link>
    <description>Scott Hanselman's Thoughts on Programming, Technology, Fatherhood, and Life</description>
    <image>
      <url>http://www.hanselman.com/blog/images/zenicon.jpg</url>
      <title>Scott Hanselman's Computer Zen</title>
      <link>http://www.hanselman.com/blog/</link>
    </image>
    <copyright>admin</copyright>
    <lastBuildDate>Tue, 07 Jul 2009 20:17:34 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.7238.742</generator>
    <managingEditor>scott@hanselman.com</managingEditor>
    <webMaster>scott@hanselman.com</webMaster>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ScottHanselman" type="application/rss+xml" /><feedburner:emailServiceId>ScottHanselman</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><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>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <title>Hanselminutes on 9 - What Laptop do Alpha Geeks Use?</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/yCqMHI6CvU4/HanselminutesOn9WhatLaptopDoAlphaGeeksUse.aspx</link>
      <pubDate>Tue, 07 Jul 2009 20:17:34 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Inside-Secret-Microsoft-Meeting-Rooms-What-Laptop-do-Alpha-Geeks-Use/"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/Hanselminuteson9WhatLaptopdoAlphaGeeksUs_BA14/image_3.png" width="320" height="237" /&gt;&lt;/a&gt; I'm up in Redmond visiting for a few days this week and I'm in a super-secret meeting in an undisclosed location (Well, actually it's Studio C in the 3408 conference room, but still, what can you do with that?) and during a break I noticed how everyone had a different laptop. Here's 6 short minutes on who's running what. You might recognize a few familiar faces. &lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Inside-Secret-Microsoft-Meeting-Rooms-What-Laptop-do-Alpha-Geeks-Use/"&gt;I pulled out my Creative Vado HD and proceeded to be silly&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As with most &lt;a href="http://channel9.msdn.com/tags/HanselminutesOn9/"&gt;Hanselminutes on 9 videos&lt;/a&gt;, this little diddy is entirely free of content. &lt;/p&gt;  &lt;p&gt;Enjoy. &lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Inside-Secret-Microsoft-Meeting-Rooms-What-Laptop-do-Alpha-Geeks-Use/"&gt;Downloads for iPod, Zune, and PSP are also available on the site&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Oct4M6l_R7XHkO_k_hBu8aseOHY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oct4M6l_R7XHkO_k_hBu8aseOHY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Oct4M6l_R7XHkO_k_hBu8aseOHY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oct4M6l_R7XHkO_k_hBu8aseOHY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=yCqMHI6CvU4:uIBL9fRxthk:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=yCqMHI6CvU4:uIBL9fRxthk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=yCqMHI6CvU4:uIBL9fRxthk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=yCqMHI6CvU4:uIBL9fRxthk:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/yCqMHI6CvU4" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=6d34c6ab-1f34-4bc8-952e-b62101807e55</comments>
      <category>Channel9</category>
      <category>Podcast</category>
    <feedburner:origLink>http://www.hanselman.com/blog/HanselminutesOn9WhatLaptopDoAlphaGeeksUse.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>July 7th - Seattle/Redmond/Bellevue Nerd Dinner</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/8aD4JcbS5SY/July7thSeattleRedmondBellevueNerdDinner.aspx</link>
      <pubDate>Mon, 06 Jul 2009 06:16:42 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.nerddinner.com/717"&gt;&lt;img style="margin: 0px" border="0" alt="blogging" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/November8thSeattleRedmondBellevueNerdDin_F437/blogging_3.jpg" width="184" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Are you in King County/Seattle/Redmond/Bellevue and surrounding areas? Are you a huge &lt;a href="http://en.wikipedia.org/wiki/Nerd"&gt;nerd&lt;/a&gt;? Perhaps a &lt;a href="http://en.wikipedia.org/wiki/Geek"&gt;geek&lt;/a&gt;? No? Maybe a, &lt;a href="http://en.wikipedia.org/wiki/Dork"&gt;dork&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Dweeb"&gt;dweeb&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Wonk_%28slang%29"&gt;wonk&lt;/a&gt;. Maybe you're in town for an SDR (Software Design Review) or just hanging out. Quite possibly you're just a &lt;a href="http://www.urbandictionary.com/define.php?term=normal"&gt;normal person&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Regardless, why not join us for some &lt;strong&gt;Mall Food at the &lt;/strong&gt;&lt;a href="http://www.crossroadsbellevue.com/directions.html"&gt;Crossroads Bellevue Mall Food Court&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt; on July 7th around 6:00pm? &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;All the details are at &lt;/strong&gt;&lt;a href="http://www.nerddinner.com/717"&gt;&lt;strong&gt;http://www.nerddinner.com/717&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Also, please &lt;a title="Click to send this page to Twitter!" href="http://twitter.com/home?status=Nerd Dinner in Seattle on 7/7@6 http://www.nerddinner.com/717" target="_blank"&gt;&lt;strong&gt;Tweet This!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you want to come and share something with the group, please do! We're language and technology agnostic and always eager to learn about new stuff.&lt;/p&gt;  &lt;p&gt;It'd be great if Microsoft Employees came also - everyone loves to put a face to a blog and sometimes Microsoft folks get tunnel vision and don't learn about what's going on in other groups! &lt;strong&gt;All are welcome...Please spread the word!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Hope to see you there. If not, I shall eat my Spicy Chicken alone in peace.&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gh7qkAwVOXlmPqcBD8Qg4E3UUrk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gh7qkAwVOXlmPqcBD8Qg4E3UUrk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gh7qkAwVOXlmPqcBD8Qg4E3UUrk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gh7qkAwVOXlmPqcBD8Qg4E3UUrk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=8aD4JcbS5SY:tLXU_6RGHqU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=8aD4JcbS5SY:tLXU_6RGHqU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=8aD4JcbS5SY:tLXU_6RGHqU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=8aD4JcbS5SY:tLXU_6RGHqU:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/8aD4JcbS5SY" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=39b91cbf-5db1-4145-bd0e-089c2fa39899</comments>
      <category>NerdDinner</category>
    <feedburner:origLink>http://www.hanselman.com/blog/July7thSeattleRedmondBellevueNerdDinner.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <title>Hanselminutes Podcast 169 - The Art of Unit Testing with Roy Osherove</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/PZq3vAfG4JI/HanselminutesPodcast169TheArtOfUnitTestingWithRoyOsherove.aspx</link>
      <pubDate>Mon, 06 Jul 2009 04:52:49 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/1933988274?ie=UTF8&amp;amp;tag=diabeticbooks&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1933988274"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ArtOfUnitTesting" border="0" alt="ArtOfUnitTesting" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast169TheArtofUnitTesti_131FC/ArtOfUnitTesting_3.jpg" width="270" height="337" /&gt;&lt;/a&gt; My &lt;a href="http://www.hanselminutes.com/default.aspx?showID=187"&gt;one-hundred-and-sixty-ninth podcast is up&lt;/a&gt;. In this show recorded in Norway, &lt;a href="http://weblogs.asp.net/rosherove/"&gt;Roy Osherove&lt;/a&gt; educates Scott on best practices in Unit Testing techniques and the Art of Unit Testing. &lt;/p&gt;  &lt;p&gt;Also, be sure to check out &lt;a href="http://www.ndc2009.no/en/agenda.aspx?cat=1071&amp;amp;id=1813&amp;amp;day=3727"&gt;Roy's talk at the recent Norwegian Developer's Conference&lt;/a&gt;, they're quite excellent and worth your time.&lt;/p&gt;  &lt;p&gt;Roy's Publisher has given Hanselminutes listeners a code until August 1st, 2009 for 37% off. The code is &amp;quot;hansel37&amp;quot; and it's good at &lt;a href="http://www.manning.com"&gt;http://www.manning.com&lt;/a&gt; and takes the price to US$25.19. Oddly in other ironic news, &lt;a href="http://www.amazon.com/gp/product/1933988274?ie=UTF8&amp;amp;tag=diabeticbooks&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1933988274"&gt;the book is (tonight at least) $26.39 on Amazon&lt;/a&gt;. Go figure.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Links from the Show&lt;/strong&gt;&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://twitter.com/RoyOsherove"&gt;Roy Osherove on Twitter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.artofunittesting.com/"&gt;The Art of Unit Testing Website&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1933988274?ie=UTF8&amp;amp;tag=diabeticbooks&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1933988274"&gt;The Art of Unit Testing (Amazon Link)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/rosherove/"&gt;Roy's Blog&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.typemock.com/"&gt;TypeMock&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Subscribe: &lt;/strong&gt;&lt;a href="http://feeds.feedburner.com/Hanselminutes"&gt;&lt;img border="0" alt="Subscribe to Hanselminutes" src="http://www.hanselman.com/blog/content/binary/feed_2Dicon_2D16x16.png" /&gt;&lt;/a&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117488860"&gt;&lt;img border="0" alt="Subscribe to my Podcast in iTunes" src="http://www.hanselman.com/blog/themes/zenGarden2/itunes_subscribe.gif" /&gt;&lt;/a&gt; &lt;a href="zune://subscribe/?Hanselminutes=http://feeds.feedburner.com/HanselminutesCompleteMp3"&gt;&lt;img src="http://www.hanselman.com/blog/images/zunepodcast.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Download: &lt;/strong&gt;&lt;a href="http://perseus.franklins.net/hanselminutes_0169.mp3"&gt;MP3 Full Show #169&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Play &lt;/strong&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=187"&gt;in your browser&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Do also &lt;a href="http://www.hanselminutes.com/archives.aspx"&gt;remember the complete archives&lt;/a&gt; are always up and they have&lt;strong&gt;&lt;em&gt;PDF Transcripts&lt;/em&gt;&lt;/strong&gt;, a little known feature that show up a few weeks after each show.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;Telerik&lt;/strong&gt;&lt;/a&gt; is a sponsor for this show!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;img border="0" align="left" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast51StaticCodeAnalysis_140AB/telerikLogo%5B1%5D%5B8%5D.gif" width="216" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET and Windows Forms. Enjoy the versatility of our new-generation Reporting Tool. Dive into our online community. Visit &lt;/strong&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;strong&gt;www.telerik.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;As I've said before this show comes to you with the audio expertise and stewardship of &lt;a href="http://weblogs.asp.net/cfranklin/archive/2006/01/11/435036.aspx"&gt;Carl Franklin&lt;/a&gt;. The name comes from &lt;a href="http://www.paraesthesia.com/blog/comments.php?id=776_0_1_0_C"&gt;Travis Illig&lt;/a&gt;, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)&lt;/p&gt;  &lt;p&gt;Enjoy. Who knows what'll happen in the next show?&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jHJBCewlf1UkAs5xm6nO38fuUUs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jHJBCewlf1UkAs5xm6nO38fuUUs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jHJBCewlf1UkAs5xm6nO38fuUUs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jHJBCewlf1UkAs5xm6nO38fuUUs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=PZq3vAfG4JI:rzPMqcJpnvE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=PZq3vAfG4JI:rzPMqcJpnvE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=PZq3vAfG4JI:rzPMqcJpnvE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=PZq3vAfG4JI:rzPMqcJpnvE:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/PZq3vAfG4JI" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=6257f365-d27f-42c6-8197-c3a9ddf3111d</comments>
      <category>NUnit</category>
      <category>Open Source</category>
      <category>Podcast</category>
      <category>Tools</category>
    <feedburner:origLink>http://www.hanselman.com/blog/HanselminutesPodcast169TheArtOfUnitTestingWithRoyOsherove.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>Review - Mophie Juice Pack (not the Juice Pack Air)</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/9HfzfDTAK9s/ReviewMophieJuicePackNotTheJuicePackAir.aspx</link>
      <pubDate>Fri, 03 Jul 2009 06:37:09 GMT</pubDate>
      <description>&lt;div&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/iphonebatterypack2_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iphonebatterypack2" border="0" alt="iphonebatterypack2" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/iphonebatterypack2_thumb.jpg" width="304" height="404" /&gt;&lt;/a&gt;   &lt;p&gt;The battery life on my iPhone is laughable. If I want to actually use it, like&lt;strong&gt; make use of it, &lt;/strong&gt;then it's dead by after lunch. With 3G, Wi-Fi, Bluetooth, GPS, work and personal mail, yada yada, it's a joke.&lt;/p&gt;  &lt;p&gt;Here's a picture of me with my &lt;em&gt;first&lt;/em&gt; external battery pack. This got me through the day, but it wasn't very convenient. &lt;/p&gt;  &lt;p&gt;When the Mophie Juice Pack &lt;em&gt;Air &lt;/em&gt;was announced, I was thrilled. Over the moon. A battery pack that was also a case? Sleek and doubled your battery life? Brilliant. &lt;/p&gt;  &lt;p&gt;I ordered one immediately on Amazon. When it showed up, I learned that there's actually a &amp;quot;Juice Pack&amp;quot; and the &amp;quot;Juice Pack &lt;strong&gt;Air&lt;/strong&gt;.&amp;quot; This distinction had escaped me...turns out I ordered the original Juice Pack, rather than the more sleek and form-fitting Juice Pack Air.&lt;/p&gt;  &lt;p&gt;I did some research, and found out that there's basically three differences between the Juice Pack and Juice Pack Air.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;strong&gt;Juice Pack&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;strong&gt;Juice Pack Air&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Chunky and only covers 7/8ths of the back of the phone.&lt;/td&gt;        &lt;td valign="top" width="200"&gt;Sleek and covers the entire phone.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1800 mAh&lt;/td&gt;        &lt;td valign="top" width="200"&gt;1200 mAh&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Always on (always trying to charge)&lt;/td&gt;        &lt;td valign="top" width="200"&gt;On/Off switch lets you decide when it's charging&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I liked the slim idea of the Air, but I figured 50% more mAh was better for me as a power-user, so I stuck with the standard &lt;strong&gt;Mophie Juice Pack, &lt;em&gt;not &lt;/em&gt;&lt;/strong&gt;the Air.&lt;/p&gt;  &lt;p&gt;Now, let me say, I &lt;strong&gt;really &lt;/strong&gt;want to like the Mophie Juice Pack. Truly. I hate being negative because I realize there's a company and actual humans behind this product.&amp;#160; However, it just doesn't live up to real world usage.&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/DSC_0332.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSC_0332" border="0" alt="DSC_0332" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/DSC_0332_thumb.jpg" width="244" height="164" /&gt;&lt;/a&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/DSC_0334.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DSC_0334" border="0" alt="DSC_0334" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ReviewMophieJuicePackAir_141F9/DSC_0334_thumb.jpg" width="244" height="164" /&gt;&lt;/a&gt;Wear&lt;/h3&gt;  &lt;p&gt;I've had the Juice Pack for just about 60 days. I don't work in construction and I don't throw my phone around. Still, the surface of the Juice Pack is rubbing away in a really unattractive way. &lt;/p&gt;  &lt;p&gt;See the picture at right? The shiny patches on the corners are where it's wearing away. This is after 2 months. &lt;/p&gt;  &lt;p&gt;The sides of the pack have, for some reason, (perhaps grippy-ness?) rubber strips about 2 inches long. On both sides it's wearing away. On the one side it's sliding off and the adhesive/glue stuff is showing. It's very frustrating to see such poor construction around my little &lt;strike&gt;phone&lt;/strike&gt; Star Trek Data Pad.&lt;/p&gt;  &lt;h3&gt;Charging Behavior&lt;/h3&gt;  &lt;p&gt;I use the pack all day and so far, it DOES get me through the day, from 8 am to about 6pm before I need to start worrying. I have the brightness of the phone at 30%, Wi Fi on, Bluetooth on, GPS off. I figured with 1800 mAh would get me 12+ hours of normal usage, as the &lt;a href="http://www.mophie.com/Juice-Pack-3G-p/1058_jp-ip3g-blk.htm"&gt;specifications&lt;/a&gt; talk about numbers like 28 hours of audio playback and 12 hours of 2G (Edge) talk time, but still, 10 hours is not bad.&lt;/p&gt;  &lt;p&gt;The Mophie Juice Pack has 4 small LEDs on the back that tell you how much charge the pack has left. The features page says it has &lt;em&gt;&amp;quot;Smart Battery Technology [that] instructs the iPhone to always drain out the juice pack first.&amp;quot; &lt;/em&gt;As a technologist, I think this statement isn't really fair, as the iPhone thinks it's plugged-in when the batter is attached. When the &amp;quot;plug power&amp;quot; (in this case, the battery) stops, then the iPhone's battery stars. This is the same behavior as my old $10 4 AA battery charger.&lt;/p&gt;  &lt;p&gt;The Juice Pack doesn't have an on-off switch, so it tries to charge the iPhone immediately, even if it doesn't need it, which appears to use power. For me, this means that the Juice Pack's battery is dead for me by around 1pm, which means I'm on my own by the early afternoon. I'd prefer to have the opposite behavior, which is enabled by the switch on the Juice Pack Air. I'd like to drain the iPhone's own battery &lt;em&gt;first&lt;/em&gt;, then have the Juice Pack kick in.&lt;/p&gt;  &lt;h3&gt;Weird Behavior&lt;/h3&gt;  &lt;p&gt;A nice feature of the battery is that the charging cable is a standard mini-USB, which is more standard than the iPhone cable. However, one oddity is that sometimes I'll have the phone inside the battery and a charging cable attached to the battery and both are discharging. I'd expect the battery to always charge when plugged in. In these cases I have to separate the battery from the phone in order to charge the former. It's odd, as it's caused me to end up with a dead phone battery even while the external one was plugged in, just not charging.&lt;/p&gt;  &lt;h3&gt;Power Drop Off&lt;/h3&gt;  &lt;p&gt;After only 2 months, even though I discharge the battery fully (via normal use) every day, and charge it overnight, its lifetime had dropped already. This is after about 60 full cycles. When the battery light indicator reaches 2 out of 4 LEDs, it drops off dramatically within an hour. Basically 4 LEDs to 2 LEDs is 3 hours and 2 LEDs to 1 LED is an hour. This is anecdotal, to be sure, but it's everyday and it's dramatic to the point of pissing me off. &lt;/p&gt;  &lt;h3&gt;Unreasonable Expectations? Maybe.&lt;/h3&gt;  &lt;p&gt;The specs say 350 hours of standby?&amp;#160; I can't see how, unless EVERYTHING is turned off...perhaps 350 hours of airplane mode. I'd like a single 18 hour day of normal usage. Or, even a reliable 12.&lt;/p&gt;  &lt;p&gt;It's so bad that I have purchased car chargers for both cars and I'm forced to top-up at least once, sometimes twice a day. &lt;/p&gt;  &lt;p&gt;It was &lt;strong&gt;US$100&lt;/strong&gt;, which is a lot for anything, including a battery. It's now ugly after two months and at this rate, I'll&amp;#160; be surprised if the charge lasts the rest of the year.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you have this battery, leave a comment here. Did I get a dud? We'll see and I'll keep this review updated.&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lzAE1_wN2IeSKat1l53L-1f_e_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzAE1_wN2IeSKat1l53L-1f_e_8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lzAE1_wN2IeSKat1l53L-1f_e_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzAE1_wN2IeSKat1l53L-1f_e_8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=9HfzfDTAK9s:7zpu2SiG8uQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=9HfzfDTAK9s:7zpu2SiG8uQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=9HfzfDTAK9s:7zpu2SiG8uQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=9HfzfDTAK9s:7zpu2SiG8uQ:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/9HfzfDTAK9s" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=c24ba97f-1849-4fe0-88fa-3a4583b14313</comments>
      <category>Reviews</category>
    <feedburner:origLink>http://www.hanselman.com/blog/ReviewMophieJuicePackNotTheJuicePackAir.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</wfw:commentRss>
      <slash:comments>13</slash:comments>
      <title>My Lenovo Choice - ThinkPad W700 vs. ThinkPad W500 Review</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/Ee-ujnKKJD8/MyLenovoChoiceThinkPadW700VsThinkPadW500Review.aspx</link>
      <pubDate>Fri, 03 Jul 2009 06:33:03 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0019_1.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0019" border="0" alt="DSC_0019" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0019_thumb_1.jpg" width="349" height="312" /&gt;&lt;/a&gt; &amp;quot;But it’s the same laptop!&amp;quot; my wife said. I've been using a Lenovo T60 or T60p for a very long time. Since it came out, in fact. I had a T60 at my last job for years, and a T60p all the while at Microsoft. I have happily running 64-bit operating systems on my T60p with 4gigs of RAM…unfortunately with the caveat that the T60p can only address 3gigs, no matter what. (Unlike its smarter cousin the T61.)&lt;/p&gt;  &lt;p&gt;I've been at Microsoft almost 2 years (it'll be 2 years in October, I think) and I've been begging my boss for a &amp;quot;hardware refresh.&amp;quot; That's Microsoft speak for giving your laptop back and getting a better one. You're better off if the laptop you want is &amp;quot;MSIT Supported.&amp;quot; Folks have been known to order all sorts of crazy stuff, but they're responsible for keeping it running if things go south.&lt;/p&gt;  &lt;p&gt;My budget was limited and I wasn't able to get an SSD (Solid State Disk, vs. a regular hard drive) in my new laptop, but I would have needed at least a 160gig version anyway, so I'm not too sad.&lt;/p&gt;  &lt;p&gt;I've been trying out two Lenovo laptops and settled on one. The other gets sent back to Lenovo.&lt;/p&gt;  &lt;p&gt;First, The Beast, then Ultimate Winner. Note that all of this is just my opinion, and I didn't get any free stuff or whatever. I'm just writing a review because I felt like it.&lt;/p&gt;  &lt;h3&gt;The Beast - Lenovo ThinkPad W700&lt;/h3&gt;  &lt;p&gt;I was on-site working for a week recently at a large NW company that does business online. I took the W700 with me for a trial run. During the final presentation of the code I had written for this client, it was noticed I'd forgotten to remove a reference in the code to a proxy server I'd been running, so the Senior VP saw &amp;quot;http://bigasslaptop:8080&amp;quot; on his conference room screen. At least it wasn't a proper cuss word, but I felt I needed to explain myself to the room. I pulled out the ThinkPad W700 and the VP I thought I'd offended said &amp;quot;Holy s***, that's a big ass laptop. Ok, I get it now. Continue.&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/winsatwin7%20w700ds_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="winsatwin7 w700ds" border="0" alt="winsatwin7 w700ds" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/winsatwin7%20w700ds_thumb.png" width="484" height="369" /&gt;&lt;/a&gt;There's nothing else it could be called. This laptop is only a laptop if your lap is two-laps wide. This laptop could be considered a deadly weapon and beat a man to death. This laptop has its own gravitational pull with netbooks and smaller laptops orbiting around it.&lt;/p&gt;  &lt;p&gt;it's truly awesome. It is a quad-proc machine with an amazing 1920x1200 17&amp;quot; screen and a &lt;em&gt;second 1280x768 pull out side-car monitor.&lt;/em&gt; What's that extra monitor for? Toolboxes, the Solution Explorer, your Email, whatever. It's brilliant, and don't knock it until you've tried it. &lt;/p&gt;  &lt;p&gt;If you're looking for a luggable, this is the pinnacle. My #1, and really ONLY problem with the laptop is that it's just too big for my bag. In fact, i was unable to find a bag, backpack or briefcase (even my beloved Zero Haliburton aluminum case) that could hold it. &lt;/p&gt;  &lt;p&gt;However, if you want a desktop machine that you can really easily move around, look no further. It's a portable machine, but not a machine you move lightly, or without a buddy assist and strong back.&lt;/p&gt;  &lt;p&gt;The WEI scores speed for themselves. A 7.2 on the processor out of a max of 7.9, that's crazy on a laptop. Notice the 5.8 for 3D graphics. It's a great gaming machine (Half-Life looks great) and it'd be excellent for 3D modeling. Interestingly, only the Hard Drive suffers compared to the W500.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;The Perfect Laptop - Lenovo ThinkPad W500&lt;/h3&gt;  &lt;p&gt;The W500 is EXACTLY like my T60p. But with more awesome. It basically fixes every tiny thing that was wrong with the T60p, which was very little. It weighs the same and looks exactly like the T60p. It adds an integrated webcam in the bezel, which means one less thing to carry on trips. It also adds a built-in card reader in the front, which is nice as I've got a half-dozen SD Cards lying around. There's 3 USB ports, a VGA port and a Display Link port and a nice ATI card with a half-gig of RAM. It'll run my big monitors no problem. The screen on the W500 is amazing, running at 1920x1200, but the same size as the T60p. &lt;/p&gt;  &lt;p&gt;It's got Bluetooth, WiFi with an external switch &lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/winsatwin7w500_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="winsatwin7w500" border="0" alt="winsatwin7w500" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/winsatwin7w500_thumb.png" width="480" height="376" /&gt;&lt;/a&gt;(thanks!) as well as WiMax built-in, which is &lt;a href="http://www.clear.com"&gt;rolling out through my town&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There's a standard PC Card and an Express Card slot. It's got Gigabit Ethernet, which is nice as the whole house is wired. There's also a FireWire port in front. The only thing it's missing is an External SATA slot.&lt;/p&gt;  &lt;p&gt;The W500 isn't the big powerhouse that the W700 is, but it's no slouch for a laptop. Notice that you'd have a 5.9 WEI if you drop out the 3D score. I wish I could have put in a SSD but budgets are what they are. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I love this W500 because it's exactly the same size as the T60p. It's the T60p, but updated with everything new, fast and wonderful. It's a nice, normal-looking laptop that is so powerful I can use it as my main machine. There's &lt;a href="http://www.twitpic.com/1t6bq"&gt;lots of giant laptops&lt;/a&gt;, but the W500 isn't. I can totally use it on a plane without trouble. &lt;/p&gt;  &lt;p&gt;To be clear, I've got a MacBook, I've got a Dell Mini 9, a Dell Studio, and a Toshiba. I've used every brand under the sun and I realize that everyone's got their own opinion. Everyone's had a laptop fail and decided that THAT brand sucks.&lt;/p&gt;  &lt;p&gt;I've personally had great success with Lenovo ThinkPads for work. They are the tuxedos of laptops. I'd buy a Mac for a personal machine and run Win7 on it (I do) but for work, as a developer, the ThinkPad W500 is rocking my world. I'm running Windows 7 happily on it as well as &lt;a href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx"&gt;booting into a Windows 7 VHD with Dev10 installed&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Size Difference Photos&lt;/h3&gt;  &lt;p&gt;Here's the W700 under a 17&amp;quot; MacBook Pro under a W500.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0337.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0337" border="0" alt="DSC_0337" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0337_thumb.jpg" width="484" height="324" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0339.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0339" border="0" alt="DSC_0339" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0339_thumb.jpg" width="484" height="324" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC_0015" border="0" alt="DSC_0015" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/f855dcbba01d_1868/DSC_0015_1.jpg" width="484" height="382" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Related Links&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WiringTheNewHouseForAHomeNetwork.aspx"&gt;Wiring the new house for a Home Network&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WiringTheNewHouseForAHomeNetworkPart2DesignQampA.aspx"&gt;Wiring the new house for a Home Network - Part 2 - Design Q&amp;amp;A&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WiringTheNewHouseForAHomeNetworkPart3ISPHookup.aspx"&gt;Wiring the new house for a Home Network - Part 3 - ISP Hookup&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WiringTheHouseForAHomeNetworkPart4ThankYouCat6GigabitEthernet.aspx"&gt;Wiring the new house for a Home Network - Part 4 - Thank You Cat 6 Gigabit Ethernet&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/WiringTheHouseForAHomeNetworkPart5GigabitThroughputAndVista.aspx"&gt;Wiring the new house for a Home Network - Part 5 - Gigabit Throughput and Vista&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.hanselman.com/blog/NewJobNewHouseNewBabyAndDesigningATotallyNewHomeOffice.aspx"&gt;New Job, New House, New Baby, and Designing a Totally New Home Office&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/82cvln-q2Gfb81RtD-I7xcA-f6o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/82cvln-q2Gfb81RtD-I7xcA-f6o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/82cvln-q2Gfb81RtD-I7xcA-f6o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/82cvln-q2Gfb81RtD-I7xcA-f6o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=Ee-ujnKKJD8:GDL3sXhbRq4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=Ee-ujnKKJD8:GDL3sXhbRq4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=Ee-ujnKKJD8:GDL3sXhbRq4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=Ee-ujnKKJD8:GDL3sXhbRq4:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/Ee-ujnKKJD8" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=58abb9ef-03c6-4a98-b4ea-59f44ee1a705</comments>
      <category>Reviews</category>
    <feedburner:origLink>http://www.hanselman.com/blog/MyLenovoChoiceThinkPadW700VsThinkPadW500Review.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <title>Hanselminutes Podcast 168 - Successful Cross Platform .NET Development - Mono and Banshee with Aaron Bockover</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/nDk8PEyjl2Y/HanselminutesPodcast168SuccessfulCrossPlatformNETDevelopmentMonoAndBansheeWithAaronBockover.aspx</link>
      <pubDate>Wed, 01 Jul 2009 23:16:30 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-windows_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px 15px; display: inline; border-top: 0px; border-right: 0px" title="banshee-windows" border="0" alt="banshee-windows" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-windows_thumb.png" width="324" height="220" /&gt;&lt;/a&gt;My &lt;a href="http://www.hanselminutes.com/default.aspx?showID=186"&gt;one-hundred-and-sixty-eighth podcast is up&lt;/a&gt;. In this one, I chat with &lt;a href="http://abock.org/"&gt;Aaron Bockover&lt;/a&gt; of Novell about the Banshee Project - a cross-platform Media Player. It's a Mono Application that runs on Linux, Mac OS X and Windows. What are the hard-won secrets of cross platform .NET dev? Aaron and his team know the answers.&lt;/p&gt;  &lt;p&gt;I really enjoyed this show. Aaron's team has unquestionably proven that you CAN make a great .NET app that looks great everywhere. Here's Banshee on Windows, OSX, and Linux. Remember, this is written in C#, people. Click the images to see them larger.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-linux_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="banshee-linux" border="0" alt="banshee-linux" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-linux_thumb.png" width="324" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-mac-os-x_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="banshee-mac-os-x" border="0" alt="banshee-mac-os-x" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/a04ffe43db28_DD13/banshee-mac-os-x_thumb.png" width="324" height="221" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Links from the Show&lt;/strong&gt;&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&amp;#160;&lt;a href="http://www.twitter.com/abock"&gt;Aaron on Twitter&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://abock.org/2008/11/17/banshee-14-hits-the-streets-packed-with-awesome/"&gt;Banshee hits the streets&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://abock.org/2007/01/04/things-you-probably-didnt-know-about-banshee-part-1/"&gt;Using Boo for scripting Banshee&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://banshee-project.org/"&gt;Banshee Project web site &lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://abock.org/2008/10/20/cross-platform-thoughts-through-the-lense-of-banshee/"&gt;Cross Platform through the lens of Banshee&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://arstechnica.com/open-source/news/2008/10/linux-applications-gain-new-developers-on-windows-and-os-x.ars"&gt;Press article about Banshee/Tomboy Mono apps being ported to OS X and Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://banshee-project.org/download/archives/1.5.0/"&gt;Major recent release highlights&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Subscribe: &lt;/strong&gt;&lt;a href="http://feeds.feedburner.com/Hanselminutes"&gt;&lt;img border="0" alt="Subscribe to Hanselminutes" src="http://www.hanselman.com/blog/content/binary/feed_2Dicon_2D16x16.png" /&gt;&lt;/a&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117488860"&gt;&lt;img border="0" alt="Subscribe to my Podcast in iTunes" src="http://www.hanselman.com/blog/themes/zenGarden2/itunes_subscribe.gif" /&gt;&lt;/a&gt; &lt;a href="zune://subscribe/?Hanselminutes=http://feeds.feedburner.com/HanselminutesCompleteMp3"&gt;&lt;img src="http://www.hanselman.com/blog/images/zunepodcast.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Download: &lt;/strong&gt;&lt;a href="http://perseus.franklins.net/hanselminutes_0168.mp3"&gt;MP3 Full Show #168&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Play &lt;/strong&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=186"&gt;in your browser&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Do also &lt;a href="http://www.hanselminutes.com/archives.aspx"&gt;remember the complete archives&lt;/a&gt; are always up and they have&lt;strong&gt;&lt;em&gt;PDF Transcripts&lt;/em&gt;&lt;/strong&gt;, a little known feature that show up a few weeks after each show.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;Telerik&lt;/strong&gt;&lt;/a&gt; is a sponsor for this show!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;img border="0" align="left" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast51StaticCodeAnalysis_140AB/telerikLogo%5B1%5D%5B8%5D.gif" width="216" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET and Windows Forms. Enjoy the versatility of our new-generation Reporting Tool. Dive into our online community. Visit &lt;/strong&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;strong&gt;www.telerik.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;As I've said before this show comes to you with the audio expertise and stewardship of &lt;a href="http://weblogs.asp.net/cfranklin/archive/2006/01/11/435036.aspx"&gt;Carl Franklin&lt;/a&gt;. The name comes from &lt;a href="http://www.paraesthesia.com/blog/comments.php?id=776_0_1_0_C"&gt;Travis Illig&lt;/a&gt;, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)&lt;/p&gt;  &lt;p&gt;Enjoy. Who knows what'll happen in the next show?&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/veAtRfKuz1ld8Ih86oT13P0Nh9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/veAtRfKuz1ld8Ih86oT13P0Nh9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/veAtRfKuz1ld8Ih86oT13P0Nh9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/veAtRfKuz1ld8Ih86oT13P0Nh9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nDk8PEyjl2Y:7ug006_WWMA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nDk8PEyjl2Y:7ug006_WWMA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nDk8PEyjl2Y:7ug006_WWMA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nDk8PEyjl2Y:7ug006_WWMA:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/nDk8PEyjl2Y" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=c70d437a-d5e6-49c3-8331-7f7ce7b4ce51</comments>
      <category>Mono</category>
      <category>Podcast</category>
      <category>Source Code</category>
      <category>Windows Client</category>
    <feedburner:origLink>http://www.hanselman.com/blog/HanselminutesPodcast168SuccessfulCrossPlatformNETDevelopmentMonoAndBansheeWithAaronBockover.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=758bdced-2c14-452f-9b3e-686210ef936f</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=758bdced-2c14-452f-9b3e-686210ef936f</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=758bdced-2c14-452f-9b3e-686210ef936f</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=758bdced-2c14-452f-9b3e-686210ef936f</wfw:commentRss>
      <slash:comments>15</slash:comments>
      <title>Videos from the Norwegian Developer's Conference</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=758bdced-2c14-452f-9b3e-686210ef936f</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/LHZHpCA8ZvU/VideosFromTheNorwegianDevelopersConference.aspx</link>
      <pubDate>Wed, 01 Jul 2009 20:41:01 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;All of the talks at this year's &lt;a href="http://www.ndc2009.no/en/agenda.aspx?cat=1071&amp;amp;id=1813"&gt;Norwegian Developer's Conference&lt;/a&gt; were recorded, which is always a treat.&lt;/p&gt;  &lt;p&gt;I did &lt;strong&gt;four &lt;/strong&gt;talks as well as a live .NET Rocks show. It was a crazy week. I also recorded a half-dozen great podcasts. &lt;a href="http://www.hanselminutes.com/archives.aspx"&gt;Three are already live on Hanselminutes and I've got more in the hopper coming soon.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;The HaaHa Show - Hacking with Phil and Scott&lt;/h3&gt;  &lt;p&gt;In this one, Phil is a hacker and he keeps breaking my websites. I fix them, and he breaks them again. &lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4468"&gt;Watch movie&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4468"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/VideosfromtheNorwegianDevelopersConferen_B183/image_16.png" width="484" height="268" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;.NET Rocks - Live! With Carl, Richard, Scott and Phil.&lt;/h3&gt;  &lt;p&gt;This is a really silly show and was entirely content-free. ;) &lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4525"&gt;Watch movie&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4525"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/VideosfromtheNorwegianDevelopersConferen_B183/image_10.png" width="324" height="255" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;The Magic of Astoria - ADO.NET Data Services&lt;/h3&gt;  &lt;p&gt;Me talking about REST and SOAP and ADO.NET Data Services. &lt;a title="Watch movie" href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4499"&gt;Watch movie&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4499"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/VideosfromtheNorwegianDevelopersConferen_B183/image_15.png" width="484" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Making Your Blog Suck Less&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;Warning: I do swear in this one. &lt;/em&gt;Dunno what got into me. &lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4465"&gt;Watch movie&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4465"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/VideosfromtheNorwegianDevelopersConferen_B183/image_3.png" width="484" height="292" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Tour of .NET 4.0&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;This one's not working right now. Not sure why. I'll update with a screenshot when it works again. &lt;/em&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4464"&gt;Watch movie&lt;/a&gt;.&lt;/p&gt;  &lt;hr /&gt;   &lt;p&gt;There's a LOT of greats content over there, and I encourage you to check them out. There's DOZENS of awesome talks, but here's just a few.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4532"&gt;Jeremy D. Miller - Convention over Configuration applied to .NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4533"&gt;Ayende - Building Scalable Systems&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4513"&gt;Udi Dahan - Asynchronous Systems Architecture for the Web&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4496"&gt;Ted Neward - Rethinking &amp;quot;Enterprise&amp;quot;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4480"&gt;Jonas Follesø - Building Business Applications in Silverlight 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4482"&gt;Michael Feathers - Seven Blind Alleys in Software Design&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4519"&gt;Peter Provost - The Butterfly Effect&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://media01.smartcom.no/Microsite/start.aspx?eventid=4538"&gt;Robert C. Martin - Clean Practice: Agility and Craftsmanship&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All in all, if you're in or around Europe, do stop by NDC next year. I've done it two years in a row and it's been a blast each time. It's a very smart, agile conference. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;Their website is borked right now and has an &amp;quot;off by 1&amp;quot; error for the &lt;strong&gt;Day 1 Talks&lt;/strong&gt;. The &amp;quot;watch movie&amp;quot; links are all shifted. Pick the talk you want, but CLICK the talk above it, wrapping to the left. I'm sure they'll fix it in a few hours.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;strong&gt;Second Note: &lt;/strong&gt;I am just reporting the news here, so don't get mad at me. I haven't been able to get the videos to work on any browser EXCEPT Internet Explorer. They don't seem to work on either Firefox or Chrome. Again, not my thing, and yes, it sucks. It's probably a result of whatever company they selected to do their video, not due to some global Microsoft evil plot to be mean to you personally. Smooches. YES, we will ask them to make downloadable versions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KfdOyP-ZizYeZfFp3gJ3Czaquis/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KfdOyP-ZizYeZfFp3gJ3Czaquis/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KfdOyP-ZizYeZfFp3gJ3Czaquis/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KfdOyP-ZizYeZfFp3gJ3Czaquis/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=LHZHpCA8ZvU:Cx2V0Ebgj_8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=LHZHpCA8ZvU:Cx2V0Ebgj_8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=LHZHpCA8ZvU:Cx2V0Ebgj_8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=LHZHpCA8ZvU:Cx2V0Ebgj_8:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/LHZHpCA8ZvU" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=758bdced-2c14-452f-9b3e-686210ef936f</comments>
      <category>ASP.NET</category>
      <category>ASP.NET Ajax</category>
      <category>ASP.NET MVC</category>
      <category>Podcast</category>
      <category>Screencasts</category>
      <category>Speaking</category>
    <feedburner:origLink>http://www.hanselman.com/blog/VideosFromTheNorwegianDevelopersConference.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</wfw:commentRss>
      <title>Hanselminutes Podcast 167 - Convention Over Configuration with Jeremy Miller</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/OCjzpiojqlg/HanselminutesPodcast167ConventionOverConfigurationWithJeremyMiller.aspx</link>
      <pubDate>Wed, 01 Jul 2009 00:21:02 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px 10px; display: inline; border-top: 0px; border-right: 0px" title="jeremymiller" border="0" alt="jeremymiller" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast167ConventionOverCon_F3B8/jeremymiller_3.jpg" width="184" height="244" /&gt; My &lt;a href="http://www.hanselminutes.com/default.aspx?showID=185"&gt;one-hundred-and-sixty-seventh podcast is up&lt;/a&gt;. Scott's Norway interviews continue this week, this time with Jeremy Miller, author of Structure Map. Scott and Jeremy chat about fluent interfaces, Convention Over Configuration and how to best simplify your systems.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://twitter.com/Jeremydmiller"&gt;Jeremy Miller on Twitter&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/"&gt;Jeremy Miller's blog&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Subscribe: &lt;/strong&gt;&lt;a href="http://feeds.feedburner.com/Hanselminutes"&gt;&lt;img border="0" alt="Subscribe to Hanselminutes" src="http://www.hanselman.com/blog/content/binary/feed_2Dicon_2D16x16.png" /&gt;&lt;/a&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117488860"&gt;&lt;img border="0" alt="Subscribe to my Podcast in iTunes" src="http://www.hanselman.com/blog/themes/zenGarden2/itunes_subscribe.gif" /&gt;&lt;/a&gt; &lt;a href="zune://subscribe/?Hanselminutes=http://feeds.feedburner.com/HanselminutesCompleteMp3"&gt;&lt;img src="http://www.hanselman.com/blog/images/zunepodcast.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Download: &lt;/strong&gt;&lt;a href="http://perseus.franklins.net/hanselminutes_0167.mp3"&gt;MP3 Full Show #167&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Play &lt;/strong&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=185"&gt;in your browser&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Do also &lt;a href="http://www.hanselminutes.com/archives.aspx"&gt;remember the complete archives&lt;/a&gt; are always up and they have&lt;strong&gt;&lt;em&gt;PDF Transcripts&lt;/em&gt;&lt;/strong&gt;, a little known feature that show up a few weeks after each show.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;Telerik&lt;/strong&gt;&lt;/a&gt; is a sponsor for this show!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;img border="0" align="left" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast51StaticCodeAnalysis_140AB/telerikLogo%5B1%5D%5B8%5D.gif" width="216" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET and Windows Forms. Enjoy the versatility of our new-generation Reporting Tool. Dive into our online community. Visit &lt;/strong&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;strong&gt;www.telerik.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;As I've said before this show comes to you with the audio expertise and stewardship of &lt;a href="http://weblogs.asp.net/cfranklin/archive/2006/01/11/435036.aspx"&gt;Carl Franklin&lt;/a&gt;. The name comes from &lt;a href="http://www.paraesthesia.com/blog/comments.php?id=776_0_1_0_C"&gt;Travis Illig&lt;/a&gt;, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)&lt;/p&gt;  &lt;p&gt;Enjoy. Who knows what'll happen in the next show?&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NMw3N-cOzLQeMKHKHFQ3nNVCDgI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NMw3N-cOzLQeMKHKHFQ3nNVCDgI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NMw3N-cOzLQeMKHKHFQ3nNVCDgI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NMw3N-cOzLQeMKHKHFQ3nNVCDgI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=OCjzpiojqlg:vYgpy08qk8g:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=OCjzpiojqlg:vYgpy08qk8g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=OCjzpiojqlg:vYgpy08qk8g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=OCjzpiojqlg:vYgpy08qk8g:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/OCjzpiojqlg" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=6f29ee9f-3871-451e-8d4d-08c15f124469</comments>
      <category>Agile</category>
      <category>Podcast</category>
    <feedburner:origLink>http://www.hanselman.com/blog/HanselminutesPodcast167ConventionOverConfigurationWithJeremyMiller.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</wfw:commentRss>
      <slash:comments>21</slash:comments>
      <title>Twitter: Let the Information Wash Over You</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/rRjIbVaN8EI/TwitterLetTheInformationWashOverYou.aspx</link>
      <pubDate>Mon, 29 Jun 2009 20:13:34 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="twitter-duck-01a" border="0" alt="twitter-duck-01a" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/TwitterLettheInformationWashOverYou_A82C/twitter-duck-01a_3.jpg" width="204" height="244" /&gt;There's a lot of information, both useless and useful, on Twitter. When you get started on Twitter the shear amount of crap can be totally overwhelming. &lt;/p&gt;  &lt;p&gt;Twitter's a lot like Tivo (Digital Video Recorders). It'll record everything and everyone you're interested in, and while this seems like a great idea, just like your Video Recorder, what was once a joy quickly becomes a chore. I've got dozens of shows on my recorder...I thought TV was supposed to be fun, &lt;strong&gt;now it's become a To-Do List&lt;/strong&gt;. The same thing happens with Twitter. If you expect Twitter to be high signal and low noise, it's not the medium for you. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;If you make Twitter into another list of crap to read, you will be sad. The sooner you realize that Twitter is just a list of crap, the happier you'll be.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Just let it flow over you like water on a duck's back. When you follow someone on Twitter, you're following the whole person. You might find out where &lt;a href="http://www.twitter.com/levarburton"&gt;@levarburton&lt;/a&gt; went to lunch that day. You might see pictures of &lt;a href="http://www.twitter.com/shanselman"&gt;me&lt;/a&gt; taking my kids to see Thomas the Tank Engine. You may see &lt;a href="http://www.twitter.com/realbillymays"&gt;@BillyMays (RIP) last tweet&lt;/a&gt; as he gets off a plane. You can get &lt;a href="http://twitter.com/cnn"&gt;news and opinions&lt;/a&gt;, &lt;a href="http://twitter.com/jkrums/status/1121915133"&gt;pictures of planes in the Hudson&lt;/a&gt;, and find out where famous folks use the toilet. Truly thrilling.&lt;/p&gt;  &lt;p&gt;Twitter is a lifestream and just as you'll miss stuff in life, you need to accept you'll miss stuff on Twitter. &lt;/p&gt;  &lt;p&gt;Sometimes people will &amp;quot;unfollow&amp;quot; you (or me) and they'll tweet why. I have had a lot of people unfollow me because there's &amp;quot;not enough .NET content&amp;quot; in my tweets. &lt;/p&gt;  &lt;p&gt;However, as &lt;a href="http://www.twitter.com/unclebobmartin"&gt;@unclebobmartin&lt;/a&gt; says: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Twitter is not a single topic medium. If you follow someone you follow the whole person.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This statement might seem obvious, but it's not obvious to everyone. Uncle Bob and I don't agree on politics. That doesn't mean I'm going to unfollow him. I'm also not following him because I think I'll miss some deep insight on Software Architecture. I follow Uncle Bob because I &lt;em&gt;like Uncle Bob. &lt;/em&gt;He is a full and complete person and he's interesting. When he stops being interesting, well...let's just hope for his sake, he stays interesting. ;)&lt;/p&gt;  &lt;p&gt;I use a few tricks with Twitter to stay on to of things &lt;em&gt;without them becoming stressful. &lt;/em&gt;That's the key. If Twitter stops being fun, consider Quitting Twitter rather than following everyone.&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;Twitter Rule #1 - Follow Liberally &lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;Twitter without People isn't Fun. I'll use me as an example, because I'm on Twitter, but note that I'm not the point, just an example. &lt;/p&gt;  &lt;p&gt;Sometimes someone will tweet that I've (personally) &amp;quot;filled their twitter timeline.&amp;quot; Then I'll take a look at their Twitter account and notice that they are following maybe 7 people. Usually something like 6 friends, the me. This would be like going to a cocktail party with, well, 6 of your friends, and me. That would be obnoxious, or rather, _I_ would be obnoxious. No one would want to go to that party, it would be lame.&lt;/p&gt;  &lt;p&gt;To have a real cocktail party, you need a lot more people. Forgive me as I quote myself (ya, I know):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;It's a river of &lt;/em&gt;&lt;a href="http://www.hanselman.com/blog/TwitterTheUselessfulnessOfMicroblogging.aspx"&gt;&lt;em&gt;uselessfulness&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and truthiness. &lt;strong&gt;It's a permanent cocktail party where you know some folks, and don't know others.&lt;/strong&gt; Some are famous, some are your friends. There's a the constant background of overheard conversations, &lt;strong&gt;except on Twitter, it's socially acceptable, nay, encouraged, to jump in.&lt;/strong&gt; No need to say, &amp;quot;oh, I couldn't help but overhear, excuse me but...&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To really get something out of Twitter you need to follow at LEAST a hundred people of various backgrounds. Really mix it up. If you're really into just .NET and only want to see .NET tweets, I'll talk about how you can filter in a second. &lt;/p&gt;  &lt;p&gt;Still, take a moment and drink this in. &lt;strong&gt;Follow liberally&lt;/strong&gt;. You're following people, not topic experts. They'll tweet jokes and stupid stuff as often as they'll tweet code and useful tips. You'll need to follow a large swatch of people in order to get a wide and diverse experience on Twitter. &lt;/p&gt;  &lt;p&gt;Some folks say that they can't find anyone interesting to follow. This is nonsense. Here's a tip. Find ONE interesting person, and see who THEY follow. Rinse, repeat. I've found 1000 interesting people this year. Turns out the world is full of them, and 0.1% of them are on Twitter.&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;Twitter Rule #2 - Use Search Effectively&lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://search.twitter.com"&gt;Search is integrated into Twitter's website&lt;/a&gt; now, when it wasn't before, so that's useful, but I'm still surprised how few people notice that little search box. Make sure when you select a Twitter client that you select on that supports &lt;strong&gt;Search Columns.&lt;/strong&gt; This is how you find info on topics when you're not necessarily interested in particular people. &lt;/p&gt;  &lt;p&gt;For example, if you don't want to follow me, but you want to listen to conversations on ASP.NET MVC, make a search column with &amp;quot;ASP.NET MVC&amp;quot; in it. &lt;/p&gt;  &lt;p&gt;I recommend these Twitter clients that effectively support search:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.tweetdeck.com"&gt;&lt;strong&gt;TweetDeck&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;- The original &amp;quot;deck&amp;quot; full screen client. The first thing you need to do after you install is go to the settings and turn off the &amp;quot;All Friends&amp;quot; notification as it'll drive you insane. The second thing is to setup some columns for topics you're interested in. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sobees.com/bdule"&gt;&lt;strong&gt;bDule&lt;/strong&gt;&lt;/a&gt; - A very nice client for Windows with a lot of of flexibility in how you can layout the columns. It also supports Facebook comments and likes. &lt;/li&gt;    &lt;li&gt;&lt;a href="https://destroytwitter.com/"&gt;&lt;strong&gt;DestroyTwitter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;- The new kid on the block, it's very minimalist in style but supports many themes. It can be small and thin or be like TweetDeck and have columns. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/TwitterLettheInformationWashOverYou_A82C/TweetDeck%20(2)_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 5px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TweetDeck (2)" border="0" alt="TweetDeck (2)" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/TwitterLettheInformationWashOverYou_A82C/TweetDeck%20(2)_thumb.png" width="480" height="298" /&gt;&lt;/a&gt;I have columns in TweetDeck for Friends, Replies, Direct Messages, a search for &amp;quot;hanselman OR hansleman&amp;quot;, a search for &amp;quot;Win7&amp;quot;, a search for &amp;quot;asp.net&amp;quot;, a search for &amp;quot;mvc,&amp;quot; and a search for &amp;quot;diabetes.&amp;quot; I also add searches for topics that I may find interesting that day or week, but then I'll delete them later. I had a Michael Jackson search for a few days, as an example.&lt;/p&gt;  &lt;p&gt;Point is, make sure your Twitter Client supports search. Otherwise it's useless.&lt;/p&gt;  &lt;h3&gt;Twitter Rule/Tip #2a - Groups&lt;/h3&gt;  &lt;p&gt;Another way you can segment things is to use Groups. TweetDeck lets you put, for example, all your .NET people in one group and all your diabetics in another. This forces you to break up your party and assign labels to folks, but &lt;strong&gt;it's your party&lt;/strong&gt;. That's another good thing to remember.&lt;/p&gt;  &lt;h3&gt;&lt;em&gt;Twitter Rule #3 - Favorites as &amp;quot;Read Later&amp;quot;&lt;/em&gt;&lt;/h3&gt;  &lt;p&gt;When things are moving fast you often need a &amp;quot;read stuff later&amp;quot; button. While there is a service called &lt;a href="http://www.instapaper.com/"&gt;Instapaper&lt;/a&gt; that is &lt;em&gt;starting &lt;/em&gt;to get integration inside of some Twitter clients, it hardly has the broad support of a &lt;a href="http://www.twitpic.com"&gt;TwitPic&lt;/a&gt; or other 3rd party tool.&lt;/p&gt;  &lt;p&gt;To solve this, I use &amp;quot;favorites&amp;quot; as my &amp;quot;read later.&amp;quot; That means if I'm on my phone or my desktop and someone tweets something interesting or a link I don't have time to follow, I favorite it, then I came back later to read it. This simple technique has made things a little calmer for me when there's tweets coming in faster than I can read them. I just hit the little &amp;quot;star&amp;quot; icon in my twitter client that every client supports and I'll get to it later.&lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;So, if you want to follow the Whole Person, &lt;a href="http://www.twitter.com/shanselman"&gt;&lt;strong&gt;follow me on Twitter&lt;/strong&gt;&lt;/a&gt;. If not, just hang out on the blog, there's no hard feelings. :)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Also, consider reading my post on &lt;/strong&gt;&lt;a href="http://www.hanselman.com/blog/HowToTwitterFirstStepsAndATwitterGlossary.aspx"&gt;&lt;strong&gt;How To Twitter - First Steps and a Twitter Glossary&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;*Twitter Duck Image courtesy of &lt;strong&gt;&lt;a href="http://www.gnurf.net/v3/"&gt;Paul Söderholm&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sMtaWK_0NJapKAfXeicWBvB9veU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sMtaWK_0NJapKAfXeicWBvB9veU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sMtaWK_0NJapKAfXeicWBvB9veU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sMtaWK_0NJapKAfXeicWBvB9veU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=rRjIbVaN8EI:amahJHtXfuE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=rRjIbVaN8EI:amahJHtXfuE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=rRjIbVaN8EI:amahJHtXfuE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=rRjIbVaN8EI:amahJHtXfuE:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/rRjIbVaN8EI" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=d38c7b4c-e2c0-4a9d-8d68-9a4bf2c1d8c7</comments>
      <category>Musings</category>
    <feedburner:origLink>http://www.hanselman.com/blog/TwitterLetTheInformationWashOverYou.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=af3b2920-acf0-4180-964f-8729f472cc31</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=af3b2920-acf0-4180-964f-8729f472cc31</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=af3b2920-acf0-4180-964f-8729f472cc31</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=af3b2920-acf0-4180-964f-8729f472cc31</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <title>The Weekly Source Code 43 - ASP.NET MVC and T4 and NerdDinner</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=af3b2920-acf0-4180-964f-8729f472cc31</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/q8KHpICJrfo/TheWeeklySourceCode43ASPNETMVCAndT4AndNerdDinner.aspx</link>
      <pubDate>Thu, 25 Jun 2009 22:38:59 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;UPDATE: &lt;/font&gt;&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/26/the-mvc-t4-template-is-now-up-on-codeplex-and-it-does-change-your-code-a-bit.aspx"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;David's put the T4 template with some nice updates on CodePlex&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; - It's the &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471"&gt;last download here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I really advocate folks reading as much source as they can because you become a better writer by reading as much as writing. That's the whole point of the &lt;a href="http://www.hanselman.com/blog/CategoryView.aspx?category=Source+Code"&gt;Weekly Source Code&lt;/a&gt; - reading code to be a better developer. &lt;/p&gt;  &lt;p&gt;Reading code in Open Source projects is a good way to learn, especially if the project has been around a while and been successful, or if you already respect the team of people working on it. Less reliably, you can find snippets of code by searching and sharing code. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/davidebb"&gt;David Ebbo is scary clever&lt;/a&gt;. You know someone is smart when they come up with something you don't think you yourself could come up with on your own, but you still kick yourself for not thinking of it in the first place.&lt;/p&gt;  &lt;p&gt;David's been experimenting with ways to make ASP.NET MVC better, specifically in the area of strongly-typed helpers. He's trying to get rid of strings, magic or otherwise. &lt;/p&gt;  &lt;p&gt;He &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/01/a-buildprovider-to-simplify-your-asp-net-mvc-action-links.aspx"&gt;started with a BuildProvider&lt;/a&gt; (not a lot of folks know about BuildProviders...it's a powerful secret.) David didn't like these kinds of links in ASP.NET MVC:&lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;%= Html.ActionLink(&amp;quot;Home&amp;quot;, &amp;quot;Index&amp;quot;, &amp;quot;Home&amp;quot;)%&amp;gt;&lt;/pre&gt;

&lt;p&gt;So his BuildProvider would get added to the web.config:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;buildProviders&amp;gt;&lt;br /&gt;  &amp;lt;add extension=&amp;quot;.actions&amp;quot; type=&amp;quot;MvcActionLinkHelper.MvcActionLinkBuildProvider&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/buildProviders&amp;gt;&lt;/pre&gt;

&lt;p&gt;And it would give you better methods like this, by poking around in your project and dynamically generating helper methods for you:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;%= Html.ActionLinkToHomeIndex(&amp;quot;Home&amp;quot;)%&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image_7" border="0" alt="image_7" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ASP.NETMVCandT4andNerdDinner_CC01/image_7_3.png" width="411" height="228" /&gt;Then, just days later, &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/04/a-t4-based-approach-to-creating-asp-net-mvc-strongly-typed-helpers.aspx"&gt;David got the T4 religion&lt;/a&gt; (&lt;a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx"&gt;I've argued we are doing a poor job of promoting this, so I'm telling everyone I know&lt;/a&gt;) and you should too. David explored the &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/03/codedom-vs-t4-two-approaches-to-code-generation.aspx"&gt;pros and cons of CodeDom vs. T4 for CodeGen&lt;/a&gt; then recreated &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/04/a-t4-based-approach-to-creating-asp-net-mvc-strongly-typed-helpers.aspx"&gt;his ASP.NET MVC Helpers using T4&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;He's enabling not only better ActionLinks, but also Action Url Helpers, Constants for View Names, and a very clever thing, helpers for View Models, courtesy of &lt;a href="http://twitter.com/davidfowl"&gt;David Fowler&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I thought this was particular cool, because it's a really visceral example of what you can do with Code Generation when you start exploring what you know at compile time with what you wish you knew at Design Time. It also reminds us that it's more than just Compile/Test/Run - your projects become more &amp;quot;meta&amp;quot; when you've got Inspect/CodeGen/Compile/Test/Run.&lt;/p&gt;

&lt;p&gt;For example, if you have a ViewModel that say, has a string, rather than:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;label for=&amp;quot;Name&amp;quot;&amp;gt;Name:&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;lt;%= Html.TextBox(&amp;quot;Name&amp;quot;, Model.Name) %&amp;gt;&lt;br /&gt;&amp;lt;%= Html.ValidationMessage(&amp;quot;Name&amp;quot;, &amp;quot;*&amp;quot;) %&amp;gt;&lt;/pre&gt;

&lt;p&gt;Why not this instead:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;%= ViewModel.Name.Label() %&amp;gt;&lt;br /&gt;&amp;lt;%= ViewModel.Name.TextBox() %&amp;gt;&lt;br /&gt;&amp;lt;%= ViewModel.Name.Validation() %&amp;gt;&lt;/pre&gt;

&lt;p&gt;This ViewModel stuff is in the earlier CodeDom templates, but not (yet?) the T4 templates. I hope we see it again, don't you? What do you think, Dear Reader, of this approach vs. the &amp;quot;&lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/06/09/opinionated-input-builders-for-asp-net-mvc-using-partials-part-i.aspx"&gt;Opinionated Input Builder&lt;/a&gt;&amp;quot; approach?&lt;/p&gt;

&lt;p&gt;Just &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/17/a-new-and-improved-asp-net-mvc-t4-template.aspx"&gt;recently David put out his &amp;quot;new and improved&amp;quot; MVC T4 template&lt;/a&gt;, which is the one you should check out. I'm gently pushing him to put it on CodePlex somewhere and bake this goodness in. (Go &lt;a href="http://blogs.msdn.com/davidebb/contact.aspx"&gt;tell him&lt;/a&gt; and &lt;a href="http://www.haacked.com"&gt;Phil&lt;/a&gt;!) &lt;/p&gt;

&lt;p&gt;He was doing &lt;em&gt;some &lt;/em&gt;stuff at runtime, but has since moved to a pure design-time approach.&lt;/p&gt;

&lt;h3&gt;David Ebbo's ASP.NET MVC T4 Template applied to Nerd Dinner&lt;/h3&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image_d417b977-3d4c-4d3c-88e6-438b7a32582c" border="0" alt="image_d417b977-3d4c-4d3c-88e6-438b7a32582c" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/ASP.NETMVCandT4andNerdDinner_CC01/image_d417b977-3d4c-4d3c-88e6-438b7a32582c_3.png" width="186" height="96" /&gt; David took the &lt;a href="http://nerddinner.codeplex.com"&gt;NerdDinner app as his base&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/17/a-new-and-improved-asp-net-mvc-t4-template.aspx"&gt;installed his T4 template&lt;/a&gt;. Just drop it in, and magic gets generated. How does it work, though?&lt;/p&gt;

&lt;p&gt;Before he was using reflection but since this is a Design Time Code Generation process he had to delve into the *gasp* COM-based VS File Code Model API. However, this does really show off the power and flexibility of T4 itself. Kudos to David for looking COM in the face and not blinking!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go &lt;/strong&gt;&lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/17/a-new-and-improved-asp-net-mvc-t4-template.aspx"&gt;&lt;strong&gt;download his template&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; (&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/davidebb/attachment/9769641.ashx"&gt;&lt;strong&gt;direct ZIP here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;) and open it up.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;T4 files can be scary to view in a text editor as they are constantly switching between &amp;lt;% code blocks %&amp;gt; and the code that's being generated. I use Notepad2 to view them, using the (interestingly enough) XML Document option that gives me rudimentary syntax highlighting. &lt;/p&gt;

&lt;p&gt;If you're serious about T4, &lt;a href="http://www.visualt4.com/downloads.html#"&gt;go get the Visual T4 Community Edition&lt;/a&gt; from Clarius for half-way syntax highlighting, or pay for the Professional Edition. They'll register themselves with Visual Studio and give you a better experience than just all-black text.&lt;/p&gt;

&lt;p&gt;The first line in David's T4 template that made me chuckle was the the first line that's executed:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;# PrepareDataToRender(this); #&amp;gt;&lt;/pre&gt;

&lt;p&gt;As they say, it's funny because it's true. This is typical of code generation templates of all kinds. It's the &amp;quot;DoIt()&amp;quot; method that takes the left-hand's code (the COM crap) and prepares it for the right-hand (the template itself). &lt;/p&gt;

&lt;p&gt;In order for David to make his template tidy and enable this nice clean level of abstraction:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;&amp;lt;#  foreach (var controller in Controllers.Where(c=&amp;gt;c.IsPartialClass)) { #&amp;gt;&lt;br /&gt;namespace &amp;lt;#= controller.Namespace #&amp;gt; {&lt;br /&gt;    public partial class &amp;lt;#= controller.ClassName #&amp;gt; {&lt;br /&gt;        protected RedirectToRouteResult RedirectToAction(ControllerActionCallInfo callInfo) {&lt;br /&gt;            return RedirectToAction(callInfo.Action, callInfo.Controller, callInfo.RouteValues);&lt;br /&gt;        }&lt;br /&gt;...snip...&lt;/pre&gt;

&lt;p&gt;...he has to prepare an object model, and that's what PrepareDataToRender does. It's funny also because it's buried at the end, as it should be. It's really a pleasure to read and does a LOT considering it's only a 415 line template.&lt;/p&gt;

&lt;p&gt;He has a number of cute gems like this one-line helper function that combines a little COM a little LINQ and a little magic to a list of methods to his template using the Visual Studio API. I laughed at the &amp;quot;functionFunction&amp;quot; enum. &amp;quot;Do you like her? or do you like her like her?&amp;quot;&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;// Return all the CodeFunction2 in the CodeElements collection&lt;br /&gt;public static IEnumerable&amp;lt;CodeFunction2&amp;gt; GetMethods(CodeClass2 codeClass) {&lt;br /&gt;    // Only look at regular method (e.g. ignore things like contructors)&lt;br /&gt;    return codeClass.Members.OfType&amp;lt;CodeFunction2&amp;gt;()&lt;br /&gt;        .Where(f =&amp;gt; f.FunctionKind == vsCMFunction.vsCMFunctionFunction);&lt;br /&gt;}&lt;/pre&gt;

&lt;p&gt;David is clearly deep into this exploration right now, and is &lt;a href="http://blogs.msdn.com/davidebb/archive/2009/06/24/mind-if-my-mvc-t4-template-changes-your-code-a-bit.aspx"&gt;asking your opinion&lt;/a&gt; about the design. I would encourage you to flood him with feedback, or leave it hear and I'll tell him. ;)&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YgHx-y6LDMFElvhjt4e_J9zmQTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YgHx-y6LDMFElvhjt4e_J9zmQTo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YgHx-y6LDMFElvhjt4e_J9zmQTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YgHx-y6LDMFElvhjt4e_J9zmQTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=q8KHpICJrfo:L1UAV-oyDv8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=q8KHpICJrfo:L1UAV-oyDv8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=q8KHpICJrfo:L1UAV-oyDv8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=q8KHpICJrfo:L1UAV-oyDv8:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/q8KHpICJrfo" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=af3b2920-acf0-4180-964f-8729f472cc31</comments>
      <category>ASP.NET</category>
      <category>ASP.NET MVC</category>
      <category>NerdDinner</category>
      <category>Source Code</category>
    <feedburner:origLink>http://www.hanselman.com/blog/TheWeeklySourceCode43ASPNETMVCAndT4AndNerdDinner.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</wfw:commentRss>
      <slash:comments>14</slash:comments>
      <title>The HaaHa Show visits .NET Rocks</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/86F9OHqk5dE/TheHaaHaShowVisitsNETRocks.aspx</link>
      <pubDate>Thu, 25 Jun 2009 21:26:45 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/grothaug/3639851758/in/set-72157619854994646/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="3639851758_a6e4536564" border="0" alt="3639851758_a6e4536564" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/TheHaaHaShowon.NETRocks_C97B/3639851758_a6e4536564_3.jpg" width="427" height="285" /&gt;&lt;/a&gt; While in Norway last week, &lt;a href="http://www.haacked.com"&gt;Phil Haack&lt;/a&gt; and I were lucky enough to do a &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=458"&gt;LIVE taping with Carl Franklin and Richard Campbell of .NET Rocks&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;Hopefully the energy of the room is appropriately captured in the audio recording, because it was a hoot. The whole room was cracking up. It's always a joy to hang with Carl and Richard. Phil, less so. (Kidding!)&lt;/p&gt;  &lt;p&gt;A small warning, though, this show may be entirely content-free, and while I can't exactly remember (We were all tired from presenting and likely hopped up on Pepsi Max) they may have been some coarse language.&lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=458"&gt;listen to the show here&lt;/a&gt;. There's a number of formats available, including but not limited to, &lt;a href="http://perseus.franklins.net/dotnetrocks_0458_hanselmam_haack.mp3"&gt;MP3&lt;/a&gt; and &lt;a href="http://perseus.franklins.net/dotnetrocks_0458_hanselmam_haack.wma"&gt;WMA&lt;/a&gt;. If you want to subscribe, there's now a &lt;a href="http://www.pwop.com/feed.aspx?show=dotnetrocks&amp;amp;filetype=master"&gt;complete &amp;quot;master feed&amp;quot; of all .NET Rocks shows&lt;/a&gt; so you can get them all in one go if you like.&lt;/p&gt;  &lt;p&gt;There's also a &lt;a href="http://feeds.feedburner.com/HanselminutesCompleteMP3"&gt;master feed of all Hanselminutes shows&lt;/a&gt; as well, by the way. Enjoy!&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Br7o0-RN6mqvpBqQ8AQC3oa7JuU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Br7o0-RN6mqvpBqQ8AQC3oa7JuU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Br7o0-RN6mqvpBqQ8AQC3oa7JuU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Br7o0-RN6mqvpBqQ8AQC3oa7JuU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=86F9OHqk5dE:63rASvaCxCI:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=86F9OHqk5dE:63rASvaCxCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=86F9OHqk5dE:63rASvaCxCI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=86F9OHqk5dE:63rASvaCxCI:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/86F9OHqk5dE" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=1e5e3faa-f40a-4c76-ae1f-dd9a1c63f375</comments>
      <category>Podcast</category>
    <feedburner:origLink>http://www.hanselman.com/blog/TheHaaHaShowVisitsNETRocks.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>Hanselminutes Podcast 166 - Windows Presentation Foundation explained by Ian Griffiths</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/xAmpwtqAJ_A/HanselminutesPodcast166WindowsPresentationFoundationExplainedByIanGriffiths.aspx</link>
      <pubDate>Wed, 24 Jun 2009 23:03:21 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0596510373?ie=UTF8&amp;amp;tag=diabeticbooks&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596510373"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px 10px; display: inline; border-top: 0px; border-right: 0px" title="51DF0boY5fL" border="0" alt="51DF0boY5fL" align="right" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/7ed70a2a4225_E070/51DF0boY5fL_3.jpg" width="248" height="324" /&gt;&lt;/a&gt; My &lt;a href="http://www.hanselminutes.com/default.aspx?showID=184"&gt;one-hundred-and-sixty-sixth podcast is up&lt;/a&gt;. Scott chats with &lt;strong&gt;Ian Griffiths &lt;/strong&gt;about &lt;strong&gt;Windows Presentation Foundation (WPF)&lt;/strong&gt;. Why is it so hard to master? What techniques should the WinForms developer learn first? Scott's working on a side project, and he and Ian brainstorm ways for Scott's application to use WPF more effectively.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://twitter.com/idg10"&gt;Ian Griffiths on Twitter&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.interact-sw.co.uk/iangblog/"&gt;Ian's Griffiths' blog&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Read: &lt;/strong&gt;&lt;a href="http://www.amazon.com/gp/product/0596510373?ie=UTF8&amp;amp;tag=diabeticbooks&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596510373"&gt;&lt;strong&gt;&lt;em&gt;Programming WPF&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; by Ian Griffiths and some other dude.&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Subscribe: &lt;/strong&gt;&lt;a href="http://feeds.feedburner.com/Hanselminutes"&gt;&lt;img border="0" alt="Subscribe to Hanselminutes" src="http://www.hanselman.com/blog/content/binary/feed_2Dicon_2D16x16.png" /&gt;&lt;/a&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117488860"&gt;&lt;img border="0" alt="Subscribe to my Podcast in iTunes" src="http://www.hanselman.com/blog/themes/zenGarden2/itunes_subscribe.gif" /&gt;&lt;/a&gt; &lt;a href="zune://subscribe/?Hanselminutes=http://feeds.feedburner.com/HanselminutesCompleteMp3"&gt;&lt;img src="http://www.hanselman.com/blog/images/zunepodcast.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Download: &lt;/strong&gt;&lt;a href="http://perseus.franklins.net/hanselminutes_0166.mp3"&gt;MP3 Full Show #166&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Play &lt;/strong&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=184"&gt;in your browser&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Do also &lt;a href="http://www.hanselminutes.com/archives.aspx"&gt;remember the complete archives&lt;/a&gt; are always up and they have &lt;strong&gt;&lt;em&gt;PDF Transcripts&lt;/em&gt;&lt;/strong&gt;, a little known feature that show up a few weeks after each show.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;Telerik&lt;/strong&gt;&lt;/a&gt; is a sponsor for this show!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet/overview.aspx?gad=CPLKy9kDEghsdEbLXRZ0NBiF1bL_AyCCkdsU"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;img border="0" align="left" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/HanselminutesPodcast51StaticCodeAnalysis_140AB/telerikLogo%5B1%5D%5B8%5D.gif" width="216" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET and Windows Forms. Enjoy the versatility of our new-generation Reporting Tool. Dive into our online community. Visit &lt;/strong&gt;&lt;a href="http://www.telerik.com/?utm_source=DNR&amp;amp;utm_medium=Banner&amp;amp;utm_term=Telerik%2Bhome&amp;amp;utm_content=Telerik%2Bhome%2Bpage&amp;amp;utm_campaign=TelerikHome_October"&gt;&lt;strong&gt;www.telerik.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;As I've said before this show comes to you with the audio expertise and stewardship of &lt;a href="http://weblogs.asp.net/cfranklin/archive/2006/01/11/435036.aspx"&gt;Carl Franklin&lt;/a&gt;. The name comes from &lt;a href="http://www.paraesthesia.com/blog/comments.php?id=776_0_1_0_C"&gt;Travis Illig&lt;/a&gt;, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)&lt;/p&gt;  &lt;p&gt;Enjoy. Who knows what'll happen in the next show?&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7CTlzzEmraNKcMty2guEc0oZuz0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7CTlzzEmraNKcMty2guEc0oZuz0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7CTlzzEmraNKcMty2guEc0oZuz0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7CTlzzEmraNKcMty2guEc0oZuz0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=xAmpwtqAJ_A:jOuKE0BTTUg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=xAmpwtqAJ_A:jOuKE0BTTUg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=xAmpwtqAJ_A:jOuKE0BTTUg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=xAmpwtqAJ_A:jOuKE0BTTUg:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/xAmpwtqAJ_A" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=ab17945a-1bf6-418e-a04b-9625ce828d52</comments>
      <category>Podcast</category>
      <category>Windows Client</category>
      <category>WPF</category>
    <feedburner:origLink>http://www.hanselman.com/blog/HanselminutesPodcast166WindowsPresentationFoundationExplainedByIanGriffiths.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</wfw:commentRss>
      <slash:comments>22</slash:comments>
      <title>ASP.NET Ajax - Script Combining and moving ScriptResource.axd's to Static Scripts</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/nG0V4JLyakk/ASPNETAjaxScriptCombiningAndMovingScriptResourceaxdsToStaticScripts.aspx</link>
      <pubDate>Wed, 24 Jun 2009 00:10:34 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I've got a little something I'm doing and I wanted to take control over some scripts that were being added by ASP.NET WebForms. Remember that ASP.NET WebForms is designed around a control/component model, so you don't get 100% control over your markup. When you drag a control onto the page in WebForms, you expect it to work.&lt;/p&gt;  &lt;h3&gt;ScriptManager Basics&lt;/h3&gt;  &lt;p&gt;For example, if I'm going to do so stuff with GridView and an UpdatePanel, I might do this:&lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;/asp:ScriptManager&amp;gt;&lt;br /&gt;    &amp;lt;div&amp;gt;&lt;br /&gt;        &amp;lt;asp:TextBox ID=&amp;quot;TextBox1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;br /&gt;        &amp;lt;asp:GridView ID=&amp;quot;GridView1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;/asp:GridView&amp;gt;&lt;br /&gt;        &amp;lt;asp:UpdatePanel ID=&amp;quot;UpdatePanel1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;/asp:UpdatePanel&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;

&lt;p&gt;and this will cause some Web- and ScriptResources to be added to the generated HTML of my page, something like this:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;script src=&amp;quot;/DeAXDify/WebResource.axd?d=PCfzBUjexSI1EPk_vtRdNQ2&amp;amp;amp;t=633744471123074071&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;/DeAXDify/ScriptResource.axd?d=etBSwiV14lSQ0YmAEYFkRsEWCxZgNT44ZlBMp0-JG80D6vYrSWRwH-xgjsikUbq5SId1HBi_Zo1MRBZ--Iho5A2&amp;amp;amp;t=1761aa8f&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;/DeAXDify/ScriptResource.axd?d=bE4eu-edmPC46vr9rVnfMf9mfCPZTnGIf0q6atn-PYIKfP8ozKY5Z4Pi-DdAnk1npx7EwwImXVBzDROiOAqcLUA6puqXJtY7bGZhGfhtyYE1&amp;amp;amp;t=7e0d42b&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;/DeAXDify/ScriptResource.axd?d=bE4eu-edmPC46vr9rVnfMf9mfCPZTnGIf0q6atn-PYIKfP8ozKY5Z4Pi-DdAnk1nCbCYOVBrSuFHAPYGwMejt0DsS679fcg7mGy-c84x0Hk1&amp;amp;amp;t=7e0d42b&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/pre&gt;

&lt;p&gt;Basically, ScriptResource.axd?d=blob&amp;amp;t=timestamp...these are JavaScript files that you don't need to deploy as they live inside the assemblies. They are managed by the ScriptManager tag/control in my source above. &lt;/p&gt;

&lt;h3&gt;Overriding ScriptResource and Hosting Static JavaScript Files &lt;/h3&gt;

&lt;p&gt;However, I might want to put them in static files and manage them myself. I can override their paths like this:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;Scripts&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;WebForms.js&amp;quot; Assembly=&amp;quot;System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; Path=&amp;quot;~/1.js&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjaxWebForms.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; Path=&amp;quot;~/3.js&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjax.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; Path=&amp;quot;~/4.js&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;/Scripts&amp;gt;&lt;br /&gt;&amp;lt;/asp:ScriptManager&amp;gt;&lt;/pre&gt;

&lt;p&gt;This will give me HTML like this:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;script src=&amp;quot;/DeAXDify/ScriptResource.axd?d=etBSwiV14lSQ0YmAEYFkRsEWCxZgNT44ZlBMp0-JG80D6vYrSWRwH-xgjsikUbq5SId1HBi_Zo1MRBZ--Iho5A2&amp;amp;amp;t=1761aa8f&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;1.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;3.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;script src=&amp;quot;4.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;There's a few controls that don't use the ScriptManager, so they can't have their JavaScript suppressed. So far the Validators are the main culprits. I'm talking to the team and we'll see if we can't get that fixed in 4.0. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;NEW IN 4.0: &lt;/font&gt;&lt;font color="#000000"&gt;In 3.5 you also can't use the ScriptManager to suppress or set the path of WebResource.axd, but in 4.0 you will be able to by using ScriptReference. WebResource.axd is for non-Ajax scripts that use the Page.ClientScript.RegisterX APIs. It'll be nice to be able to use ScriptReference as the ScriptManager is smarter and gzip compresses as well. &lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;In .NET 4.0 using the ScriptManager to suppress both ScriptResource and WebResource will allow you to get your pages down to a single script. We're looking also at a CDN (Content Distribution Network) option to get that static script hosted elsewhere as well. I'll show Script Combining in a second.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The name=&amp;quot;&amp;quot; attribute has to line up with the name of the resource the script is stored in. I used Reflector to figure them out. There's a few like MicrosoftAjaxTimer.js, MicrosoftAjax.js, MicrosoftAjaxWebForms.js in System.Web.Extensions, and DetailsView.js, Focus.js, GridView.js, Menu.js, SmartNav.js, TreeView.js, WebForms.js, WebParts.js and WebUIValidation.js in System.Web.dll.&lt;/p&gt;

&lt;p&gt;Remember, these ARE NOT ALL NEEDED. You only want these on an as-needed basis. When a control needs one, it'll ask for it. Just do a view-source on your resulting HTML and take control of the ones you want.&lt;/p&gt;

&lt;h3&gt;ScriptCombining in 3.5 SP1&lt;/h3&gt;

&lt;p&gt;Now, if I want to combine those 3 scripts into one, I can do this:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;CompositeScript&amp;gt;&lt;br /&gt;        &amp;lt;Scripts&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;WebForms.js&amp;quot; Assembly=&amp;quot;System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjaxWebForms.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjax.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;/Scripts&amp;gt;&lt;br /&gt;    &amp;lt;/CompositeScript&amp;gt;&lt;br /&gt;&amp;lt;/asp:ScriptManager&amp;gt;&lt;/pre&gt;

&lt;p&gt;I've wrapped the scripts in a CompositeScript control and I get a single GZipped automatically combined script. I'll save that combined script away and host it at http://www.example.com/1.js statically. Now, I'll add the path attribute:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;CompositeScript Path=&amp;quot;http://www.example.com/1.js&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;Scripts&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;WebForms.js&amp;quot; Assembly=&amp;quot;System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjaxWebForms.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;asp:ScriptReference Name=&amp;quot;MicrosoftAjax.js&amp;quot; Assembly=&amp;quot;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;/Scripts&amp;gt;&lt;br /&gt;    &amp;lt;/CompositeScript&amp;gt;&lt;br /&gt;&amp;lt;/asp:ScriptManager&amp;gt;&lt;/pre&gt;

&lt;p&gt;While not a direct feature of .NET 3.5, I'm able to greatly reduce the number of scripts and take control using a few simple techniques. &lt;/p&gt;

&lt;h3&gt;ScriptManager and CDNs in .NET 4.0&lt;/h3&gt;

&lt;p&gt;In .NET 4.0 we're trying to make this more formal and possibly get the page down to a single script that's hostable on a CDN. That will probably look something like this. Just enable CDN (Content Delivery Network) and all your ASP.NET Ajax scripts will come from a CDN that you can configure in global.asax once: &lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;asp:ScriptManager runat=&amp;quot;server&amp;quot; EnableCdn=&amp;quot;true&amp;quot;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;Pretty slick, and nicer than my hacks. For 4.0, the goal is for this to work with ScriptResource AND WebResource making your scripts quite tidy.&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I4Auob_g-yA__fzvjzeXoSXeVa4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4Auob_g-yA__fzvjzeXoSXeVa4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I4Auob_g-yA__fzvjzeXoSXeVa4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4Auob_g-yA__fzvjzeXoSXeVa4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nG0V4JLyakk:i1Uq1H3_ZGA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nG0V4JLyakk:i1Uq1H3_ZGA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=nG0V4JLyakk:i1Uq1H3_ZGA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=nG0V4JLyakk:i1Uq1H3_ZGA:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/nG0V4JLyakk" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=ab6db6da-1469-4f64-9364-a0d5ed14a2a2</comments>
      <category>ASP.NET</category>
      <category>ASP.NET Ajax</category>
      <category>Javascript</category>
    <feedburner:origLink>http://www.hanselman.com/blog/ASPNETAjaxScriptCombiningAndMovingScriptResourceaxdsToStaticScripts.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <title>These are the little bugs that lead to madness</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/FcHWf7eH18Q/TheseAreTheLittleBugsThatLeadToMadness.aspx</link>
      <pubDate>Tue, 23 Jun 2009 20:27:28 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;I received an interesting email today where a fellow was trying to make sure that all browsers could successfully download his company's MSI installer. He had found a &lt;a href="http://www.hanselman.com/blog/TheContentDispositionSagaControllingTheSuggestedFileNameInTheBrowsersSaveAsDialog.aspx"&gt;blog post that I wrote SIX YEARS AGO&lt;/a&gt; on the Content-Disposition header and some trouble I'd had with Check Images. Just in case you're not clear, 6 years is like a century years on the internet.&lt;/p&gt;  &lt;p&gt;Here's a little snippet from my incredibly old blog post:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;HTTP Headers are name values pairs, so they are easily added with the Response object in ASP or ASP.NET You use it like this (the HTTP Headers):&lt;/p&gt;    &lt;p&gt;HTTP/1.1 200 OK     &lt;br /&gt;&amp;lt;snip&amp;gt;      &lt;br /&gt;&lt;strong&gt;Content-Disposition: filename=checkimage.jpg       &lt;br /&gt;&lt;/strong&gt;Content-Length: 76127      &lt;br /&gt;Content-Type: image/JPEG&lt;/p&gt;    &lt;p&gt;Or, if you want to immediately prompt the user with a File Download Box: &lt;/p&gt;    &lt;p&gt;HTTP/1.1 200 OK     &lt;br /&gt;&amp;lt;snip&amp;gt;      &lt;br /&gt;&lt;strong&gt;Content-Disposition: attachment; filename=checkimage.jpg       &lt;br /&gt;&lt;/strong&gt;Content-Length: 76127      &lt;br /&gt;Content-Type: image/JPEG&lt;/p&gt;    &lt;p&gt;However, Internet Explorer has never really got it right. &lt;/p&gt;    &lt;p&gt;Here's a list of gotchas, starting with my own:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;On IE 6.0, things mostly work, but if you ALSO setup Cache-Control: no-cache, your suggested filename (and type!) will be IGNORED.&amp;#160; A bummer if you have to choose between security and convienence.&amp;#160; Of course, security wins. &lt;/li&gt;      &lt;li&gt;On IE 4, the attachment option is flaky, see &lt;a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q182/3/15.asp&amp;amp;NoWebContent=1"&gt;Q182315&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;On IE 5.5, the attachment option is REALLY flaky, see &lt;a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q267/9/91.ASP&amp;amp;NoWebContent=1"&gt;Q267991&lt;/a&gt; and &lt;a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q279/6/67.ASP&amp;amp;NoWebContent=1"&gt;Q279667&lt;/a&gt; and &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;281119"&gt;Q281119&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;On IE 5.0, the filename suggested can mangle your filenames, see &lt;a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q262/0/42.ASP&amp;amp;NoWebContent=1"&gt;Q262042&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;On nearly all versions of IE, including 6.0, sometimes the browser will use the filename in the address bar instead of the Content-Disposition Header, and with IE5.5SP2 you're expected to change the &lt;strong&gt;UseCDFileName &lt;/strong&gt;registry key, see &lt;a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q303/7/50.ASP&amp;amp;NoWebContent=1"&gt;Q303750&lt;/a&gt;.&amp;#160; This was fixed with IE6.0SP1.&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;IE's not the only browser with past trouble around this header, but it's been the worst historically. Last year, IE8 made a good move forward when it proposed (during the beta cycle) an &amp;quot;authoritative=true&amp;quot; addition to the Content-Type HTTP header. This would be a way for your server to basically &lt;em&gt;insist&lt;/em&gt; that the Content-Type it offered was the correct one. Seems reasonable, like it should have always been that way, eh?&lt;/p&gt;  &lt;p&gt;Here's an example on how we'd (under this &lt;strong&gt;OLD&lt;/strong&gt; proposal) force an HTML page to be delivered and rendered as plaintext. &lt;a href="http://intertwingly.net/blog/2008/07/02/authoritative-true"&gt;Sam Ruby thought it was a good idea as well&lt;/a&gt; as sniffing, &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/#content-type-sniffing"&gt;while inside the HTML5 spec&lt;/a&gt;, is generally considered a bad idea.&lt;/p&gt;  &lt;pre&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Length: 108&lt;br /&gt;Date: Thu, 26 Jun 2008 22:06:28 GMT&lt;br /&gt;Content-Type: text/plain; authoritative=true;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body bgcolor=&amp;quot;#AA0000&amp;quot;&amp;gt;&lt;br /&gt;This page renders as HTML source code (text) in IE8.&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;Unfortunately &lt;a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx"&gt;this blog post&lt;/a&gt; was never updated. &lt;strong&gt;EricL&lt;/strong&gt; (author of &lt;a href="http://www.fiddler2.com"&gt;Fiddler&lt;/a&gt; and very nice person) wrote it, and he'll know I'm not picking on him personally, as this is a huge problem on &lt;strong&gt;all blogs, mine included.&lt;/strong&gt; It's really hard to update old posts when they are obsolete. It's a manual process and all we as bloggers can do is our best to update our old posts with pointers to new information. &lt;/p&gt;

&lt;p&gt;Two months later, &lt;a href="http://blogs.msdn.com/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx"&gt;this post came out&lt;/a&gt; and the final design that was agreed on with community feedback looked like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;Over the past two months, we’ve received significant community feedback that using a new attribute on the Content-Type header would create a deployment headache for server operators. To that end, we have converted this option into a full-fledged HTTP response header.&amp;#160; Sending the new &lt;b&gt;X-Content-Type-Options &lt;/b&gt;response header with the value &lt;b&gt;nosniff&lt;/b&gt; will prevent Internet Explorer from MIME-sniffing a response away from the declared content-type.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, given the following HTTP-response:&lt;/p&gt;

&lt;pre&gt;HTTP/1.1 200 OK &lt;br /&gt;Content-Length: 108 &lt;br /&gt;Date: Thu, 26 Jun 2008 22:06:28 GMT &lt;br /&gt;Content-Type: text/plain; &lt;br /&gt;X-Content-Type-Options: nosniff&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;body bgcolor=&amp;quot;#AA0000&amp;quot;&amp;gt; &lt;br /&gt;This page renders as HTML source code (text) in IE8. &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;I'd like &lt;strong&gt;this &lt;/strong&gt;post to serve as a reminder to all of us who are blogging technical content to update our posts if and when appropriate, and certainly when a reader points out errata. As the gent who emailed me so wisely put it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;h3&gt;&amp;quot;These are the little bugs that lead to madness.&amp;quot; &lt;/h3&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thoughts?&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o14HDiYbCCLDKmfZbeWUOw1lC_Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o14HDiYbCCLDKmfZbeWUOw1lC_Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o14HDiYbCCLDKmfZbeWUOw1lC_Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o14HDiYbCCLDKmfZbeWUOw1lC_Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=FcHWf7eH18Q:wb4dbZ1VLRY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=FcHWf7eH18Q:wb4dbZ1VLRY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=FcHWf7eH18Q:wb4dbZ1VLRY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=FcHWf7eH18Q:wb4dbZ1VLRY:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/FcHWf7eH18Q" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=6c0f961b-4ce0-43aa-b4f5-743daea1311b</comments>
      <category>ASP.NET</category>
      <category>IIS</category>
      <category>Musings</category>
    <feedburner:origLink>http://www.hanselman.com/blog/TheseAreTheLittleBugsThatLeadToMadness.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</wfw:commentRss>
      <slash:comments>16</slash:comments>
      <title>Back to Basics - Trust Nothing as User Input Comes from All Over</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/uTnhSrStxJ8/BackToBasicsTrustNothingAsUserInputComesFromAllOver.aspx</link>
      <pubDate>Tue, 23 Jun 2009 20:00:40 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;There was an interesting bug recently that was initially blamed on &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt;. Basically someone searched for something, clicked the first result and got a YSOD (Yellow Screen of Death.) &lt;/p&gt;  &lt;p&gt;They were searching &lt;a href="http://www.bing.com"&gt;Bing.com&lt;/a&gt; for this term:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;i&gt;&amp;quot;Eugene Myers's O(ND) Diff algorithm&amp;quot;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;When they clicked on a link that looked like a good result, they got a scary YSOD like this:&lt;/p&gt;  &lt;div style="background-color: lightyellow"&gt;   &lt;hr align="center" size="1" width="100%" /&gt;    &lt;p&gt;&lt;strong&gt;Server Error in '/' Application. &lt;/strong&gt;&lt;/p&gt;    &lt;hr align="center" size="1" width="100%" /&gt;    &lt;p&gt;&lt;i&gt;'/t:tracking/t:referrer[@url='http://www.bing.com/search?q=eugene myers's o(nd) diff algorithm&amp;amp;form=qblh']' has an invalid token.&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Description: &lt;/b&gt;An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.       &lt;br /&gt;&lt;b&gt;Exception Details: &lt;/b&gt;System.Xml.XPath.XPathException: '/t:tracking/t:referrer[@url='http://www.bing.com/search?q=eugene myers's o(nd) diff algorithm&amp;amp;form=qblh']' has an invalid token.       &lt;br /&gt;&lt;b&gt;Source Error:&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Stack Trace:&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;[XPathException: '/t:tracking/t:referrer[@url='http://www.bing.com/search?q=eugene myers's o(nd) diff algorithm&amp;amp;form=qblh']' has an invalid token.]&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160; MS.Internal.Xml.XPath.XPathParser.ParseStep(AstNode qyInput) +539&lt;/p&gt;    &lt;p&gt;...snip...&lt;/p&gt;    &lt;hr align="center" size="1" width="100%" /&gt;&lt;/div&gt;  &lt;p&gt;Eek! That is scary. Because the user clicked a link on Bing and the next thing they got was an error, they figured it was Bing that caused it. Well, indirectly. What went wrong here?&lt;/p&gt;  &lt;p&gt;The target site the user was visiting is tracking their visitors, as many sites do and should. When you visit a site from another, HTTP includes a header called &amp;quot;Referer&amp;quot;&lt;em&gt; (yes, it's actually misspelled in the spec, and is misspelled in reality. Welcome to the Web.)&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;Since they were visiting from here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.bing.com/search?q=eugene myers's o(nd) diff algorithm&amp;amp;form=qblh"&gt;http://www.bing.com/search?q=eugene myers's o(nd) diff algorithm&amp;amp;form=qblh&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;...then that was referrer. However, the trouble happened when the program took the HTTP Referrer blindly and built up an XPath &lt;em&gt;using the HTTP referrer header directly as input. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It appears that this website is storing its tracking details in an XML file, and the programmer is trying to do a lookup on the referrer so he/she can increment a visit.&lt;/p&gt;  &lt;p&gt;Notice that they've used a single quote around the string, but the original search included an additional quote in the string &amp;quot;Engine Myers's.&amp;quot; The resulting concatenated XPath isn't valid XPath, and the system fails.&lt;/p&gt;  &lt;p&gt;Just in case you care, the same problem happens to this poor site when searching from Google:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.google.com/search?q=Eugene+Myers's+O(ND)+Diff+algorithm"&gt;http://www.google.com/search?q=Eugene+Myers's+O(ND)+Diff+algorithm&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Yields:&lt;/p&gt;  &lt;div style="background-color: lightyellow"&gt;   &lt;hr size="1" width="100%" /&gt;     &lt;p&gt;&lt;strong&gt;Server Error in '/' Application. &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;i&gt;'/t:tracking/t:referrer[@url='http://www.google.com/search?q=eugene myers's o(nd) diff algorithm']' has an invalid token.&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Description: &lt;/b&gt;An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.       &lt;br /&gt;&lt;b&gt;Exception Details: &lt;/b&gt;System.Xml.XPath.XPathException: '/t:tracking/t:referrer[@url='http://www.google.com/search?q=eugene myers's o(nd) diff algorithm']' has an invalid token.&lt;/p&gt;    &lt;hr size="1" width="100%" /&gt;    &lt;h3&gt;&lt;/h3&gt; &lt;/div&gt;  &lt;p&gt;What's the Back to Basics lesson?&amp;#160; Well, there's a few:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Trust no user input. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Input comes from many locations. &lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;There's explicit input like Form POSTs, but also implicit input like HTTP Referers and Cookies. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&amp;quot;Injection&amp;quot; attacks aren't just about SQL Inject. &lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;You can inject things into XPath and Regular expressions just as easily and possibly bring down or hang sites, as well as potentially expose private information. &lt;/li&gt;        &lt;li&gt;Any time you take a string from input of any kind and concatenate it into any language you're giving bad people to be bad. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Interesting (and obscure) stuff!&lt;/p&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UM_kQ-JRetxu7a69kC3Bk-uvPUQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UM_kQ-JRetxu7a69kC3Bk-uvPUQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UM_kQ-JRetxu7a69kC3Bk-uvPUQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UM_kQ-JRetxu7a69kC3Bk-uvPUQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=uTnhSrStxJ8:B1p6FV7n2A0:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=uTnhSrStxJ8:B1p6FV7n2A0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=uTnhSrStxJ8:B1p6FV7n2A0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=uTnhSrStxJ8:B1p6FV7n2A0:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/uTnhSrStxJ8" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=27b9c781-4dd3-4e6f-b937-9e4c4f8cc196</comments>
      <category>ASP.NET</category>
      <category>Back to Basics</category>
    <feedburner:origLink>http://www.hanselman.com/blog/BackToBasicsTrustNothingAsUserInputComesFromAllOver.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.hanselman.com/blog/Trackback.aspx?guid=54b5b9be-104d-4251-ae83-335419dabb52</trackback:ping>
      <pingback:server>http://www.hanselman.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.hanselman.com/blog/PermaLink.aspx?guid=54b5b9be-104d-4251-ae83-335419dabb52</pingback:target>
      <dc:creator>Scott Hanselman</dc:creator>
      <wfw:comment>http://www.hanselman.com/blog/CommentView.aspx?guid=54b5b9be-104d-4251-ae83-335419dabb52</wfw:comment>
      <wfw:commentRss>http://www.hanselman.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54b5b9be-104d-4251-ae83-335419dabb52</wfw:commentRss>
      <slash:comments>15</slash:comments>
      <title>Accidental Prescience and the Secrets of Project Natal</title>
      <guid isPermaLink="false">http://www.hanselman.com/blog/PermaLink.aspx?guid=54b5b9be-104d-4251-ae83-335419dabb52</guid>
      <link>http://feedproxy.google.com/~r/ScottHanselman/~3/CA_E4XcJmZc/AccidentalPrescienceAndTheSecretsOfProjectNatal.aspx</link>
      <pubDate>Tue, 23 Jun 2009 19:22:08 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;I can't remember which episode, but a few years ago I mentioned on &lt;A href="http://www.hanselminutes.com"&gt;my podcast&lt;/A&gt; that I didn't understand why companies were spending so much time with touch screens and multi-touch input devices when we all have a perfectly good input device staring at us, unused, everyday - our webcams. &lt;A href="http://www.imdb.com/title/tt0181689/"&gt;Minority Report&lt;/A&gt; was not only a great movie, but a great user experience idea. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://johnnylee.net/"&gt;Johnny Chung Lee&lt;/A&gt; &lt;EM&gt;(I thought he and I had a bromance going, but it's just a fauxmance. It's one way, sniff, he doesn't know I'm alive! ;)&lt;/EM&gt; did some &lt;A href="http://johnnylee.net/projects/wii/"&gt;amazing work in this space using the Wii remote&lt;/A&gt; a while back.&lt;/P&gt;
&lt;P&gt;&lt;SPAN id=preserve0f2c7a1a8fb7482d93d27bcf14f2bac3 class=wlWriterPreserve&gt;&lt;EMBED height=273 type=application/x-shockwave-flash width=337 src=http://www.youtube.com/v/0awjPUkBXOU&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1 allowScriptAccess="always" allowfullscreen="true"&gt;&lt;/EMBED&gt;&lt;/SPAN&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=minority-report border=0 alt=minority-report src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/AccidentalPrescienceandtheSecretsofProje_AA5D/minority-report_3.jpg" width=182 height=273&gt; &lt;/P&gt;
&lt;P&gt;Ever since I saw Minority Report, perhaps even before since it's such an obvious idea, I've been searching and trying to figure out when and how this is going to happen. From my point of view, there's just no reason I shouldn't be able to make a small gesture and push a window over to another monitor. Swipe down in the air, minimize. It if was reliable, it'd be a perfect and elegant addition to the mouse and keyboard.&lt;/P&gt;
&lt;P&gt;Johnny now works for Microsoft, and &lt;A href="http://procrastineering.blogspot.com/2009/06/project-natal.html"&gt;recently we learned that he's been working with the team that is doing Project Natal&lt;/A&gt;. If you've been under a virtual rock, here's a video what Natal does. Basically it tracks your body and you become the game controller. If it works, it'll be epic. If it fails, it'll be sad. The real question is WHEN. My bet is Christmas, only because it's obvious.&lt;/P&gt;
&lt;P&gt;&lt;SPAN id=preservea97e3750dedc446792985b918f43f8ea class=wlWriterPreserve&gt;&lt;EMBED height=344 type=application/x-shockwave-flash width=425 src=http://www.youtube.com/v/g_txF7iETX0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1 allowScriptAccess="always" allowfullscreen="true"&gt;&lt;/EMBED&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;From &lt;A href="http://procrastineering.blogspot.com/2009/06/project-natal.html"&gt;Johnny's Blog&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;The 3D sensor itself is a pretty incredible piece of equipment providing detailed 3D information about the environment similar to very expensive laser range finding systems but at a tiny fraction of the cost. Depth cameras provide you with a point cloud of the surface of objects that is fairly insensitive to various lighting conditions allowing you to do things that are simply impossible with a normal camera. &lt;BR&gt;&lt;/EM&gt;&lt;BR&gt;&lt;EM&gt;But once you have the 3D information, you then have to interpret that cloud of points as "people". This is where the researcher jaws stay dropped. The human tracking algorithms that the teams have developed are well ahead of the state of the art in computer vision in this domain. The sophistication and performance of the algorithms rival or exceed anything that I've seen in academic research, never mind a consumer product. At times, working on this project has felt like a miniature “Manhattan project” with developers and researchers from around the world coming together to make this happen.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Before the world (or I) had ever heard of Project Natal, I &lt;STRIKE&gt;pounced on&lt;/STRIKE&gt; interviewed Johnny at Mix 09 in Las Vegas. Recently &lt;A href="http://twitter.com/81bronco/statuses/2288057319"&gt;Raleigh Buckner mentioned on Twitter&lt;/A&gt; that there was a lot "said without actually saying" in that interview, and darn it, he's right. I asked the right questions, and Johnny answered, but we (the collective) didn't see! &lt;/P&gt;
&lt;H3&gt;&lt;A href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Johnny-Lee-on-Computer-Vision/"&gt;&lt;IMG hspace="5" align=left src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/AccidentalPrescienceandtheSecretsofProje_AA5D/chunglee.PNG"&gt;&lt;/A&gt;&lt;STRONG&gt;Now, go watch the interview again, this time with the knowledge of Project Natal's existence...&lt;/STRONG&gt;&lt;/H3&gt;&lt;A href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-Johnny-Lee-on-Computer-Vision/"&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/STRONG&gt;Johnny Lee on Computer Vision&lt;/A&gt;&lt;/A&gt;&lt;/A&gt;&lt;EM&gt; &lt;BR&gt;&lt;/EM&gt;
&lt;P&gt;&lt;EM&gt;Wow. I just bumped into &lt;/EM&gt;&lt;A href="http://johnnylee.net/projects/wii/"&gt;&lt;STRONG&gt;&lt;EM&gt;Johnny Lee&lt;/EM&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;EM&gt; in the halls here at Mix09. I'm a huge fanboi with a man-crush on this dude. You've seen &lt;/EM&gt;&lt;A href="http://channel9.msdn.com/shows/The+Knowledge+Chamber/Johnny-Lee-Microsoft-Researcher/"&gt;&lt;EM&gt;Johnny before on Channel 9&lt;/EM&gt;&lt;/A&gt;&amp;nbsp;&lt;EM&gt;talking to Robert Hess.&amp;nbsp; Johnny's a legend (in my mind) in the computer vision space, and he put up with me gushing at him here at Mix09. We chatted in the hall about computer vision, what he's working on, how he got the gig at Microsoft and where he sees the future of human-computer-interaction.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Crazy stuff. I'm very excited to see how far they can take this.&lt;/P&gt;&lt;br/&gt;&lt;hr/&gt;© 2009 Scott Hanselman. All rights reserved. &lt;br/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XBXKxZq61CS2X7qyNEaKTVnMF74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XBXKxZq61CS2X7qyNEaKTVnMF74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XBXKxZq61CS2X7qyNEaKTVnMF74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XBXKxZq61CS2X7qyNEaKTVnMF74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=CA_E4XcJmZc:dEajtdcbUmE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:MjquXQBfoPI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=MjquXQBfoPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=CA_E4XcJmZc:dEajtdcbUmE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?i=CA_E4XcJmZc:dEajtdcbUmE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ScottHanselman?a=CA_E4XcJmZc:dEajtdcbUmE:5M_9TJJRyfI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ScottHanselman?d=5M_9TJJRyfI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ScottHanselman/~4/CA_E4XcJmZc" height="1" width="1"/&gt;</description>
      <comments>http://www.hanselman.com/blog/CommentView.aspx?guid=54b5b9be-104d-4251-ae83-335419dabb52</comments>
      <category>Channel9</category>
      <category>Gaming</category>
    <feedburner:origLink>http://www.hanselman.com/blog/AccidentalPrescienceAndTheSecretsOfProjectNatal.aspx</feedburner:origLink></item>
  </channel>
</rss>
