<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>microsoft</title>
        <link>http://blog.kellybrownsberger.com/category/1.aspx</link>
        <description>microsoft</description>
        <language>en-US</language>
        <copyright>kellyb</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>Mix10 @ Las Vegas (March 15 &amp;ndash; 17)</title>
            <link>http://blog.kellybrownsberger.com/archive/2010/01/06/72.aspx</link>
            <description>&lt;p&gt;Registration is up, and I have my fingers crossed that my company will be able to send me this year.  Here’s the sessions that look interesting to me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/WKSP05" target="_blank"&gt;Silverlight 4 Bootcamp&lt;/a&gt; (John Papa) – This might not be the best use of my time as I feel like I’ve already learned the basics of SL development, but I would like to be able to see John go soup-to-nuts with the full SL stack.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/CL03" target="_blank"&gt;Prototyping rich silverlight 4 applications with sketchflow&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/PR01" target="_blank"&gt;Using Microsoft Silverlight 4 to Create Dynamic SharePoint 2010 User Experiences&lt;/a&gt; (Paul Stubbs) - not sure SL in SP is useful to me, but I'd like to see this&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/DS06" target="_blank"&gt;Touch In Public: Multi-touch Interaction Design for Kiosks and Architectural Experiences&lt;/a&gt; (Jason Brush) - This might have longer term relevance to the day-job&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/DS01" target="_blank"&gt;The Laws of User Experience&lt;/a&gt; (Anthony Franco) - Developing some design-chops is one of my personal goals for this year&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/CL04" target="_blank"&gt;Dynamic Layout and Transitions for Microsoft Silverlight 4 with Microsoft Expression Blend&lt;/a&gt; - I definitely need to fully learn Blend and let it wash over me.  I can't seem to keep my mouth out of the angle brackets when developing in SL/WPF&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/WKSP02" target="_blank"&gt;Design Fundamentals for Developers&lt;/a&gt; (Robby Ingebretsen)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/EX01" target="_blank"&gt;Cloud Computing Economies of Scale&lt;/a&gt; (James Hamilton) - This looks very interesting&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/WKSP06" target="_blank"&gt;Building Cloud Services with Azure&lt;/a&gt; (Ryan Dunn) - If memory serves, Ryan works (or worked?) for Avanade at one point.  I doubt he'd remember me...&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/CL02" target="_blank"&gt;Authoring for Microsoft Silverlight 4 with Microsoft Expression Blend&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/WKSP04" target="_blank"&gt;ASP.NET MVC Boot Camp&lt;/a&gt; (Jon Galloway) - Not very relevant to my day-job, but I like Jon and enjoy MVC at home :)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/Sessions/DS03" target="_blank"&gt;Running with Wireframes:  Taking Information Architecture (IA) into Design (Matt Brown)&lt;/a&gt; – Sounds kind of interesting&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/72.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2010/01/06/72.aspx</guid>
            <pubDate>Wed, 06 Jan 2010 18:59:03 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/72.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2010/01/06/72.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/72.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Windows 7 Paving &amp;ndash; New Base Image Software List</title>
            <link>http://blog.kellybrownsberger.com/archive/2009/08/08/58.aspx</link>
            <description>&lt;p&gt;It’s here… good bye Vista – won’t be missing you.  Hello beauty&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.kellybrownsberger.com/____Uploads____/Windows7PavingNewBaseImageSoftwareList_9250/image.png"&gt;&lt;img height="191" border="0" width="244" src="http://blog.kellybrownsberger.com/____Uploads____/Windows7PavingNewBaseImageSoftwareList_9250/image_thumb.png" alt="image" title="image" style="border-width: 0px; display: inline;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I just paved my machine with the new RTM of Windows 7 Ultimate.  Below is my base image – now it’s time to back everything up to my home server.&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="2" width="897"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323" style="text-decoration: line-through;"&gt;&lt;a target="_blank" href="http://www.mesh.com"&gt;Windows Live Mesh&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;I had to cut Mesh out of my life.... it was hogging too many system resources - especially disk reads.  I can't have that on my dev boxes.  I moved back to Windows Syn&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a href="http://sync.live.com/clientdownload.aspx"&gt;Windows Sync&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.moonsoftware.com/pwagent.asp"&gt;Password Agent&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323" style="text-decoration: line-through;"&gt;&lt;a target="_blank" href="http://free.avg.com"&gt;AVG Anti-Virus (Free Edition)&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573" style="text-decoration: line-through;"&gt;OK, but I’ve started to fall out of love with AVG.  They seem to be turning into another Norton/McAfee with their annoying attempts to get me to upgrade, feature bloat, and piggish product.  I’m trying &lt;a target="_blank" href="http://www.microsoft.com/security_essentials/"&gt;Microsoft Security Essentials Beta&lt;/a&gt; and so far it’s nice (light and free).  I found some &lt;a target="_blank" href="http://www.comodo.com/"&gt;Comodo&lt;/a&gt; fan on Google and tried that – no thanks… way too annoying.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323" style="text-decoration: line-through;"&gt;Windows Security Essentials&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;I'm done with AVG, Norton, and McAfee  - they are all pigs.  Windows Security Essential is fast, lean and free - I'm sold.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Cisco VPN Client&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;FAIL          &lt;br /&gt;
            &lt;br /&gt;
            &lt;a target="_blank" href="http://www.ncp-e.com/index.php?id=92&amp;amp;L=1"&gt;NCP offers a Cisco replacement client&lt;/a&gt; that I'm strongly considering.  They support 64bit as well as Windows 7.           &lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.slysoft.com/en/download.html"&gt;Virtual Clone Drive&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK  &lt;br /&gt;
            &lt;br /&gt;
            I’m finally leaving Daemon Tools – it said it supports Windows 7, but it didn’t for me.  This package as steadily gotten shadier and shadier (constantly trying to install crap-ware, etc.).  I’m happily using the free version of Virtual Clone Drive.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://textpad.com/download/index.html"&gt;TextPad 5&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://launchy.net/"&gt;Launchy&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.mozilla.com/en-US/firefox/firefox.html"&gt;Firefox&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK          &lt;br /&gt;
            &lt;br /&gt;
            &lt;p&gt;Mandatory Extensions:&lt;/p&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/1419"&gt;IETab&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/1865"&gt;AdBlock&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/10297"&gt;Bit.ly&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/3615"&gt;Del.icio.us&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt; &lt;/li&gt;
                &lt;li&gt;         &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Media Players and Plugins&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://silverlight.net"&gt;Silverlight&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://get.adobe.com/flashplayer"&gt;Adobe Flash&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.foxitsoftware.com/pdf/reader/"&gt;Foxit PDF Reader&lt;/a&gt; - I stay away from Adobe Reader… it’s a pig&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx"&gt;Windows Media Player Plugin for Firefox&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Core Development Tools&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;
            &lt;ul&gt;
                &lt;li&gt;Visual Studio 2008 Team Developer + SP1&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&amp;amp;displaylang=en"&gt;ASP.NET MVC&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.memprofiler.com"&gt;.NET Memory Profiler&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.jetbrains.com/resharper/index.html"&gt;ReSharper&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://visualsvn.com/visualsvn/download/tortoisesvn/"&gt;TortoiseSVN&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.visualsvn.com"&gt;VisualSVN&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;SQL Server 2008 Developer&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.gallio.org/Downloads.aspx"&gt;Gallio&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.testdriven.net"&gt;TestDriven.NET&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="javascript:void(0);/*1256263712642*/"&gt;Microsoft Silverlight 3 Tools for VS 2008 SP1&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href="javascript:void(0);/*1256263785940*/"&gt;Silverlight Toolkit - Release: July 2009&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;Expression Blend 3&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Misc Development Tools&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://download.cnet.com/ClipPath/3000-2094_4-10050927.html"&gt;ClipPath&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://reflector.red-gate.com/download.aspx"&gt;Reflector&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;Snippet Compiler&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a target="_blank" href="http://technet.microsoft.com/en-us/sysinternals/0e18b180-9b7a-4c49-8120-c47c5a693683.aspx"&gt;Sysinternals Suite&lt;/a&gt; &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.getpaint.net/"&gt;Paint.NET&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK – I’m not sure I need this anymore.  The Paint applet that comes with Windows 7 is pretty impressive.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://wordweb.info/"&gt;WordWeb Pro&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK – Awesome desktop dictionary&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://windowslivewriter.spaces.live.com/"&gt;Windows Live Writer&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Office Ultimate 2007&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href="javascript:void(0);/*1256263406261*/"&gt;Save As PDF for Office 2007&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://download.live.com/?sku=messenger"&gt;Windows Live Messenger&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.virtualbox.org"&gt;Virtual Box&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a target="_blank" href="http://www.apple.com"&gt;iTunes&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK – I wish I didn’t have to, but it’s kind of a must with my iPhone, peer pressure, etc.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;Windows Home Server Console&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a href="http://www.trillian.im/download/"&gt;Trillian Pro&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;I finally gvae this a try and I dig it.  It vastly simplify my IM life.&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="323"&gt;&lt;a href="http://www.skype.com"&gt;Skype&lt;/a&gt;&lt;/td&gt;
            &lt;td valign="top" width="573"&gt;Stellar VoIP client&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/58.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2009/08/08/58.aspx</guid>
            <pubDate>Sat, 08 Aug 2009 15:23:53 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/58.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2009/08/08/58.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/58.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Running Windows 7 Beta Software List</title>
            <link>http://blog.kellybrownsberger.com/archive/2009/04/18/50.aspx</link>
            <description>&lt;p&gt;I’ve been playing with Windows 7 Beta on a VM for quite some time and I really like it.  I’ve been yearning for something new for a while now, and on a whim… I did it.  I installed Windows 7 Ultimate Beta on my main machine.  I think this is the first time I’ve committed to a beta OS.  We’ll see how this guys, but I have a feeling it’s going to be just fine.&lt;/p&gt;
