<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>bharry's WebLog</title><link>http://blogs.msdn.com/bharry/default.aspx</link><description>Everything you want to know about Visual Studio ALM and Farming</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Team Explorer 2005 update for interoperating with TFS 2010 is now available!</title><link>http://blogs.msdn.com/bharry/archive/2010/03/15/team-explorer-2005-update-for-interoperating-with-tfs-2010-is-now-available.aspx</link><pubDate>Mon, 15 Mar 2010 14:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9978707</guid><dc:creator>bharry</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9978707.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9978707</wfw:commentRss><description>&lt;P&gt;This morning we delivered the final version of the patch to Team Explorer 2005 that enables it to work well with a TFS 2010 server.&amp;nbsp; Of course, it will also still work well against a 2005 or 2008 server.&amp;nbsp; You can download the update here:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22215e4c-af6f-4e2f-96df-20e94d762689"&gt;&lt;FONT color=#0000ff size=3 face=Calibri&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=22215e4c-af6f-4e2f-96df-20e94d762689&lt;/FONT&gt;&lt;/A&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;and, of course, the&amp;nbsp;update for Team Explorer 2008 has been available for a while:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d"&gt;&lt;FONT color=#0066dd&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Good luck with it and let me know if I can help you,&lt;/P&gt;
&lt;P mce_keep="true"&gt;Brian&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9978707" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/TFS/default.aspx">TFS</category></item><item><title>Delays delivering mail alerts in TFS 2010</title><link>http://blogs.msdn.com/bharry/archive/2010/03/12/delays-delivering-mail-alerts-in-tfs-2010.aspx</link><pubDate>Fri, 12 Mar 2010 17:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977610</guid><dc:creator>bharry</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9977610.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9977610</wfw:commentRss><description>&lt;P&gt;I've seen a few people complain about longer delays delivering mail alerts in TFS 2010.&amp;nbsp; The reason is that, by default, we batch all notifications and process them every 2 minutes.&amp;nbsp; This was done to accomplish higher scale on very high volume servers.&amp;nbsp; In retrospect a 2 minute delay was not the best default.&amp;nbsp; We will look at changing this for SP1.&amp;nbsp; In the meantime, you can change the default yourself.&amp;nbsp; You can set the delay to 0 if you want, in which case you'll get the same behavior you saw in TFS 2008.&amp;nbsp; Chris Sidi wrote a &lt;A href="http://blogs.msdn.com/chrisid/archive/2010/03/05/faster-delivery-of-notifications.aspx" mce_href="http://blogs.msdn.com/chrisid/archive/2010/03/05/faster-delivery-of-notifications.aspx"&gt;post&lt;/A&gt; giving some details of how this works.&lt;/P&gt;
&lt;P&gt;Also, we are working on a Power Tool that will provide a UI for browsing and modifying these kinds of settings.&lt;/P&gt;
&lt;P&gt;Brian&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977610" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/TFS/default.aspx">TFS</category></item><item><title>TFS 2010 Installation and Upgrade success rates</title><link>http://blogs.msdn.com/bharry/archive/2010/03/12/tfs-2010-installation-and-upgrade-success-rates.aspx</link><pubDate>Fri, 12 Mar 2010 14:42:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977516</guid><dc:creator>bharry</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9977516.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9977516</wfw:commentRss><description>&lt;p&gt;As I’ve discussed in the past, we work VERY hard in this release to really improve the ease of installing TFS.&amp;#160; We’ve done everything from making more components optional, reducing prereqs, configuring prereqs for you, providing better defaults, implementing better diagnostic checks, making configuration serviceable and more.&amp;#160; It’s been a lot of work but I think it has really paid off in really transforming the TFS install experience from one that is very long and most people dread to one that’s pretty short, easy and problem free.&lt;/p&gt;  &lt;p&gt;Part of our “secret” to doing all of this has been intensive instrumentation.&amp;#160; We’ve used both Dr. Watson and SQM to collect tons of information from Betas, LCTPs and the RC to understand what people are doing and what problems they are having.&amp;#160; We’ve also used blogs, forums, emails and support to follow up diligently on virtually every report of problems to try to get to the bottom of it and make some improvement that will reduce or eliminate the chance that someone else hits in the future.&lt;/p&gt;  &lt;p&gt;I wanted to share with you some of the results.&amp;#160; Here’s some data on RC installation and upgrade success rates (as reported by our telemetry).&amp;#160; Some definitions:&lt;/p&gt;  &lt;p&gt;Initial Success – Means the user succeeded the first time they tried.&lt;/p&gt;  &lt;p&gt;Overall Success – Means the user failed one or more times but ultimately succeeded.&amp;#160; The failures can come from something as simple as trying to install the 64-bit version of TFS on a 32-bit OS (which quite a few people have tried over the various releases :)) to more involved issues like permissions not being right or misconfigured prereqs, etc.&lt;/p&gt;  &lt;p&gt;Failure – Means as best we can tell, the user was not able to get the installation working.&lt;/p&gt;  &lt;p&gt;Now all of this is a bit fuzzy due to limitations imposed by privacy restrictions.&amp;#160; We have to use indirect mechanisms to tell if two attempts are from the same “user”.&amp;#160; We actually can’t collect information on who the user is.&amp;#160; So it’s very possible that some number of the failures were actually Overall Successes but we weren’t able to tell that the ultimate success was the same user as the failure.&lt;/p&gt;  &lt;p&gt;Here’s the success rates for fresh installs for the RC:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002_thumb.jpg" width="644" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And here’s the success rates for upgrades for the RC:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002_thumb.gif" width="640" height="385" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s the versions people were upgrading from:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002%5B5%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image002%5B5%5D_thumb.gif" width="640" height="385" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;We have been able to identify and improve several issues that lead to the failures on the RC.&amp;#160; We are expecting that the RTM success rate will be even better.&amp;#160; By contrast in TFS 2008, the success rates were 5-10% lower than this.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here’s some other random and somewhat interesting statistics from our SQM data:&lt;/p&gt;  &lt;p&gt;Operating System TFS 2010 is installed on:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image001_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/clip_image001_thumb.jpg" width="644" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is the first release we’ve supported installing on a client OS and a client OS is the #1 install target and a total of almost 37% of installs are on client OSes.&lt;/p&gt;  &lt;p&gt;32 vs 64 bit installs:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/image_thumb.png" width="124" height="62" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is the first release we’ve supported 64-bit OSes and almost 2/3rds of installs are on them.&lt;/p&gt;  &lt;p&gt;And here’s how much memory people have in their TFS machines:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/TFS2010InstallationandUpgradesuccessrate_5098/image_thumb_2.png" width="194" height="105" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Brian&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977516" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/TFS/default.aspx">TFS</category></item><item><title>Pre-ordering VS 2010 Professional Edition</title><link>http://blogs.msdn.com/bharry/archive/2010/03/11/a-deal-for-pre-ordering-vs-2010-professional-edition.aspx</link><pubDate>Thu, 11 Mar 2010 12:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976798</guid><dc:creator>bharry</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9976798.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9976798</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;Microsoft Visual Studio 2010 Professional will launch on April 12 but you can beat the rush and secure your copy today by pre-ordering at the affordable estimated retail price of $549, a saving of $250. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;Along with all the great new features in Visual Studio 2010 (see &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/visualstudio" mce_href="http://www.microsoft.com/visualstudio"&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT color=#0000ff size=3&gt;www.microsoft.com/visualstudio&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;) Visual Studio 2010 Professional includes a 12-month MSDN Essentials subscription which gives you access to core Microsoft platforms: Windows 7 Ultimate, Windows Server 2008 R2 Enterprise, and Microsoft SQL Server 2008 R2 Datacenter. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;So visit &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/visualstudio/en-us/pre-order-visual-studio-2010" mce_href="http://www.microsoft.com/visualstudio/en-us/pre-order-visual-studio-2010"&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT color=#0000ff size=3&gt;http://www.microsoft.com/visualstudio/en-us/pre-order-visual-studio-2010&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt; to check out all the new features and sign up for this great offer.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Segoe UI','sans-serif'"&gt;&lt;FONT size=3&gt;Brian&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976798" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Programming Practices: Part 2 – Thoughts on TDD</title><link>http://blogs.msdn.com/bharry/archive/2010/03/10/programming-practices-part-2-thoughts-on-tdd.aspx</link><pubDate>Wed, 10 Mar 2010 15:19:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976235</guid><dc:creator>bharry</dc:creator><slash:comments>32</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9976235.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9976235</wfw:commentRss><description>&lt;p&gt;Well, it seems the last post wasn’t too controversial.&amp;#160; Let me try something that might be a bit more controversial.&amp;#160; Heck, it might even get some people down right agitated with me but that’s OK, disagreement is a useful tool to drive clarity and understanding.&lt;/p&gt;  &lt;p&gt;I don’t like &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank"&gt;Test Driven Development&lt;/a&gt;.&amp;#160; I don’t just not like it, I think it’s a bad idea.&lt;/p&gt;  &lt;p&gt;How’s that for an inflammatory statement?&amp;#160; Probably gonna make the cool kids black ball me :)&lt;/p&gt;  &lt;p&gt;I don’t spend a bunch of time debating the fine points of the various popular development techniques with people so I suspect someone is going to jump in and tell me I’ve missed the point of TDD – and maybe they are right.&amp;#160; Let me refine my statement a bit and then launch into both what I like about TDD and what I don’t like.&amp;#160; So here’s a little softer statement.&lt;/p&gt;  &lt;p&gt;I don’t like a literal interpretation of TDD.&lt;/p&gt;  &lt;p&gt;If I think about what the goals of TDD are (and I’m doing a bit of reverse engineering to get there), then here is what I like about TDD:&lt;/p&gt;  &lt;p&gt;1) &lt;strong&gt;Focus first on how you are going to use a thing, not the thing&lt;/strong&gt; – I watch many people early in their software development career (including myself) make the same mistake over and over.&amp;#160; They have an application to build.&amp;#160; They envision and architecture, decompose the components and then start building them.&amp;#160; After a few years they start to realize that the contracts between the components are really important so they start to get very rigorous about encapsulation, abstraction and contracts but their overall approach is the same.&lt;/p&gt;  &lt;p&gt;I can’t tell you how many times in my life I’ve done this and spent hours or days building enough components to get reasonably high up in the dependency stack and then go to build the next layer on top (it might be the UI or it might be a service interface or just a higher level abstraction) and realize, crap, it’s all wired wrong.&amp;#160; The API isn’t really built the way I like, the components aren’t factored quite right, etc.&amp;#160; The result is that i have to write more code at that next layer up than I should have to and the code doesn’t flow very well.&lt;/p&gt;  &lt;p&gt;The way I now approach this problem is that I always start at the top level (or a very high level) layer in the system and work down.&amp;#160; Specifically before I write any code for a class, API, layer, … I write one or more samples that use the API to to accomplish some purpose.&amp;#160; This shows me what I want the flow to be an what the natural abstractions are for the typical use cases of the service that I’m building.&amp;#160; After each sample, I go back and visit previous samples and refactor until I get all of the samples using a consistent API/abstraction, resulting in a minimal set of code and clear and easy to understand flow.&lt;/p&gt;  &lt;p&gt;For example, when I created the framework I’ve built for managing asynchronous UI in Windows Forms, before I created a line of code, I took the WinForms designer and wrote 6 different dialogs.&amp;#160; Each of them demonstrated some important characteristic or extensibility point I wanted to have.&amp;#160; The first was to show the bare minimum code one would have to write to get a dialog that would load asynchronously, be cancelable and give the user appropriate feedback.&amp;#160; The next showed that I could pass parameters to the background loading process, implement a refresh model, etc.&amp;#160; Other samples demonstrated how to coordinate the work of multiple background threads, different ways of displaying progress, different ways of notifying the background thread that it has been canceled, etc.&amp;#160; All the dialogs were fully written (and rewritten several times) before I wrote a line of code on the async framework.&amp;#160; While I didn’t cover every part of the API, I had a very clear picture of the API/contract/abstractions that I wanted and could begin to conceptualize the design of the async framework.&amp;#160; Of course, as I built the framework, I learned even more and went back a few times and refactored my samples but the samples always guided the work.&lt;/p&gt;  &lt;p&gt;In a sense, you can think of these samples as test cases – in fact I often use them that way.&amp;#160; Sounds a little like TDD, right?&amp;#160; It kind of is.&amp;#160; It’s also got some characteristics of &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank"&gt;Behavior Driven Development&lt;/a&gt; (BDD) but in a little bit I’ll tell why I see it as pretty different than a literal interpretation of TDD.&amp;#160; My first vote of confidence in TDD though, is that I do believe it is a technique that can help you focus on how to use something first and later on what it does.&lt;/p&gt;  &lt;p&gt;2) &lt;strong&gt;Don’t write code you don’t need (YAGNI)&lt;/strong&gt; – &lt;a href="http://en.wikipedia.org/wiki/YAGNI" target="_blank"&gt;YAGNI&lt;/a&gt; stands for You Ain’t Gonna Need It.&amp;#160; Another very common mistake I’ve seen in my career (and, again, made myself many times) is to try to imagine the ultimate end of where a program will go and build an architecture/implementation that sets you up to get there.&amp;#160; Good developers are always thinking about all the cool new features/requirements they’d like to add down the road and they’d like to make sure they build their code in a way that enables it.&lt;/p&gt;  &lt;p&gt;The problem is that, no matter how hard you try, you can’t predict the future.&amp;#160; You can sit here today and imagine what the requirements are going to be 6, 12, 24 months from now.&amp;#160; You may believe you see very clearly where it should go but you don’t.&amp;#160; Please take my word for that.&amp;#160; It’s a very hard conversation to have with an eager developer who really wants to “build it right”.&amp;#160; Don’t.&amp;#160; Build what you need now and don’t build more.&amp;#160; Down the path lies lots of unused code, unnecessary abstractions, complexity that no body understands the need for, etc.&lt;/p&gt;  &lt;p&gt;The issue is requirements change.&amp;#160; I promise.&amp;#160; 6 months from now you will look back and wonder what you were thinking.&amp;#160; Because you’ll have people actually using your app and they’ll be giving you tons of feedback on stuff they want and it won’t be the things you thought they’d want.&amp;#160; I’ve lived it 100 times at least.&lt;/p&gt;  &lt;p&gt;So does that mean that architecture doesn’t matter and you should just put on blinders and build exactly what you need this very moment.&amp;#160; No, I’m not quite saying that.&amp;#160; Design your code with clear abstractions and generality in mind.&amp;#160; Design it in a way that is extensible and composable. Just don’t add requirements that you don’t currently have.&amp;#160; If you build a system with a clean, well factored architecture: encapsulation, separation of responsibility, clear contracts, etc, your code will be in a good position to tackle new requirements as they come.&amp;#160; But assume no matter what you do, you’re going to be doing some refactoring of that code when you get there.&amp;#160; You might as well have less of it to refactor.&lt;/p&gt;  &lt;p&gt;Back to TDD.&amp;#160; I believe TDD helps you get here.&amp;#160; It’s a very rigorous focus on only writing the code that you can concretely identify that you need.&amp;#160; I like that.&lt;/p&gt;  &lt;p&gt;A note on extensibility – I was discussing this post with a colleague yesterday and he asked me to make sure I made a point about extensibility.&amp;#160; Nearly all developers like to make their code extensible.&amp;#160; However, many developers believe that their own implementation is “special” and has requirements that can’t be met by the extensibility interfaces.&amp;#160; Down that path is a bad extensibility model.&amp;#160; If you can’t build your own implementation in the same extensibility framework that you are providing for others to use, I can almost guarantee you they won’t be able to use it either.&lt;/p&gt;  &lt;p&gt;OK, so enough about what I like about TDD.&amp;#160; Let’s get to the juicy stuff – what don’t I like:&lt;/p&gt;  &lt;p&gt;1) &lt;strong&gt;I find it inefficient&lt;/strong&gt; – If you read my last post then you know that I refactor like crazy.&amp;#160; The idea of having unit tests that cover virtually every line of code that I’ve written that I have to refactor every time I refactor my code makes me shudder.&amp;#160; Doing this way makes me take nearly twice as long as it would otherwise take and I don’t feel like I get sufficient benefits from it.&lt;/p&gt;  &lt;p&gt;Don’t get me wrong, I’m a big fan of unit tests.&amp;#160; I just prefer to write them after the code has stopped shaking a bit.&amp;#160; In fact most of my early testing is “manual”.&amp;#160; Either I write a small UI on top of my service that allows me to plug in values and try it or write some quick API tests that I throw away as soon as I have validated them.&amp;#160; Once the code has started to settle, then I go back and write the unit tests that I’m going to use to help with regression testing down the road.&amp;#160; I don’t mean by this, that I wait until the app is done to build the tests but rather I do it iteratively at a component or requirement boundary.&lt;/p&gt;  &lt;p&gt;2) &lt;strong&gt;Backing into an architecture&lt;/strong&gt; – This is probably by biggest issue with a literal TDD interpretation.&amp;#160; TDD says you never write a line of code without a failing test to show you need it.&amp;#160; I find it leads developers down a dangerous path.&amp;#160; Without any help from a methodology, I have met way too many developers in my life that “back into a solution”.&amp;#160; By this, I mean they write something, it mostly works and they discover a new requirement so they tack it on, and another and another and when they are done, they’ve got a monstrosity of special cases each designed to handle one specific scenario.&amp;#160; There’s way more code than there should be and it’s way too complicated to understand.&lt;/p&gt;  &lt;p&gt;I believe in finding general solutions to problems from which all the special cases naturally derive rather than building a solution of special cases.&amp;#160; In my mind, to do this, you have to start by conceptualizing and coding the framework of the general algorithm.&amp;#160; For me, that’s a relatively monolithic exercise.&amp;#160; When I’ve got the basic framework in place (I may still have parts of it still stubbed out), then I start testing to make sure all of the special cases are handled by the algorithm the way I pictured (and of course, as I said in my last post, I do this by stepping through all of my test cases in the debugger to see exactly what it is doing).&lt;/p&gt;  &lt;p&gt;I’m not saying that it isn’t possible to build a good architecture following TDD.&amp;#160; I’m saying that lots of people are already inclined toward piecemeal architecture and I believe literal TDD enables these natural tendencies too much.&amp;#160; I also find the constant moving back and forth between test case and code to be too distracting while I’m trying to hold the design in my head and get the core algorithm fleshed out.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;I like many of the goals of TDD but I don’t like some of the mechanism to get there.&amp;#160; I suppose we’ll see how many of you are avid TDD proponents and maybe we’ll have vigorous debate about the pros, cons and interpretations of TDD.&amp;#160; I look forward to it.&lt;/p&gt;  &lt;p&gt;Till next time…&lt;/p&gt;  &lt;p&gt;Brian&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976235" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Programming Practices: Part 1 – Watching from a distance</title><link>http://blogs.msdn.com/bharry/archive/2010/03/09/programming-practices-part-1-watching-from-a-distance.aspx</link><pubDate>Tue, 09 Mar 2010 14:12:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9975474</guid><dc:creator>bharry</dc:creator><slash:comments>17</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9975474.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9975474</wfw:commentRss><description>&lt;p&gt;I figured I’d start the series with a more abstract post about what watching me code looks like.&amp;#160; It was interesting to observe myself doing it because I didn’t really realize the degree to which I do some things.&amp;#160; If I were to summarize my overall approach to coding with a simple description, I’d call it “Annealing” – from the Encarta dictionary: “metallurgy craft transitive and intransitive verb to subject an alloy, metal, or glass to a process of heating and slow cooling to make it tougher and less brittle.”&amp;#160; Or in more of a software sense, “Simulated Annealing” – from Wikipedia: “a technique for searching for a solution in a space otherwise too large for &amp;quot;ordinary&amp;quot; search methods to yield results”.&lt;/p&gt;  &lt;p&gt;What does that mean?&lt;/p&gt;  &lt;p&gt;Let me try talking about it as a set of principles and techniques:&lt;/p&gt;  &lt;p&gt;1) &lt;strong&gt;Working code every few hours&lt;/strong&gt; – I find I can’t stand to have code that is in pieces all over the floor.&amp;#160; I don’t ever like to be far from code that works.&amp;#160; My coding is defined by a sequence of “stable” points that are no more than a few hours apart.&amp;#160; A “stable point” is a state where all of the code compiles, it runs and it does something useful.&amp;#160; It may not be anywhere near doing what the ultimate application is intended to do but it does some fraction of it.&amp;#160; A quantum of work transitions from one stable point to the next.&lt;/p&gt;  &lt;p&gt;I find that as I approach a problem, I think about how I am going to build the code in bite sized chunks.&amp;#160; It’s kind of funny to watch but if I get a few hours into something and I’m not very close to a “stable point”, I actually get anxious.&amp;#160; I start getting nervous and looking for ways to stub out or cauterize parts of the application so I can get back to something I can build and hit F5 on.&amp;#160; I think part of this is related to why I got into programming in the first place – I’m a huge fan of the “instant gratification” that you get programming.&amp;#160; I can think of no other profession where you can start with nothing and in a few short hours have built something really useful.&amp;#160; But more practically, it’s an important way to make sure you don’t get lost in the weeds of a solution.&lt;/p&gt;  &lt;p&gt;2) &lt;strong&gt;Prove the concept&lt;/strong&gt; – When I’m getting ready to leave a stable point, I find the first thing I want to do is map my path to the next stable point.&amp;#160; I choose some specific, containable goal – add a dialog, a menu item, move an operation to a background thread, add a control to a form, something.&amp;#160; Before I enter the chaos between stable points I want to prove to myself that I know how to get to the next one.&amp;#160; I often start, particularly if I’m working with API surface I’m unfamiliar with, by doing a rapid prototype of the core concepts that I need.&amp;#160; I don’t care what the code looks like. I don’t modularize anything.&amp;#160; I don’t worry about comments, variable names, code organization, error handling, performance, anything.&amp;#160; I just want to touch each of the core APIs that I need to use and prove that I can get access to the information that I need and understand roughly what I need to do with it.&lt;/p&gt;  &lt;p&gt;I usually get it all the way to running code and step through it in the debugger so that I can see all of the information flow and ensure that I understand all of the side effects, etc.&amp;#160; To a first approximation, I then throw it all away.&amp;#160; Sometimes, I’ll just comment out the routine(s) that I wrote and keep them around a while for reference and a source of code snippets.&amp;#160; I step back and conceptualize an organization of the code that feels clean and I then start writing the code “for real”.&lt;/p&gt;  &lt;p&gt;At some level this might feel like a waste of time but I believe it is a huge time saver for me.&amp;#160; It usually doesn’t take me more than 15-20 minutes or so to explore the key concepts of the few hour leap from one stable point to the next and I often learn a ton in the process and make significant shifts in my approach as a result.&amp;#160; It saves me from getting an hour or two into something and realizing that some assumption I made at the beginning was invalid and I need to redo everything I just did.&amp;#160; I think it also helps ensure that I end up with better organized code when I’m done.&lt;/p&gt;  &lt;p&gt;3) &lt;strong&gt;Refactor, Refactor, Refactor&lt;/strong&gt; – I never really realized how much I just naturally do this.&amp;#160; I’ll bet the net effect is that I write any given stable point to stable point quantum 2 or 3 times in the few hours I work on it.&amp;#160; I start with a conceptual picture of the algorithm but I don’t try to plan out everything.&amp;#160; I start writing the code organized in a way that feels the “cleanest” but as soon as I realize something’s not right, I refactor.&amp;#160; I’m constantly splitting methods, reordering code, reorganizing data structures, building abstractions, etc.&amp;#160; This is the main reason I started by talking about annealing – because that’s what the process feels like to me.&amp;#160; I keep jiggling the code, gradually reducing the temperature until all of the crystals line up just right and I have a very clean, maintainable, reusable, fast, robust, … implementation.&lt;/p&gt;  &lt;p&gt;I now realize that I used to do this even before “refactoring tools” were invented but I am finding some of the refactoring tools to be very useful in saving me some typing – though they have a long way to go to make me really happy.&amp;#160; The VS ones, at least, don’t automatically do everything I want and don’t always have the flexibility for me to control it.&amp;#160; Examples – Extract method often leaves me with a lot of clean up to do.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It doesn’t give me the ability to control parameter ordering (and as you’ll see from this series, I’m anal about everything).&amp;#160; I am very particular about the ordering of parameters.&lt;/li&gt;    &lt;li&gt;It doesn’t allow me to control the types of parameters to the method.&amp;#160; Every method should have an abstraction or contract of what it operates on and what it does.&amp;#160; I might want to type a parameter as a base class of the passed object.&amp;#160; I might want to pass a one or more members of an object that is used rather than the whole object (because the type of the object is not part of the method’s contract).&lt;/li&gt;    &lt;li&gt;It doesn’t allow me to extract to a different class.&lt;/li&gt;    &lt;li&gt;It rarely puts the method where I want it in the class (more on this in future posts).&lt;/li&gt;    &lt;li&gt;Lastly, I find that before I extract the method, I actually want to type the call to the extracted function.&amp;#160; It’s part of making sure I understand the factoring of the code and what the contract is.&amp;#160; I wish I could type the call site, then select the code I want to extract and say – extract it such that the call matches what I just typed.&amp;#160; But instead, of course, it extracts it, adds another call site, which I immediately delete and then go fix up the parameter types and order, etc.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I write the code, I comment lightly.&amp;#160; Because I refactor so much, I don’t want to waste time writing and rewriting comments, method contract descriptions, etc.&amp;#160; But once I’ve gotten the code just right, I polish it.&amp;#160; I go back over all of it making sure I like the abstractions and the flow, I comment everything and I move all of the methods that I’ve written to their permanent resting place in the class – I’m very particular about the order of methods in a class (did I mention I’m anal about everything? :)).&lt;/p&gt;  &lt;p&gt;4) &lt;strong&gt;Step through everything in the debugger&lt;/strong&gt; – Before I start polishing a quantum of work, I walk through everything in the debugger.&amp;#160; I conceive and write or manually execute test cases for every interesting scenario and I step through all of them in the debugger.&amp;#160; It’s not sufficient that the code works.&amp;#160; I’m a firm believer that you don’t actually understand your code if you don’t understand exactly how and why it works and the only way to do that is to step through it in the debugger and see what it is actually doing.&lt;/p&gt;  &lt;p&gt;You’d be stunned to realize how often the results of code match what you expect but the execution path is nothing like what you expect.&amp;#160; This is one of my greatest secrets to getting high quality, high performance code that I never have to come back and revisit again.&amp;#160; When it’s done, it’s done done :)&lt;/p&gt;  &lt;p&gt;5) &lt;strong&gt;Paper and pencil&lt;/strong&gt; – The last thing that I’ll mention that’s perhaps a bit odd and I think you’d notice if you sat and watched me code is that I always have a pencil and paper in front of me.&amp;#160; As I’m coding, I’m constantly drawing pictures of data structures, writing out sample data, hand walking through the algorithm on paper to see how things work.&amp;#160; I suspect it’s just a quirk of mine but there’s no better way for me to think through the algorithms as I go.&amp;#160; When I’m done with a quantum of work, I always have a sheet of paper full of scribbles.&amp;#160; I generally extract some of the value and then just throw the paper away.&amp;#160; Some of the scribbles become part of the documentation – pictures, algorithm descriptions, etc.&amp;#160; Some become the source of test cases that I keep to serve as regression tests in the event that I ever need to come back to the code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At a very high level, that’s what watching me code looks like.&amp;#160; Some of what I’ve written here, I think of as quirks of my personality – heavy use of pencil and paper, for example.&amp;#160; But most of it I consider important practices to produce high quality code efficiently.&amp;#160; I can imagine a lot of people looking at this and saying, “wow, that sounds expensive” and if you are banging out a one off project with a short lifetime, it’s really not worth it.&amp;#160; But if you are writing code that is part of a significant application, is going to live for years and potentially have other people needing to understand it, I believe these practices are invaluable.&lt;/p&gt;  &lt;p&gt;I’m not sure I’ve captured everything.&amp;#160; Perhaps in the discussions that follow and subsequent posts I’ll think of a few more “high level” things.&amp;#160; We’ll see.&lt;/p&gt;  &lt;p&gt;Brian&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9975474" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Series on Programming Practices</title><link>http://blogs.msdn.com/bharry/archive/2010/03/08/series-on-programming-practices.aspx</link><pubDate>Mon, 08 Mar 2010 15:24:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9974791</guid><dc:creator>bharry</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9974791.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9974791</wfw:commentRss><description>&lt;p&gt;This is the first post in a series I’ve decided to write on my Programming Practices.&amp;#160; I’m not trying to say everyone has to do it the way I do it but I figured it might be interesting to talk about how I do it and have some fun, if sometimes controversial, discussions about it.&lt;/p&gt;  &lt;p&gt;A little before Christmas, when I decided that I really wanted to understand the Beta 2 performance issues first hand, I picked up a programming project that I’d been kicking around and started to get serious about it.&amp;#160; My job doesn’t really afford me the opportunity to spend a lot of time writing code any more but I’ve gone out of my way to really set aside some time to do it.&amp;#160; Over the past few months, I’ve probably averaged 10-20 hours a week of dedicated coding time.&lt;/p&gt;  &lt;p&gt;As I was coding I decided to watch myself closely and try to observe what practices I naturally follow with the goal of eventually sharing them more broadly.&amp;#160; I’ve generally always been very proud of the productivity, organization, performance and quality of my coding.&amp;#160; Once you see it, you can decide for yourself whether you like it, dislike it or just think it’s stupid :)&amp;#160; I’m sure the practices don’t apply to everyone or every application type.&amp;#160; I have always done commercial software and much of it at a fairly low level “systems” level.&amp;#160; I’m not sure how much of what I’m going to describe will apply to someone who is primarily a jscript/html coder.&amp;#160; You can judge for yourself.&lt;/p&gt;  &lt;p&gt;The project I picked up is a new version of TFSServerManager.&amp;#160; It’s particularly interesting because it has many components.&amp;#160; It has a client GUI, written in WinForms (I’ve played with WPF but I can’t say I’m proficient at it enough to feel particularly competent – once I finish this project, I think I’m going to try a full WPF/Silverlight app).&amp;#160; It also has a web service that runs on the TFS server and augments TFS with a few capabilities that aren’t available “out of the box” – doing some SQL access.&amp;#160; There’s some ASPX pages for lightweight user interaction for a few things (more on that later).&amp;#160; And lastly there’s a command line installation utility.&amp;#160; A fairly diverse technology set in all.&lt;/p&gt;  &lt;p&gt;I also took this project as an opportunity to explore asynchronous rich client programming a bit more.&amp;#160; It pains me that the TFS client makes so many web service calls on the UI thread causing the IDE to “pause” if the server is ever slow to respond.&amp;#160; It ended up this way because we didn’t lay out a great pattern for all of the developers to follow up front and stuff just kind of unfolded the way it did because it’s easier to put all the logic on the UI thread than it is to partition it.&amp;#160; So as part of this project I set out to have every single server call occur on a background thread and create an architecture that would make it easy to do.&amp;#160; My goal is to make it no harder to program this way than putting all the logic on the UI thread.&amp;#160; That goal is a bit harder to achieve with WinForms because it does not lend itself to good presentation/computation separation (e.g. MVC – Model View Controller or one of the variants).&amp;#160; When I start my WFP project, I’m going to adjust the pattern for MVC and I think it will get even better.&amp;#160; Anyway, through the course of this series, I’ll share with you the architecture I created.&lt;/p&gt;  &lt;p&gt;I won’t be surprised if it takes me weeks, or even months, to get through the whole series.&amp;#160; I’ve got a lot of thoughts and I think it’s going to be a pretty big investment for me to make them all intelligible :)&lt;/p&gt;  &lt;p&gt;I hope you find it useful,&lt;/p&gt;  &lt;p&gt;Brian&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9974791" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>VS 2010 RC Patch available for the # 1 Connect bug</title><link>http://blogs.msdn.com/bharry/archive/2010/03/06/vs-2010-rc-patch-available-for-the-1-connect-bug.aspx</link><pubDate>Sat, 06 Mar 2010 13:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9974103</guid><dc:creator>bharry</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9974103.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9974103</wfw:commentRss><description>&lt;P&gt;The most commonly reported/voted for Connect bugs in the Release candidate had to do with the ASP.NET designer not auto generating controls properly - it would sometimes just omit them.&amp;nbsp; Very frustrating if you are trying to use it.&amp;nbsp; We've just release a patch (the 3rd RC patch in total) to address this set of issues.&amp;nbsp; You can read more about the patch here:&amp;nbsp; &lt;A href="http://blogs.msdn.com/webdevtools/archive/2010/03/05/hotfix-for-issue-with-auto-generated-designer-files-not-adding-controls.aspx"&gt;http://blogs.msdn.com/webdevtools/archive/2010/03/05/hotfix-for-issue-with-auto-generated-designer-files-not-adding-controls.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And you can download and install it here: &lt;A href="http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=27117"&gt;http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=27117&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Hopefully this will address this issue and get you moving forward again.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Brian&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9974103" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Next Generation Testing with Visual Studio 2010 – Additional Events</title><link>http://blogs.msdn.com/bharry/archive/2010/03/05/next-generation-testing-with-visual-studio-2010-additional-events.aspx</link><pubDate>Fri, 05 Mar 2010 17:53:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973663</guid><dc:creator>bharry</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9973663.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9973663</wfw:commentRss><description>&lt;p&gt;A few days ago I posted a schedule of upcoming events in the Midwest focusing on Visual Studio 2010. That list represented only a small subset of the events planned for VS2010. There have been events all over North America and I suspect around the world. As these events are managed by the individual regions in which they are located I do not have one comprehensive list available--I'm posting them as people in the field organizing the events send them to me.&amp;#160; I presented at events in Boston, Wash DC, Reston VA, Durham NC and Chicago IL, but I've only been involved in a fraction of the full event schedule.&amp;#160; There is also a ton of online content which you can check out &lt;a href="http://channel9.msdn.com/" target="_blank"&gt;channel9.msdn.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here are details I have just received on events planned in Switzerland for those of you in that locale:&lt;/p&gt;  &lt;p&gt;· Microsoft is sponsor at the &lt;b&gt;Swiss Testing Day on March 17, 2010&lt;/b&gt; in Zurich/Switzerland (&lt;a href="http://www.swisstestingday.ch"&gt;www.swisstestingday.ch&lt;/a&gt;); and Bj Rollins from Microsoft Corp will give one of the keynotes (by the way: the other one is given by James Whittaker who moved from Microsoft to Google…)&lt;/p&gt;  &lt;p&gt;· At the &lt;b&gt;Swiss TechDays on April 6 – 7, 2010&lt;/b&gt; in Basle/Switzerland, Brian Keller will have two sessions on Testing (&lt;a href="http://www.techdays.ch"&gt;www.techdays.ch&lt;/a&gt;; day 2). This is THE event to attend in Switzerland to learn more about Visual Studio 2010 and .NET FW 4.0!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973663" width="1" height="1"&gt;</description></item><item><title>Second Intellisense patch for the 2010 RC</title><link>http://blogs.msdn.com/bharry/archive/2010/03/05/second-intellisense-patch-for-the-2010-rc.aspx</link><pubDate>Fri, 05 Mar 2010 15:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973569</guid><dc:creator>bharry</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9973569.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9973569</wfw:commentRss><description>&lt;P&gt;We had a number of reports about Intellisense crashes soon after the RC was released.&amp;nbsp; After much investigation, the vast majority of reports have boiled down to two issues.&amp;nbsp; We released a &lt;A href="http://blogs.msdn.com/bharry/archive/2010/02/15/multi-touch-fix-for-vs-2010-rc-available.aspx" mce_href="http://blogs.msdn.com/bharry/archive/2010/02/15/multi-touch-fix-for-vs-2010-rc-available.aspx"&gt;patch&lt;/A&gt; for the more common of the two a week or so ago.&amp;nbsp; We've just released a &lt;A href="http://blogs.msdn.com/visualstudio/archive/2010/03/02/second-patch-now-available-for-intellisense-crashes-in-vs-2010-rc.aspx" mce_href="http://blogs.msdn.com/visualstudio/archive/2010/03/02/second-patch-now-available-for-intellisense-crashes-in-vs-2010-rc.aspx"&gt;patch for the second&lt;/A&gt; and customers who have tried the two patches are reporting that all of their Intellisense crashes are gone.&lt;/P&gt;
&lt;P&gt;Try them out and let us know if you are still seeing any IDE instability.&lt;/P&gt;
&lt;P&gt;Brian&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973569" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Optimizing Visual Studio 2010 and WPF applications for Remote Desktop</title><link>http://blogs.msdn.com/bharry/archive/2010/03/05/optimizing-visual-studio-2010-and-wpf-applications-for-remote-desktop.aspx</link><pubDate>Fri, 05 Mar 2010 15:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973561</guid><dc:creator>bharry</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9973561.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9973561</wfw:commentRss><description>&lt;P&gt;As part of our work to improve VS performance after VS 2010 beta 2, we've done a ton of analysis of VS in various scenarios.&amp;nbsp; One of them is VS over remote desk top.&amp;nbsp; We've made a number of fixes to improve the performance but there are also some things you can do to configure remote desktop in ways that are significantly less bandwidth intensive and will make your experience better.&amp;nbsp; Jossef wrote a blog post about this recently that you might want to check out if you use RDP a lot: &lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: blue; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A href="http://blogs.msdn.com/jgoldb/archive/2010/02/27/optimizing-visual-studio-2010-and-wpf-applications-for-remote-desktop.aspx"&gt;http://blogs.msdn.com/jgoldb/archive/2010/02/27/optimizing-visual-studio-2010-and-wpf-applications-for-remote-desktop.aspx&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: blue; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Brian&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973561" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>VS 2005 support for TFS 2010 coming soon</title><link>http://blogs.msdn.com/bharry/archive/2010/03/05/vs-2005-support-for-tfs-2010-coming-soon.aspx</link><pubDate>Fri, 05 Mar 2010 14:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973523</guid><dc:creator>bharry</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9973523.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9973523</wfw:commentRss><description>&lt;P&gt;I know many of you have been waiting patiently for our update to Team Explorer 2005 that will enable it to interact with TFS 2010.&amp;nbsp; In the past I've said it would be available by the 2010 launch.&amp;nbsp; I just wanted to give you a status update and let you know that we are still hard at work on it and are almost done.&amp;nbsp; We are just doing final QA validation and will be releasing it shortly.&amp;nbsp; Right now it looks like it should be available by March 19th.&amp;nbsp; As with all dates, don't take that as a hard and fast commitment but rather a target we are shooting for and believe we can make.&amp;nbsp; Stay tuned and I'll let you know when the download is available.&lt;/P&gt;
&lt;P&gt;Brian&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973523" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/TFS/default.aspx">TFS</category></item><item><title>MSDN Forum for TFS + Eclipse and other platforms</title><link>http://blogs.msdn.com/bharry/archive/2010/03/05/msdn-forum-for-tfs-eclipse-and-other-platforms.aspx</link><pubDate>Fri, 05 Mar 2010 13:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9973498</guid><dc:creator>bharry</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9973498.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9973498</wfw:commentRss><description>&lt;P&gt;As of today, we now have a new &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/tee" mce_href="http://social.msdn.microsoft.com/Forums/en-US/tee"&gt;MSDN forum dedicated to discussion&amp;nbsp;of heterogeneous development&lt;/A&gt; using Visual Studio ALM products.&amp;nbsp; If you've got questions or want to learn more please check it out.&amp;nbsp; Our good friend Martin Woodward will be your host and make sure you get answers to your questions.&lt;/P&gt;
&lt;P&gt;Brian&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9973498" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/bharry/archive/tags/TFS/default.aspx">TFS</category></item><item><title>Microsoft Visual Studio Team Explorer 2010 codename “Eaglestone”</title><link>http://blogs.msdn.com/bharry/archive/2010/03/04/microsoft-visual-studio-team-explorer-2010.aspx</link><pubDate>Thu, 04 Mar 2010 18:06:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9972999</guid><dc:creator>bharry</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9972999.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9972999</wfw:commentRss><description>&lt;p&gt;This morning, we are announcing the beta release of Microsoft Visual Studio Team Explorer 2010 codename “Eaglestone”, the Eclipse plugin and cross-platform command line assets that were &lt;a href="http://blogs.msdn.com/bharry/archive/2009/11/09/microsoft-has-acquired-the-teamprise-client-suite.aspx"&gt;acquired from Teamprise back in November&lt;/a&gt;. You can download the bits &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=3c9454e0-523a-4ee1-b436-5c6fc2110b34"&gt;here&lt;/a&gt;, and participate in the associated Microsoft Connect community &lt;a href="https://connect.microsoft.com/site1043"&gt;here&lt;/a&gt;. I want to use this post to provide some detail on what we’ve released here and a little information on where we’re taking the new heterogeneous client for TFS.&lt;/p&gt;  &lt;p&gt;The beta release contains what we consider to be the essential features necessary to claim that we’re a client for TFS 2010.&amp;#160; We’ve been trying to strike a balance between including 2010 features, and getting the product to market, so you won’t see everything here yet.&amp;#160; But it’s coming… with time… more below.&lt;/p&gt;  &lt;p&gt;So, what’s in this release?&amp;#160; Well, in addition to the work needed to make it a Microsoft product (modifying &lt;a href="http://www.woodwardweb.com/teamprise/whats_in_a_name.html"&gt;assembly/namespace names, updating branding and artwork&lt;/a&gt;, running through some compliance tools to ensure the product meets Microsoft standards), you’ll primarily find the following:&lt;/p&gt;  &lt;p&gt;1. We’ve reacted to all of the architectural changes in TFS 2010, which primarily shows up in our support for Team Project Collections but it also means that the Eclipse plug-in supports all the configurations for project portal and reporting services that are possible (including not having any configured at all)&amp;#160; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/project_collections_mac_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="project_collections_mac" border="0" alt="project_collections_mac" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/project_collections_mac_thumb.png" width="704" height="584" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. We’ve added the enhanced work item linking and hierarchy capabilities.&amp;#160; You can now define typed links, query for work items based on links, and work with work item hierarchies.    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/wit_linking_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="wit_linking" border="0" alt="wit_linking" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/wit_linking_thumb_1.png" width="704" height="529" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. We’ve added support for the new WF-based team build.&amp;#160; We don’t have full team build support, but the basic scenarios of defining a build, launching a build, and monitoring your builds work well.&lt;/p&gt;  &lt;p&gt;4. We’ve reacted to a lot of underlying changes in the source control version model with respect to how branching, merging, and renames happen. History now follows branches and merges. Branches are proper first class citizens in the source control explorer.    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/branching_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="branching" border="0" alt="branching" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/6224bd9bffe4_9481/branching_thumb.png" width="704" height="529" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The team build features are a little special here because the download site doesn’t include everything you’ll need to use them.&amp;#160; You may recall that Teamprise shipped a set of msbuild extensions under the &lt;a href="http://labs.teamprise.com/"&gt;Teamprise Labs&lt;/a&gt; brand that allowed Team Build to invoke Java build tools like Ant and Maven.&amp;#160; Our analog for Teamprise Labs is our power tools, and we’re currently working on incorporating those extensions into the next TFS 2010 power tool release.&amp;#160; In the meantime, our fantastic community has stepped up and you can already find a TFS 2010 compatible version of the old Teamprise Build Extensions from MVP &lt;a href="http://sstjean.blogspot.com/2010/02/teamprise-build-extensions-for-tfs-2010.html"&gt;Steve St. Jean’s blog&lt;/a&gt;. The Microsoft release will include both MSBuild tasks as well as workflow activities for the TFS 2010 version of the build extensions.&lt;/p&gt;  &lt;p&gt;So, what isn’t in this release?&amp;#160; Well, the 2 biggest missing 2010 features are gated checkin and branch visualization.&amp;#160; You can do gated checkin with this release, but the experience isn’t as nice as what you get in Visual Studio 2010.&amp;#160; In particular, you don’t get proactively notified of your checkin completing with an opportunity to quickly reconcile changes in your workspace with changes that just got committed to the server.&amp;#160; Instead, your committed changes will remain pending in your workspace, and you’ll encounter conflicts the next time you do a get latest or attempt a subsequent checkin.&amp;#160; The changes are then reconciled as you deal with these conflicts.&amp;#160; On branch visualization, we don’t have anything yet.&amp;#160; We love the feature and are excited about bringing it to Eclipse, but it’s going to take some time.&lt;/p&gt;  &lt;p&gt;If you look hard enough, you’ll also find that we cut a few corners to save time as we were implementing these features.&amp;#160; We hope you won’t notice, though, so I’m not going to tell you where they are.&lt;/p&gt;  &lt;p&gt;This is a heterogeneous client, so it probably makes sense to discuss what environments it supports.&amp;#160; The download site spells this out in great detail, but essentially it works on Windows, Mac, Linux, Solaris, AIX, and HP-UX.&amp;#160; The Eclipse plugin supports Eclipse versions back to 3.0 as well as several IDEs built on Eclipse such as Rational Application Developer, Adobe Flex Builder, and Aptana Studio.&lt;/p&gt;  &lt;p&gt;As with the Visual Studio 2010 release, this client supports TFS 2010 and TFS 2008.&amp;#160; We also made the decision to support TFS 2005 since the Teamprise company will be removing their 3.x client from the market when we RTM.&amp;#160; We didn’t want TFS 2005 customers to be without a solution for Java development.&amp;#160; That said, we’ll likely drop support for TFS 2005 in the next release as customers will still be able to get this release if necessary, and it already contains full TFS 2005 feature support.&lt;/p&gt;  &lt;p&gt;This is an English-only release.&amp;#160; That is another corner we cut to get this to market quickly.&amp;#160; Teamprise had never localized their product in the past, and there’s going to be a decent amount of work necessary to get it there.&amp;#160; We plan to do this for the next release, and localize it into the same set of languages that VS is localized into.&amp;#160; &lt;/p&gt;  &lt;p&gt;Those of you who are familiar with the Teamprise product line are likely asking what happened to the Teamprise Explorer.&amp;#160; If you aren’t already familiar, Teamprise offered a stand-alone client for TFS called “Explorer” that was popular for non-Windows users who weren’t building Java apps, and weren’t friendly with the command line.&amp;#160; The Explorer is an asset that we acquired, but there are issues with how it is built that require us to do some deeper thinking before we can ship it.&amp;#160; In particular, because the Explorer client redistributes components of Eclipse, we have to deal with security, servicing, and intellectual property concerns that we don’t have to worry about with the Eclipse plugin.&amp;#160; We are committed to shipping this client, but we didn’t want to hold up the plugin and command line while we figured out these issues.&lt;/p&gt;  &lt;p&gt;We are aggressively moving towards an RTM by the launch of Visual Studio 2010 next month. We will also announce final details on the product branding and pricing at that time.&amp;#160; After that, we’ll turn the crank again to add missing features, languages, etc. and hopefully release again in the fall.&amp;#160; Eventually, we plan to sync the release of these tools with the release of Visual Studio and ensure that we’ve got appropriate feature parity with the latest version of the server when it releases. We are also going to keep up to speed with the new releases in the Eclipse community and ensure that we are compatible with the latest release there.&lt;/p&gt;  &lt;p&gt;I’m very keen to hear what you think of our first plug-in for Eclipse so please give it a try and &lt;a href="https://connect.microsoft.com/site1043"&gt;let us know&lt;/a&gt;. For existing Teamprise customers who wish to try out this beta release we would recommend that you use a separate Eclipse instance, Eclipse workspace and TFS workspace. That way you can run the different versions side-by-side without any problems. For more information on installing the plug-in, see the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=3c9454e0-523a-4ee1-b436-5c6fc2110b34"&gt;download site&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9972999" width="1" height="1"&gt;</description></item><item><title>Next Generation Testing with Visual Studio 2010</title><link>http://blogs.msdn.com/bharry/archive/2010/03/01/next-generation-testing-with-visual-studio-2010.aspx</link><pubDate>Mon, 01 Mar 2010 14:55:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9970867</guid><dc:creator>bharry</dc:creator><slash:comments>21</slash:comments><comments>http://blogs.msdn.com/bharry/comments/9970867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/bharry/commentrss.aspx?PostID=9970867</wfw:commentRss><description>&lt;p&gt;Join us for a sneak peek at some of the new capabilities in Microsoft® Visual Studio® 2010, a landmark release of the premier development and testing toolset for Windows®, Web, and cloud development.&lt;/p&gt;  &lt;p&gt;Microsoft has made significant investments to improve the testing/QA tools in Visual Studio 2010. The Next Generation Testing Event is your exclusive opportunity to experience the incredible power and capabilities these new tools bring to the QA and testing process. At this event, you'll get a comprehensive overview, as well as a deep dive, into the range of new tools and how they can enable you to improve the way you develop and test software on the Microsoft platform.&lt;/p&gt;  &lt;p&gt;This will be an invaluable opportunity to learn how to take software development to the next level with the new testing features in Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;EVENT AGENDA:&lt;/u&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Registration, Welcome, Refreshments - 30 min.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;The QA Challenge - 30 min.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;Taking Testing to a New Level - 3 hours &lt;/li&gt;    &lt;li&gt;Making It Real - 30 min.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;Prize Drawing - 15 min. &lt;/li&gt;    &lt;li&gt;Please feel free to forward to a co-worker you think would &lt;/li&gt;    &lt;li&gt;benefit from attending this event.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;AUDIENCE:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Software testers &lt;/li&gt;    &lt;li&gt;QA professionals &lt;/li&gt;    &lt;li&gt;Developers&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;PRIZES AND GIVEAWAYS:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Attendees will have a chance to win a &lt;a href="http://zune.net/en-us/products/zunehd/default.htm" target="_blank"&gt;new Zune HD&lt;/a&gt;! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Register for a date and location near you!&amp;#160; Follow the appropriate registration link below OR call (877) 673-8368 and reference the event ID.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="648"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="143"&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="141"&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="198"&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;strong&gt;Event ID &amp;amp; Registration Link&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;3/2/2010&lt;/td&gt;        &lt;td valign="top" width="142"&gt;Memphis&lt;/td&gt;        &lt;td valign="top" width="198"&gt;5:30-8:30pm Central Time&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;a href="http://www.camla.com/Email/URL12526.asp?A=0" target="_blank"&gt;1032441935&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;3/2/2010&lt;/td&gt;        &lt;td valign="top" width="143"&gt;Dallas&lt;/td&gt;        &lt;td valign="top" width="197"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;a href="http://www.camla.com/Email/URL12527.asp?A=0" target="_blank"&gt;1032441937&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;3/3/2010&lt;/td&gt;        &lt;td valign="top" width="144"&gt;Nashville&lt;/td&gt;        &lt;td valign="top" width="197"&gt;5:30-8:30pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12528.asp?A=0" target="_blank"&gt;1032441936&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;3/3/2010&lt;/td&gt;        &lt;td valign="top" width="145"&gt;Houston&lt;/td&gt;        &lt;td valign="top" width="197"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12529.asp?A=0" target="_blank"&gt;1032441938&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;3/4/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Cincinnati&lt;/td&gt;        &lt;td valign="top" width="196"&gt;5:30-8:30pm Eastern Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12530.asp?A=0" target="_blank"&gt;1032441934&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/12/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Bloomington&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12531.asp?A=0" target="_blank"&gt;1032442187&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/12/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Southfield&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Eastern Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12532.asp?A=0" target="_blank"&gt;1032441932&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/15/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Milwaukee&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12533.asp?A=0" target="_blank"&gt;1032441929&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/15/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;St. Louis&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12534.asp?A=0" target="_blank"&gt;1032441930&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/15/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Columbus&lt;/td&gt;        &lt;td valign="top" width="196"&gt;5:30-8:30pm Eastern Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12535.asp?A=0" target="_blank"&gt;1032442186&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/16/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Kansas City&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12536.asp?A=0" target="_blank"&gt;1032441931&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/16/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Cleveland&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Eastern Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://www.camla.com/Email/URL12537.asp?A=0" target="_blank"&gt;1032441933&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;3/18/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Indianapolis&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Eastern Time&lt;/td&gt;        &lt;td valign="top" width="163"&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441928&amp;amp;culture=en-US" target="_blank"&gt;1032441928&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="142"&gt;4/13/2010&lt;/td&gt;        &lt;td valign="top" width="146"&gt;Chicago&lt;/td&gt;        &lt;td valign="top" width="196"&gt;12:00-5:00pm Central Time&lt;/td&gt;        &lt;td valign="top" width="164"&gt;&lt;a href="http://www.camla.com/Email/URL12539.asp?A=0" target="_blank"&gt;1032442250&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9970867" width="1" height="1"&gt;</description></item></channel></rss>