&lt;p&gt;Here’s the software I’m running so far and it’s Win7 compatibility&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="2" width="897"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.mesh.com"&gt;Windows Live Mesh&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://free.avg.com"&gt;AVG Anti-Virus (Free Edition)&lt;br /&gt;
            &lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.virtualbox.org"&gt;Virtual Box&lt;br /&gt;
            &lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;Cisco VPN Client&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;&lt;span style="text-decoration: line-through;"&gt;OK (surprise!)&lt;/span&gt;  FAIL&lt;br /&gt;
            &lt;br /&gt;
            I was hoodwinked by this one.  It worked on my VM, and it installed and ran successfully on my T61.  However, after a reboot, Windows blue-screen infinitely.  Curses... I loathe this software.  It's complete junk.  I'm told Cisco has abandoned development on it and they're forcing people to upgrade to new networking hardware in order to get on their new client software.&lt;br /&gt;
            &lt;br /&gt;
            &lt;a href="http://www.ncp-e.com/index.php?id=92&amp;amp;L=1"&gt;NCP offers a Cisco replacement client&lt;/a&gt; that I'm strongly considering.  They support 64bit as well as WIndows 7.&lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://textpad.com/download/index.html"&gt;TextPad 5&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://get.adobe.com/reader/"&gt;Adobe Reader&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;FAIL (no surprise)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.foxitsoftware.com/pdf/reader/"&gt;Foxit Reader&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK (who needs adobe?)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/firefox.html"&gt;Firefox&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.daemon-tools.cc/ENG/downloads"&gt;Daemon Tools&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;FAIL&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.magiciso.com/download.htm"&gt;Magic ISO&lt;/a&gt; / Magic Disc&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;FAIL – installs, but won’t run          &lt;br /&gt;
            &lt;br /&gt;
            Oddly, this worked on the VM I was using to test Win7, but not on my Lenovo ThinkPad T61.  This one was quite nasty to get off of my machine&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.slysoft.com/en/download.html"&gt;Virtual Clone Drive&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK         &lt;br /&gt;
            &lt;br /&gt;
            This installed once, but wouldn’t run.  I reinstalled, and seems to be ok now I don’t think Magic ISO was fully uninstalled the first time.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;Windows Home Server Console&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.moonsoftware.com/pwagent.asp"&gt;Password Agent&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.launchy.net/"&gt;Launchy&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://windowslivewriter.spaces.live.com/"&gt;Windows Live Writer&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://windowslivewriter.spaces.live.com/"&gt;Windows Live Messenger&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://visualsvn.com/visualsvn/download/tortoisesvn/"&gt;TortoiseSVN&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.getpaint.net/"&gt;Paint.NET&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://download.cnet.com/ClipPath/3000-2094_4-10050927.html"&gt;ClipPath&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;displaylang=en"&gt;Windows Server 2003 Resource Kit Tools&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;FAIL&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;Adobe Flash&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://filezilla-project.org/"&gt;Filezilla FTP Client&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.tweetdeck.com/"&gt;TweetDeck&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;Visual Studio 2008 Team Developer + SP1&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.jetbrains.com/resharper/index.html"&gt;ReSharper 4.5&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.visualsvn.com"&gt;VisualSVN&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;Office Ultimate 2007&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://reflector.red-gate.com/download.aspx"&gt;Reflector&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.gallio.org/Downloads.aspx"&gt;Gallio&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;Snippet Compiler&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.testdriven.net"&gt;TestDriven.NET&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;SQL Server 2008 Developer&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/0e18b180-9b7a-4c49-8120-c47c5a693683.aspx"&gt;Sysinternals Suite&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="javascript:void(0);/*1240109493436*/"&gt;.NET Memory Profiler&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&amp;amp;displaylang=en"&gt;ASP.NET MVC&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="http://www.castleproject.org"&gt;Castle Stack&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="323" valign="top"&gt;&lt;a href="javascript:void(0);/*1240109537751*/"&gt;Fluent NHibernate&lt;/a&gt;&lt;/td&gt;
            &lt;td width="573" valign="top"&gt;OK&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Firefox Extensions and Plugins I love:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1419"&gt;IETab&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1865"&gt;AdBlock&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/10297"&gt;Bit.ly&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3615"&gt;Del.icio.us&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx"&gt;Windows Media Player Plugin for Firefox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/50.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2009/04/18/50.aspx</guid>
            <pubDate>Sat, 18 Apr 2009 05:24:04 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/50.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2009/04/18/50.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/50.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Windows 7 Beta and VPC 2007 Incompatibilities</title>
            <link>http://blog.kellybrownsberger.com/archive/2009/01/14/38.aspx</link>
            <description>&lt;p&gt;I decided to download and install Windows 7 Beta to start having a look at it.  I’m hearing and reading very positive things.  &lt;a href="http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx" target="_blank"&gt;This post especially&lt;/a&gt; makes Windows 7 sound like it’s going to be something I’ll love.  I’ve been longing for a power-user-friendly version of Windows for many years.  I’m very much looking forward to it, but I’m certainly not ready to run it on any of my machines as a main OS.  I created a new VPC image for it, and immediately ran into problems.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/scassells/archive/2009/01/09/windows-7-does-boot-recovery-caused-by-vpc-2007-virtual-machine-additions.aspx" target="_blank"&gt;This post describes exactly what the problem is&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There appears to be an issue with Virtual Machine Additions and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=28C97D22-6EB8-4A09-A7F7-F6C7A1F000B5&amp;amp;displaylang=en#filelist" target="_blank"&gt;SP1 of VPC 2007&lt;/a&gt; fixes the it.&lt;/p&gt;  &lt;p&gt;Just follow the instructions in the first link describing the problem, install SP1, and then install Virtual Machine Additions and you should be good to go.  As always, you need the Virtual Machine Additions for the performance and user experience of a VPC VM to be acceptable.  With the proper version installed, Windows 7 feels smooth and right&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.kellybrownsberger.com/____Uploads____/Windows7BetaandVPC2007Incompatibilities_5F49/image.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://blog.kellybrownsberger.com/____Uploads____/Windows7BetaandVPC2007Incompatibilities_5F49/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.kellybrownsberger.com/____Uploads____/Windows7BetaandVPC2007Incompatibilities_5F49/image_3.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="199" alt="image" src="http://blog.kellybrownsberger.com/____Uploads____/Windows7BetaandVPC2007Incompatibilities_5F49/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/38.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2009/01/14/38.aspx</guid>
            <pubDate>Wed, 14 Jan 2009 12:47:29 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/38.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2009/01/14/38.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/38.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The Entity Framework team should talk to the MVC team</title>
            <link>http://blog.kellybrownsberger.com/archive/2008/05/21/6.aspx</link>
            <description>&lt;p&gt;Two product efforts at Microsoft have spun up this year and both are new implementations of very old ideas:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx"&gt;ASP.NET MVC Framework&lt;/a&gt; - Microsoft's upcoming implementation of a Model View Controller architecture for their web application platform.  MVC has been around for a long time on other development platforms, but only recently has there been a push in the .NET community demanding for this.      &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://blogs.msdn.com/dsimmons/archive/2008/05/17/why-use-the-entity-framework.aspx"&gt;ADO.NET Entity Framework&lt;/a&gt; - Microsoft's next rev of data access technology (ADO.NET) contains a lot of new ways to work with data.  EF is their implementation of an Object-Relational Mapping framework.  Again, OR Mapping has been around for a very long time on other development platforms such as Java, but only recently has there been a push in the .NET community asking for this.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;My personal opinion is the recent increase in the popularity of Agile development methods has had a large part in driving out these products from Microsoft.  Agile development tends to accentuates everything in a development ecosystem - the good and the bad.  Agile teams using the .NET platform have been feeling a lot of pain in certain areas - namely, data access and web app development.  Writing automated-test-friendly code using these parts of the framework has been a nightmare for me personally, and I know there's scores of people that feel the same way.&lt;/p&gt;
&lt;p&gt;To be fair, there's a large part of the .NET community that just doesn't care about any of this.  By and large, they don't care about Agile and they don't care about automated test friendliness and they think the current implementations of ASP.NET and ADO.NET are just fine.  I'm not going to argue with any of that because those people are in the best position to know what's best for them.  However, there are people out there that loudly crying for change, and I'm one of them (though most of my crying is done in my own head).&lt;/p&gt;
&lt;p&gt;What's really interesting I think is to watch how the MVC team has went about this charge in comparison to the EF team.  I pay a lot more attention to the MVC stuff just because I've been a long time reader of &lt;a target="_blank" href="http://www.hanselman.com/blog/ScottGuMVCPresentationAndScottHaScreencastFromALTNETConference.aspx"&gt;Scott Hanselman&lt;/a&gt;, &lt;a target="_blank" href="http://haacked.com/"&gt;Phil Haack&lt;/a&gt;, and &lt;a target="_blank" href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt; (the 3 main guys Microsoft hired to make lead the MVC effort).  If you read through these guy's blog's and the content they're producing to support this product, their "this is for a certain set of people with a certain set of concerns that doesn't apply to everyone and we want this product to delight those people" attitude is obvious, which is very refreshing.  &lt;a target="_blank" href="http://www.google.com/reader/view/?tab=my#stream/feed%2Fhttp%3A%2F%2Ffeeds.feedburner.com%2FScottHanselman"&gt;Scott posted some very cool video's of his talks on MVC at Mix this year&lt;/a&gt;.  This refreshing attitude shines thoroughly repeatedly in these talks.&lt;/p&gt;
&lt;p&gt;Dan Simmons from the Entity Framework team &lt;a target="_blank" href="http://blogs.msdn.com/dsimmons/archive/2008/05/17/why-use-the-entity-framework.aspx"&gt;posted a break down&lt;/a&gt; of the data access technologies in ADO.NET and compares and contrasts them for different types of jobs.  As expected, the Agile/TDD zealots are pounding on him (i.e. &lt;a target="_blank" href="http://www.google.com/reader/view/?tab=my#stream/feed%2Fhttp%3A%2F%2Fcodebetter.com%2Fblogs%2Fjeremy.miller%2Frss.aspx"&gt;Jeremy Miller&lt;/a&gt; and the &lt;a target="_blank" href="http://codebetter.com/Default.aspx"&gt;CodeBetter crew&lt;/a&gt;).  The zealots don't like the EF team's model and they take every opportunity to remind them of that.  The EF team seems view these folks and their viewpoints as a small subset of the community.  They seem to be applying the 80/20 rule, and they seem to think that if only 20% of the community is pissed, then that's pretty good.&lt;/p&gt;
&lt;p&gt;What I think Dan is missing here, unlike the MVC team, this 20% of people that are displeased with their model, is the majority of people that care about this stuff.  The other 80% are the people that don't care about Agile and don't care about automated-test-friendliness.  They are the people that are more than happy cranking out dataset based app after dataset based app.  I would argue, they are the definitely NOT the people that are creating conceptual data models for reuse across their domain (the EF's big selling point).  I think the EF team needs to watch the MVC team and start listening to the zealots.  &lt;u&gt;Those zealots are your customer&lt;/u&gt;.&lt;/p&gt;
&lt;p&gt;My prediction:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;ASP.NET MVC Framework:  &lt;font size="4"&gt;&lt;font color="#008000"&gt;&lt;strong&gt;Huge Success&lt;/strong&gt;          &lt;br /&gt;
    &lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;ADO.NET Entity Framework:  &lt;strong&gt;&lt;font size="4" color="#ff0000"&gt;Huge Failure&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I would love to be wrong about #2.  #1 seems to already be in the bag :)&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/6.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2008/05/21/6.aspx</guid>
            <pubDate>Wed, 21 May 2008 05:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/6.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2008/05/21/6.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/6.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Live Mesh - The First Relevant Windows Live* Service?</title>
            <link>http://blog.kellybrownsberger.com/archive/2008/04/24/9.aspx</link>
            <description>&lt;p&gt;With the exception of the developer platform and tooling products, I've been thoroughly confused with Microsoft's product strategy for a couple of years now.  They've been acquiring companies at a fair steady rate, but the acquisitions have seemed fairly random.&lt;/p&gt;
&lt;p&gt;In March of 2005 Microsoft acquired &lt;a target="_blank" href="https://www.microsoft.com/presspass/features/2005/mar05/03-10GrooveQA.mspx"&gt;Groove Networks&lt;/a&gt;.  This is where Microsoft picked up Ray Ozzie - the braintrust of Groove.  Ray is now Microsoft's CTO&lt;/p&gt;
&lt;p&gt;Microsoft launched its &lt;a href="http://www.live.com"&gt;Windows Live&lt;/a&gt; in November of 2005.  It was prettier than MSN and very startup-y in it's branding, but I believe it quickly just got thought of as a re-skinning of MSN.&lt;/p&gt;
&lt;p&gt;At roughly the same time Microsoft acquired &lt;a target="_blank" href="http://www.foldershare.com"&gt;FolderShare&lt;/a&gt; and appeared to slowly rebrand it as another Windows Live* service, but it remained more or less the exact same technology the acquired.&lt;/p&gt;
&lt;p&gt;In Office 2007 Microsoft rolls up Office Groove.  I've never taken the time to really look at this product, but my assumption has always been that's its basically the old Groove product but rebranded as Office and Sharepoint-enabled.&lt;/p&gt;
&lt;p&gt;There's was a lot of buzz yesterday and continuing into today... and now it's all starting to make a lot more sense.  This looks extremely interesting.  &lt;a href="http://on10.net/blogs/nic/Hands-on-with-Live-Mesh/"&gt;Watch this video on Channel 10&lt;/a&gt;.  This appears to be FolderShare + Groove + Remote Desktop + ActiveSync.  I'm sure there will be hooks in here for Windows Home Server as well.&lt;/p&gt;
&lt;p&gt;This looks very exciting...&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/9.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2008/04/24/9.aspx</guid>
            <pubDate>Thu, 24 Apr 2008 05:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/9.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2008/04/24/9.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/9.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Microsoft IoC and Dependency Injection</title>
            <link>http://blog.kellybrownsberger.com/archive/2008/04/10/12.aspx</link>
            <description>&lt;p&gt;Microsoft's developer division has been making a lot interesting moves lately.  They're starting to finally listen to the strong thoughts and opinions coming out of the Java converts in the .NET community and realizing they know what they're talking about.  As usual, they're not really innovating, but they're taking existing ideas and building some great tooling around those ideas and delivering them to the masses.&lt;/p&gt;
&lt;p&gt;In the March release of MSDN Magazine they published &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx"&gt;&lt;em&gt;Loosen Up&lt;/em&gt;&lt;/a&gt; which is a general overview of the benefits of IoC and DI.  Just last week Microsoft Pattern's and Practices group released &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=6a9e363c-8e0a-48d3-bbe4-c2f36423e2df&amp;amp;displaylang=en"&gt;Unity&lt;/a&gt; - their entry into the IoC and DI space.  &lt;a target="_blank" href="http://www.martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/a&gt; are not new ideas and with &lt;a target="_blank" href="http://www.castleproject.org/container/index.html"&gt;Castle Windsor&lt;/a&gt;, &lt;a target="_blank" href="http://www.springframework.net/"&gt;Spring.NET&lt;/a&gt; and &lt;a target="_blank" href="http://structuremap.sourceforge.net/Default.htm"&gt;StructureMap&lt;/a&gt; there are many seasoned IoC offerings out there already.&lt;/p&gt;
&lt;p&gt;I've been a big fan for StructureMap for it's simplicity.  From my initial experience with Unity, it has that same thinness and simplicity.  Now that it's from Microsoft, hopefully the Morts will start to pay attention to some of these important design concepts.&lt;/p&gt;
&lt;p&gt;David Hayden has a pretty great overview of Unity in screencast form &lt;a target="_blank" href="http://www.pnpguidance.net/Screencast/UnityIoCDependencyInjectionASPNETMVCFrameworkScreencast.aspx"&gt;here&lt;/a&gt;.  Download it and play it in Windows Media Player at double the speed (a handy trick I picked up from Scott Hanselman)&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/12.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2008/04/10/12.aspx</guid>
            <pubDate>Thu, 10 Apr 2008 05:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/12.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2008/04/10/12.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/12.aspx</wfw:commentRss>
        </item>
        <item>
            <title>WCF Contract Constraint Woes</title>
            <link>http://blog.kellybrownsberger.com/archive/2007/02/07/19.aspx</link>
            <description>&lt;p /&gt; &lt;p&gt;At my day job, we're in the process of moving a sizable list of ASMX+WSE services to Fx3 and WCF (this is the first time I'm looking at WCF beyond playing with the sample).  We're applying several lessons learned in the past and taking time to think through how we're implementing our service contracts.  One of the great-great things about WCF is developers now define their contracts in code, and use tools to export the XSD Schema.  &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New"&gt;namespace Brownsberger&lt;br /&gt;{&lt;br /&gt;    [ServiceContract()]&lt;br /&gt;    public interface IProductService&lt;br /&gt;    {&lt;br /&gt;        [OperationContract]&lt;br /&gt;        CreateProductResponse CreateProduct(CreateProductRequest request);&lt;br /&gt;    }&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;    [MessageContract]&lt;br /&gt;    public class CreateProductRequest { };&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;    [MessageContract]&lt;br /&gt;    public class CreateProductResponse { };&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;    [DataContract]&lt;br /&gt;    public class Product&lt;br /&gt;    {&lt;br /&gt;        [DataMember]&lt;br /&gt;        public int Id;&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string Name;&lt;br /&gt;        [DataMember]&lt;br /&gt;        public int CategoryId;&lt;br /&gt;    }&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Then using the &lt;strong&gt;svcutil.exe&lt;/strong&gt; command line tool I can export this code to XSD Schema and WSDL. &lt;/p&gt;&lt;p&gt;What we'd really want to have rich attributes we can decorate our contracts with - something very similar to the metadata that drives Avanade's ACA.NET Validation Framework:&lt;/p&gt;&lt;font face="Courier New"&gt; &lt;p&gt;    [DataContract]&lt;br /&gt;    public class Product&lt;br /&gt;    {&lt;br /&gt;        [DataMember]&lt;br /&gt;        [&lt;strong&gt;GreaterThan(0)&lt;/strong&gt;]&lt;br /&gt;        public int Id;&lt;/p&gt; &lt;p&gt;        [DataMember]&lt;br /&gt;        [&lt;strong&gt;LongerThan(0)&lt;/strong&gt;]&lt;br /&gt;        public string Name;&lt;/p&gt; &lt;p&gt;        [DataMember]&lt;br /&gt;        [&lt;strong&gt;GreaterThan(0)&lt;/strong&gt;]&lt;br /&gt;        public int CategoryId;&lt;br /&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/font&gt; &lt;p&gt;There doesn't appear to be any of this in the WCF box, though there are hooks in the ServiceModel to roll all of this myself - as well as just about anything else (impressive extensibility model all the way around).  I did find a sample on &lt;a href="http://wcf.netfx3.com/files/folders/parameter_inspection/entry4363.aspx" target="_blank"&gt;netfx3.com that implements this contraints scheme&lt;/a&gt;, which is the bulk of what we want to do in code, but of course &lt;strong&gt;svcutil.exe&lt;/strong&gt; doesn't know how to manifest all that metadata into XSD Schema constraints.  WCF gives me all the hooks to override &lt;strong&gt;svcutil.exe's&lt;/strong&gt; behavior and it appear to have the ability to inject whatever I want into the XSD Schema it spits out - awesome. &lt;/p&gt;&lt;p&gt;My guess is alot of people looking to rollout WCF are thinking about this with regard to their contracts.  I don't blame the WCF team for not having this functionality in v1 because frankly, doing so would have been an enormous amount of work.  This smells like something that will be handled internally by WCF in coming versions.   &lt;/p&gt;&lt;p&gt;I'll probably end up hand rolling this, but I'd be curious to hear advice on how to go about doing this.  If there's something that already exists or something in the box that I'm not see, I'd love to know about it.&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/19.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2007/02/07/19.aspx</guid>
            <pubDate>Wed, 07 Feb 2007 06:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/19.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2007/02/07/19.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/19.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Joining Windows Vista to a Win2003 Domain Controller</title>
            <link>http://blog.kellybrownsberger.com/archive/2007/02/01/20.aspx</link>
            <description>&lt;p&gt;There are a lot of people out there having issues with this:&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/joining_vista_to_a_domain_error2.jpg" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;I did a number of things to get this working... some specific to Vista, and others not.  I read several forum posts about tweaking WINS and NetBios settings on your NIC.  I didn't have to do any of that.  I'm not sure if all of these are required, here are my settings:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Turn off TCP/IPv6&lt;br /&gt;
    &lt;br /&gt;
    &lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/network_connection_properties2.jpg" alt="" /&gt; &lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Unblock Network Discovery in Windows Firewall&lt;br /&gt;
    &lt;br /&gt;
    &lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/vista_firewall_exceptions2.jpg" style="border-width: 0px;" alt="" /&gt; &lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;In TCP/IPv4 properties, give yourself a static IP and make sure your DNS server IP address in your TCP/IP settings are set to the IP of your domain controller&lt;br /&gt;
    &lt;br /&gt;
    &lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/static_ip2.jpg" style="border-width: 0px;" alt="" /&gt; &lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Join the domain using the computer name of your DC and a DC Administrator account&lt;br /&gt;
    &lt;br /&gt;
    &lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/vista_computer_namedomain_changes2.jpg" style="border-width: 0px;" alt="" /&gt;   &lt;br /&gt;
    &lt;br /&gt;
    &lt;img border="0" src="http://blog.kellybrownsberger.com/____Uploads____/JoiningWindowsVistatoaWin2003DomainContr_9A9/vista_joined_domain_success1.jpg" style="border-width: 0px;" alt="" /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/20.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2007/02/01/20.aspx</guid>
            <pubDate>Thu, 01 Feb 2007 06:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/20.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2007/02/01/20.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/20.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Databinding Friendly Encapsulating Web Controls</title>
            <link>http://blog.kellybrownsberger.com/archive/2006/11/21/22.aspx</link>
            <description>&lt;p&gt;Custom web controls (both server controls and user controls) in ASP.NET are powerful building blocks.  The idea is obvious - reusable chunks of presentation-oriented software that can be used to assemble a user interface for a web app.  I've seen fair amount of web application architectures and a variety of approaches to custom web controls.  &lt;/p&gt; &lt;p&gt;This might be a yawner for some, but I've seen this done poorly so many times... I'm working with an application right now that's jacked in this area.  This is a subtle, yet very significant aspect of a web application's architecture.  There are several ways to do this, but very few that promote encapsulation of the control, while letting it earn it's paycheck in the architecture.&lt;/p&gt; &lt;p&gt;Lets start with a simple example of wanting to display a list of guitars on a page.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.kellybrownsberger.com/____Uploads____/DatabindingFriendlyEncapsulatingWebContr_11F83/image03.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="418" src="http://blog.kellybrownsberger.com/____Uploads____/DatabindingFriendlyEncapsulatingWebContr_11F83/image0_thumb1.png" width="652" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In this case, &amp;lt;kb:Guitar ... /&amp;gt; doesn't do anything other than display the guitar instance in a table.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Markup&lt;br /&gt;&lt;/strong&gt;Here's the beginning of something nice.  We have a stock repeater housing a custom web control (Guitar.ascx).  Obviously, I'm going to want to bind a list of Guitar entity instances to this repeater and have Guitar.ascx handle the work of presenting the Guitar instance data to the user.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Guitars: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="GuitarRepeater"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;kb:Guitar&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="Guitar"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;kb:Guitar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Code-behind&lt;br /&gt;&lt;/strong&gt;Pretty standard... 
&lt;/p&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)
    {
        List&amp;lt;Guitar&amp;gt; guitars = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Guitar&amp;gt;();
        guitars.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Guitar(1, &lt;span class="str"&gt;"HD28"&lt;/span&gt;));
        guitars.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Guitar(2, &lt;span class="str"&gt;"HD41"&lt;/span&gt;));
        guitars.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Guitar(3, &lt;span class="str"&gt;"HD20"&lt;/span&gt;));

        GuitarRepeater.DataSource = guitars;
        GuitarRepeater.DataBind();
    }&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;What's Missing?&lt;br /&gt;&lt;/strong&gt;When the page runs, we all know that an instance of &amp;lt;kb:Guitar ... /&amp;gt; is rendered per guitar in the list.  So, at runtime, a guitar instance is handed out to each &amp;lt;kb:Guitar ... /&amp;gt; instance the repeater renders.  How does &amp;lt;kb:Guitar ... /&amp;gt; wire itself up to the databinding process?  How did it get a handle to the Guitar instance it was bound to?  How do you lay out your markup and control structure in a way that enlists the control in the databinding process and keep things nice and encapsulated?  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anemic, Non-Encapsulating Approach&lt;br /&gt;&lt;/strong&gt;I usually see it done (and have done myself) by exposing a property on the user control to accept the entity instance, the page code-behind reacting to the repeater's OnItemDataBound event, finding the control inside of the repeater, and handing it the instance.  Ah la...&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;lt;asp:Repeater ID=&lt;span class="str"&gt;"GuitarRepeater"&lt;/span&gt; runat=&lt;span class="str"&gt;"server"&lt;/span&gt; 
                    OnItemDataBound=&lt;span class="str"&gt;"Guitar_DataBound"&lt;/span&gt;&amp;gt;
&lt;/pre&gt;&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Guitar_DataBound( &lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RepeaterItemEventArgs e )
    {
        GuitarControl guitar = (GuitarControl) GuitarRepeater.FindControl(&lt;span class="str"&gt;"Guitar"&lt;/span&gt;);
        guitar.GuitarData = (Guitar) e.Item.DataItem;
    }&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;This works just fine, but the control is overly dependent on it's host.  It's host has to do a lot of work to get the control in the game.  Your control becomes very anemic at this point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Oblivious, Zombie-Control Approach&lt;br /&gt;&lt;/strong&gt;Another approach is to make the the control smart enough to go fetch it's own data.  You can drop it on a page and not only does it know how to render a guitar, but it also knows how to go get that guitar.  This approach usually manifests itself as very course-grain controls.  The example above would end up being a &amp;lt;kb:Guitar&lt;strong&gt;List&lt;/strong&gt; ... /&amp;gt; which housed it's own repeater and spits out the raw markup for the guitars inside of the repeater's &amp;lt;ItemTemplate&amp;gt;.  Ah la...&lt;/p&gt;&lt;pre class="csharpcode" style="width: 95%; height: 286px"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GuitarControl.ascx.cs" Inherits="WebApplication1.GuitarControl" %&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="GuitarRepeater"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="lblID"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="attr"&gt;&amp;amp;nbsp;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="lblName"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Repeater&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;kb:GuitarList&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="Guitars"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;kb:GuitarList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Somewhere in there the page code-behind would just hand the list of guitars to &amp;lt;kb:GuitarList ... /&amp;gt; and it would turn right around and use it to databind the repeater. This definitely solves the problem, but with this.... &amp;lt;kb:GuitarList ... /&amp;gt; is a zombie.  It's on an island all by itself.  Who knows how chatty it is with the database?  Is it okay to have multiple instances of this thing on one page?  I don't know.  In my opinion, this approach defeats the purpose of having this content in a control.  You'd be better off with it all in the page.&lt;/p&gt;
&lt;p&gt;The real question is - how do I layout my page and my controls in a way so that the controls are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fine-grained as I want them to be 
&lt;/li&gt;&lt;li&gt;Aware of the data that will be handed to them 
&lt;/li&gt;&lt;li&gt;Easy to drop on a page and enlist them in the databinding process 
&lt;/li&gt;&lt;li&gt;Self encapsulating&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;A Better Approach&lt;br /&gt;&lt;/strong&gt;ASP.NET is a beautiful platform.  They really thought this stuff through.  A user control does have a OnDataBinding method that can be overridden.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnDataBinding(EventArgs e)&lt;/pre&gt;
&lt;p&gt;Cool - that smells right, but now what?  EventArgs ain't doing anything useful for me.  NamingContainer... oh yes, NamingContainer.  All this stuff is already wired up for you.  Adding a little bit of code in the code-behind of the control itself does the trick.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnDataBinding(EventArgs e)
{
    IDataItemContainer container = &lt;span class="kwrd"&gt;this&lt;/span&gt;.NamingContainer &lt;span class="kwrd"&gt;as&lt;/span&gt; IDataItemContainer;

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (container != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
    {
        Guitar guitar = (Guitar) container.DataItem;

        &lt;span class="kwrd"&gt;this&lt;/span&gt;.GuitarID = guitar.GuitarID;
        &lt;span class="kwrd"&gt;this&lt;/span&gt;.Name = guitar.Name;
    }

    &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnDataBinding(e);
} &lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;

&lt;p&gt;Use the NamingContainer to grab the guitar entity and act on it.  If it's of type IDataItemContainer, then you're in business.  That's the control's cue that it's being databound as part of a list control.&lt;/p&gt;
&lt;p&gt;This approach has a lot of advantages.  The control now has the right amount of separation from the page.  Neither your page, nor your control is overly anemic - it's a harmonious distribution of work.  &lt;/p&gt;
&lt;p&gt;Another benefit of this is you can now hand off controls to different developers on the team for concurrent development.  The entity (in this case Guitar) becomes the "contract" between the control and the page.  The developer of this control really doesn't have to worry too much about the page that will be hosting it.  All he/she needs to know is that they will be getting a Guitar handed to them.  Similarly, the page developer doesn't have to do any upfront work to glue all these controls together - just databind as usual.  If the signature of the Guitar changes - no problem.  The control developer can new-up instances of Guitar to test with and act on it as he/she sees fit (encapsulation).&lt;/p&gt;
&lt;p&gt;Thoughts?  Comments?&lt;/p&gt;
&lt;p&gt;Happy Thanksgiving....&lt;/p&gt;&lt;img src="http://blog.kellybrownsberger.com/aggbug/22.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>kellyb</dc:creator>
            <guid>http://blog.kellybrownsberger.com/archive/2006/11/21/22.aspx</guid>
            <pubDate>Tue, 21 Nov 2006 06:00:00 GMT</pubDate>
            <wfw:comment>http://blog.kellybrownsberger.com/comments/22.aspx</wfw:comment>
            <comments>http://blog.kellybrownsberger.com/archive/2006/11/21/22.aspx#feedback</comments>
            <wfw:commentRss>http://blog.kellybrownsberger.com/comments/commentRss/22.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>