<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>Ta. Steve Porter</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html</link>
<description>miscellaneous observations from a geek</description>
<pubDate>Sun, 13 Sep 2009 15:20:05 -0500</pubDate>
<ttl>60</ttl>
<item>
<title>Join me at Microsoft Tech•Days</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#msx274563076</link>
<description><![CDATA[<p><img src="images/techdayspeaker2009.png" title="TechDays Speaker Badge" /></p>

<p>I'm pleased to announce that I will again be speaking that this year's <a href="http://www.microsoft.com/canada/techdays/default.aspx" title="Microsoft Tech Days Canada 2009">Microsoft Tech•Days</a> in Winnipeg. Last year's event was jam-packed with great topics and excellent speakers and this year is looking to be <a href="http://www.microsoft.com/canada/techdays/sessions.aspx" title="Microsoft Tech Days Canada 2009">more of the same</a>.</p>

<p>I'll be presenting on a topic that I am very passionate about.</p>

<p><strong>Day Two, Session 4: Database Change Management with Team System</strong><br />
<i>If you develop database enabled applications on top of SQL Server, you owe it to yourself to considering doing it better with Visual Studio Team System. In this session, you’ll learn about changes to how the product works under the covers and what that means to you. Then, you’ll learn how to use the product to design, build, and deploy your databases to development, test, and production environments -- all with purpose and method instead of the more traditional madness that can be found in many shops in the wild.</i></p>

<p>Anyone who has heard me talk about Visual Studio Team System 2008 Database Edition (aka <a href="http://blogs.msdn.com/gertd/archive/2007/11/21/visual-studio-team-system-2008-database-edition.aspx" title="Home of the Data Dude : Visual Studio Team System 2008 Database Edition">DataDude</a>), knows that I'm enthusiastabout how this tool can make the arduous task of managing your database artifacts as easy as managing your .Net code. </p>

<p>I'm also happy to announce that I'll be joined by a large contingent of other Imaginet staff. In the Developer Fundamentals and Best Practices track alone, Imaginet's amazing roster of staff will be responsible for 75% of the topics. </p>

<p>Day One, Session 1: <b>Tips and Tricks for Visual Studio</b><br />
<a href="http://miscjibberish.blogspot.com/" title="Miscellaneous Jibberish">Jeremy Wiebe</a></p>

<p>Day One, Session 4: <b>A Strategic Comparison of Data Access Technologies from Microsoft</b><br />
<a href="http://codebaboon.blogspot.com/" title="Code Baboon">Dave Harris</a></p>

<p>Day Two, Session 1: <b>Practical Web Testing</b><br />
Rob Regnier and Tyler Doerksen</p>

<p>Day Two, Session 2: <b>Better Software Change and Configuration Management Using TFS</b><br />
<a href="http://geekswithblogs.net/aaronsblog/Default.aspx" title="The Caffeinated Geek">Aaron Kowall</a></p>

<p>Day Two, Session 3: <b>Metrics That Matter: Using Team System for Process Improvement</b><br />
<a href="http://weblogs.asp.net/jsemeniuk/" title="Joel From Canada">Joel Semeniuk</a></p>

<p>Day Two, Session 4: <b>Database Change Management with Team System</b><br />
me, Steve Porter</p>

<p>Now that's what I call great coverage. In addition to this track, <a href="http://weblogs.asp.net/miked/" title="Mike Diehl's WebLog">Mike Diehl</a> will again be presenting on SQL Server. I never miss an opportunity to hear Mike speak and you shouldn't either.</p>

<p>So I hope you can join me December 15th and 16th. It should be a great experience.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 13 Sep 2009 14:31:16 -0500</pubDate>
</item>
<item>
<title>New article on using data dude</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#biy270521726</link>
<description><![CDATA[<p><a href="http://weblogs.asp.net/miked/default.aspx" title="Mike Diehl's WebLog">Mike Diehl</a>, Imaginet's resident SQL guru has started a blog series on his real life experiences with Visual Studio Team Edition for Database Professionals (affectionately known as Data Dude). Mike has a great sense for how the tool can be best leveraged in the real world, so check out his <a href="http://weblogs.asp.net/miked/archive/2009/07/28/sql-database-diagramming-and-vsts-data-dude.aspx" title="SQL Database diagramming and VSTS Data Dude - Mike Diehl's WebLog">first post</a> and keep an eye out for the rest of the series.</p>

<p>Ta.<br />
Steve Porter </p>]]></description>
<pubDate>Tue, 28 Jul 2009 19:55:25 -0500</pubDate>
</item>
<item>
<title>Building simple excel reports using Team Foundation Server 2008</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#xcs270502681</link>
<description><![CDATA[<p>The next version of Team Foundation Server is going to have a great set of tools to support <a href="http://blogs.msdn.com/bharry/archive/2009/05/19/tfs-2010-project-management.aspx" title="bharry's WebLog : TFS 2010 Project Management">reporting using Excel</a>, but that doesn't mean you can't use Excel for reports in 2008.</p>

<p>I just finished an engagement with a client where one of my tasks was to help them move from their existing project management tool to TFS. During the roll-out, I was encountering a bit of resistance that was driven by their staff's level of comfort with the current tool compared to what they were seeing in TFS. One of the items they liked about their current tool is that it would auto-generate nifty graphs in Excel that they would hand off to their project sponsor each week. The purpose of the graphs was to show, from a very high level, progress of their work for a particular release.</p>

<p>I showed them the built-in reports that come with TFS and their response basically was, "that's cool, but I want this..." and pointed to their existing Excel reports. To overcome their resistance, I decided that I had to show them how easy it was to get the exact same report using TFS (emphasis on <em>easy</em>).</p>

<p>Step 1 - Create a query that filters based on the work item type field and displayed the state field.</p>

<p>Step 2 - Open the query in Excel.</p>

<p>Step 3 - For each state, create a cell that used the CountIf formula to count the number of occurrences for each state; =<font color="blue">COUNTIF(B3:B2500,"Proposed")</font>.</p>

<p>Step 4 - Highlighted the formula cells and insert a column chart.</p>

<p>Step 5 - Click Refresh to show that the report gets recalculated with live data.</p>

<p>Done!</p>

<p><img width="500" height="370" src="images/excel.jpg" title="Excel sample" /></p>

<p>There are definitely other ways to do this (SQL reporting services, Excel pivot tables...), but this took me all of five minutes and met my customer's requirement.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Tue, 28 Jul 2009 14:38:00 -0500</pubDate>
</item>
<item>
<title>Microsoft looking for customer feedback on TFS Customization</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#hlm264415918</link>
<description><![CDATA[<p>Kathryn Elliott, a member of the Team System documentation team, is <a href="http://blogs.msdn.com/kaelli/archive/2009/05/15/what-information-will-best-support-your-team-foundation-customization-requirements.aspx" title="Kathryn Elliott's Blog : What Information Will Best Support Your Team Foundation Customization Requirements?">looking for feedback on the customization process</a>.</p>

<p>One of the things I love about Team System is the amount of customization that is supports, but I'll admit that it's not always the easiest beast to work with.</p>

<p>Here are some items from my wish list:</p>
<ol>
<li>Documentation on how to restrict access to adding or editing a work item type </li>
<li>Documentation on how to restrict access to a field within a work items </li>
<li>Documentation on how to restrict what you can enter into a field</li>
(do you see a trend?)
<li>Documentation on how to restrict state transitions</li>
<li>One easy to search and access location that holds all the customization data</li><br />
</ol>
<p>How does this list sound? Is it similar to what you're looking for?</p>
<p>Head over to her blog and add your suggestions.</p>
<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Tue, 19 May 2009 10:51:57 +0200</pubDate>
</item>
<item>
<title>Visual Studio 2010 Beta 1 is out!</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#mop264349990</link>
<description><![CDATA[<p>If you're an MSDN subscriber, then you should head over to the download area (<a href="http://msdn.microsoft.com/subscriptions/downloads/default.aspx?pv=18:370">link</a>) and get yourself a copy of Visual Studio 2010 Beta 1. Congratulations to all the folks on the development team for reaching this milestone. I'm looking forward to seeing the latest incarnation of all the various Team System features. I'm particularly interested in playing around with various migration scenarios to see what sort of work 2008 and 2005 shops are going to have to perform to get access to all of the 2010 goodness (like hierarchical work items, workflow driven builds, amazing branch and merge functionality).</p>

<p>For you non-MSDN subscribers, you'll be able to get access on Wednesday 10:00 am PST. Hope you can stand the wait.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Mon, 18 May 2009 15:33:10 +0100</pubDate>
</item>
<item>
<title>Video on Agile Development</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#vpt263916402</link>
<description><![CDATA[<p>You should take about 45 minutes to watch this <a href="http://www.msteched.com/online/view.aspx?tid=bacf64af-7c4e-4393-ac7f-5106a7745d9a" title="Microsoft® Tech·Ed Online">video</a> from TechEd where <a href="http://weblogs.asp.net/jsemeniuk/" title="Joel From Canada">Joel Semeniuk</a>, <a href="http://www.stephenforte.net/" title="Stephen Forte`s Blog">Stephen Forte</a> and <a href="http://weblogs.asp.net/cmenegay/" title="Chris Menegay's WebLog">Chris Menegay</a> talk about Agile development in the real world.</p>

<p>Some of the items covered...</p>
<ul>
<li>What Agile is (and isn't)</li>
<li>Team System and Agile Development</li>
<li>CMMI and Agile</li>
</ul>
<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Wed, 13 May 2009 16:06:42 +0200</pubDate>
</item>
<item>
<title>Cryptic failure to publish build log message on partially succeeded build</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#awo263296084</link>
<description><![CDATA[<p>This little beauty came up awhile ago and I just now found some time to blog about it.</p>

<p>I was on a project where one of my tasks was to keep the build up and running and for the most part it was a fairly painless tasks (no small thanks to the well oiled dev team). But one week-end, the build started to partially fail with a very cryptic message in the log file about the publishing failing. Unfortunately for me, the check-in that caused the breakage was a big one, so tracking down the issue took a lot of manual poking around until I stumbled upon the offending code.</p>

<p>It seems that the test publish mechanism doesn't like it when your test names are longer then 255 characters. Doh! The team included one developer who is a unit testing machine, and in his zeal, he had three tests that had more then 255 characters in the name. Here's a sample...</p>

<p><i>Should_move_to_PainManagementOptions_state_when_StepBackward_is_called_on_a_CarePlan<br />
_with_nerve_root_low_back_pain_condition_segment_in_ReferralSelection_state_with_SpecialistGroup_of_<br />
PainClinicReferralGroup_and_no_answer_value_for_PainManagementNextStepsProceed_question</i></p>

<p>Yes, quite the mouthful, but it describes exactly what he's testing, so all's good. Except it's too long.</p>

<p>Once all the offending tests were shortened, the build went back to behaving correct and just to be on the safe side, the developer wrote a unit test that checks the length of the test name for all the tests in the test assembly and the test fails if it locates any that are too long. This way, the build still only partially succeeds, but at least the error message in the build is helpful in figuring out the issue.</p>

<p>Here's the test he wrote (which we now include in all of our test projects).</p>

<link rel='stylesheet' type='text/css' href='user_files\colorcode.css' /><pre class='coloredcode'> <span class='cmt'>/// &lt;summary&gt;
 /// Summary description for UnitTestTests
 /// &lt;/summary&gt;</span>
 [TestClass]
 <span class='kwd'>public class</span> UnitTestTests
 {
     [TestMethod]
     <span class='kwd'>public void</span> Test_method_names_must_not_be_longer_than_255_characters()
     {
         var assembly = System.Reflection.Assembly.GetAssembly(<span class='kwd'>typeof</span> (UnitTestTests));
         var types = assembly.GetTypes();

         <span class='kwd'>foreach</span> (var type <span class='kwd'>in</span> types)
         {
             var member = type.GetMembers();
             <span class='kwd'>foreach</span> (var info <span class='kwd'>in</span> member)
             {
                 <span class='kwd'>if</span> (info.IsDefined(<span class='kwd'>typeof</span>(TestMethodAttribute), <span class='kwd'>true</span>))
                 {
                  Assert.IsTrue(info.Name.Length <= 255,
                      <span class='kwd'>string</span>.Format(<span class='st'>"Test Method name '{0}' is too long!"</span>, info.Name));
                 }
             }
         }
     }
 }</pre>

<p>Shout out to <a href="http://codebaboon.blogspot.com/" title="Code Baboon">Dave Harris</a> for the unit test.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Wed, 06 May 2009 11:48:03 +0200</pubDate>
</item>
<item>
<title>Window 7 RC</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#wkf263143896</link>
<description><![CDATA[<p>As a fairly recent Mac convert, I've been watching the Vista/Windows 7 saga with much interest. I love my mac, but I make my living on Windows (at least until Microsoft creates a OSX version of Visual Studio), so the sooner Microsoft can put the whole Vista thing behind them, the better.</p>

<p>I've been playing around with the new version for a few days now and I really like what I see. The whole UAC story is much improved (and when you're a developer/power user, this is a big deal) and the OS is much more responsive. It painlessly installed it on my Acer Aspire One net book and kicks Vista to the curb as far as performance goes.</p>

<p>Most importantly, Team Explorer seems to run fine, along with the Power tools and TFS Sidekicks. I'll have to use it a bit more to be sure, but as of now, I've replaced my main virtual environment with Windows 7 RC.</p>

<p>Ta.<br />
Steve Porter </p>]]></description>
<pubDate>Mon, 04 May 2009 17:31:35 +0200</pubDate>
</item>
<item>
<title>VSTS 2010 Feature List</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ctg260921215</link>
<description><![CDATA[ Brian Harry just released a high-level <a href="http://blogs.msdn.com/bharry/archive/2009/04/08/team-system-2010-overview.aspx">list</a> of all VSTS 2010 features.<br />
<br />
This is a major release for Team System and a lot of gaps in the original product will be filled once this version hits the streets. I hope companies that may have been sitting on the sideline waiting for this product to mature will take a serious look at what you get for your investment.<br /><br />

The testing changes are really a massive shift for this product and should move these features from "ya, that's neat" to "I  want to go there".<br />
<br />
Ta.<br />
Steve Porter]]></description>
<pubDate>Wed, 08 Apr 2009 17:06:55 -0500</pubDate>
</item>
<item>
<title>HP Quality Center to TFS connector</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#cmc253897144</link>
<description><![CDATA[<p>One of the key TFS adoption road blocks that a lot of companies face is how do they integrate their existing application development infrastructure with Team Foundation Server and Team System. I've found a lot of companies willing to give TFS a try as far as source control, automated builds and work item tracking, but QA teams become really attached to their tools and are loath to give them up.</p>

<p>Well, the product team has been hard at work trying to address that issue and I'm happy to hear that they're making good progress on one of the more popular testing products, <a href="https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&amp;cp=1-11-127-24_4000_100__">HP Quality Center</a>. This is their second pre-realease, but it looks polished and ready to have it's tires kicked. You can read more about it on <a href="http://blogs.msdn.com/bharry/archive/2009/01/07/tfs-and-quality-center.aspx" title="bharry's WebLog : TFS and Quality Center">Brian Harry's blog</a> and <a href="http://blogs.msdn.com/jimlamb/archive/2009/01/06/tfs-2008-hp-quality-center-connector-december-pre-release.aspx" title="Jim Lamb : TFS 2008 – HP Quality Center Connector December Pre-release">Jim Lamb's blog</a>.</p>

<p>One interesting note,</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"The Connector itself is free. It does, however, require a TFS CAL and a QC CAL for the machine it's running on. In addition, everyone who views/edits data that's stored in TFS will need a TFS CAL."</p>

<p>I really wish Microsoft would come up with a better licensing scheme. This one item may kill any adoption by a larger organization. I applauded Microsoft when they removed the licensing restrictions for creating and viewing your own work items, but to better adoption, they really need to open up the entire work item repository to everyone in the organization without the nasty licensing overhead (both from a money and logistical perspective).</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 17 Jan 2009 08:59:03 -0600</pubDate>
</item>
<item>
<title>It's really simple, but I like it.</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#vuk252776175</link>
<description><![CDATA[<p><a href="http://scrumforteamsystem.com/en/TaskBoard/default.aspx" title="Scrum for Team System">Conchango's task board</a> is great, but a couple of the things that I think are missing compared to good old post-it notes are ease of use and visibility. It's really simple to move around post-it notes to change a work items status/iteration/area and you can put post-it notes up on a white board for all the team to see.</p>

<p>So here's what we do to get the best of both worlds. It's really simple to export work items to excel and then use this data as part of a Word mail merge. We merge the data to sheets of large labels (4" X 2" works well) and then put the labels on large coloured post-it notes (3M has good 2 7/8" X 4 7/8" colours notes for sale). We then use these post-its in our planning sessions and leave them up on the wall to help track our progress. There is obviously a bit of overhead creating and updating the labels and then transferring information back to team system based on changes to the post-it notes, but the work really is minimal and the additional visibility and ease of use make up for the extra work.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 04 Jan 2009 09:36:14 -0600</pubDate>
</item>
<item>
<title>Looks like something in the test framework in Team System doesn't like Silverlight applications...</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#rwf252695143</link>
<description><![CDATA[<p>I was following <a href="http://weblogs.asp.net/ROsherove/" title="ISerializable - Roy Osherove's Blog">Roy Osherove's</a> post on <a href="http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx" title="Unit Testing in silverlight land with Typemock Isolator - ISerializable - Roy Osherove's Blog">unit testing Silverlight applications</a> and notice some strange behaviour in Visual Studio that I thought I'd pass along.</p>

<p>It seem that when your solution contains a Silverlight Application Project, you can't access the code coverage tab in the Test Run Config dialog. As soon as you click on the Code Coverage list item, the Test Run Config dialog disappears. Poof, just like that. Not even a wave good-bye (how rude). Silverlight class libraries are fine. Actually better then fine in that the code coverage results work like a charm and show your percentages and the code highlighting feature that I just love displays as expected.</p>

<p>So, if you have a solution that contains both a Silverlight application and a Silverlight class library, you may have to temporarily remove the Application to set the code coverage information for your class library. Maybe if I have the time, I'll do a bit of fooling around to see if I can manually create the correct entries in the config file and get things working correctly...</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 03 Jan 2009 11:05:43 -0600</pubDate>
</item>
<item>
<title>Great way to ring in the new year...</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#csq252691181</link>
<description><![CDATA[<p>Not only did I have an excellent week-end out at the lake with my family (I was able to try driving a snow mobile  for the first time and we had a massive bonfire out on the ice), but when I returned home, sitting in my inbox was a congratulatory e-mail from Microsoft informing me that I've been awarded a Team System <a href="http://mvp.support.microsoft.com/" title="Microsoft Most Valuable Professional">MVP</a> for 2009!</p>

<p>What a massive honour and a huge responsibility. Look like 2009 is starting out to be a great year, let see if I can keep the momentum going.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 03 Jan 2009 09:59:41 -0600</pubDate>
</item>
<item>
<title>Silverlight, ASP.Net Authentication, WCF, SSL and Team Build. Oh My!</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#qqb251328967</link>
<description><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
	<head>
		<title></title>
	</head>
	<body>
		<p>
			I was tasked with getting our new Silverlight application building and deploying using Team Build. The application has been in pre-development stages for awhile now and the team was happy enough with their progress that they wanted to get the code into Team System. One of the requirements was that the application had to be secure, so SSL was a must, but our spiking developers were only testing on their local development environment, so no SSL. I knew that I was going to get hit with a few "it works on my machine" issues when I tried to deploy their existing code to our application server under SSL. This was one time when I wasn't happy about being right. To make matters even more challenging, the changes that I made had to be build specific, since I didn't want to force the developers to work with SSL on their local machines. Oh Joy!
		</p>
		<p>
			First thing I did was to just get the application deploying and running using basic http. I encountered my first set of issues here. The team had followed the excellent <a href="http://blogs.msdn.com/brada/archive/2008/05/03/accessing-the-asp-net-authentication-profile-and-role-service-in-silverlight.aspx" title="Brad Abrams : Accessing the ASP.NET Authentication, Profile and Role Service in Silverlight">post from Brad Abrams</a> on how to configure the ASP.Net services in Silverlight. In the development environment, the WCF services for authentication, profile and role were running on the local machine and the team had hard coded the endpoint addresses in the ServiceReferences.ClientConfig. Obviously, this had to change. So my first step was to get my build to swap out the local urls for the urls on the server. The XmlUpdate task from <a href="http://msbuildtasks.tigris.org/"  title="msbuildtasks.tigris.org">MSBuild Community Tasks</a> to the rescue. I just used this task to locate and change the 3 urls and this was all that was required to get the application working in our deployment environment. But still no SSL.
		</p>
		<p>
			Here's what that ended up looking like...
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;Target Name="UpdateServiceReferences" &gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Message Text="Executing UpdateServiceReferences" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;ItemGroup&gt;
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;&lt;ServiceReferences Include="$(SolutionRoot)\Source\WebApp\ServiceReferences.ClientConfig" /&gt;
		</p>
		<p>
			&nbsp;&nbsp;&lt;/ItemGroup&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Attrib Files="@(ServiceReferences)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;ReadOnly="false"/&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_AuthenticationService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="http://webserver/webapp/Services/Application%20Services/AuthenticationService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_ProfileService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="http://webserver/webapp/Services/Application%20Services/ProfileService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_RoleService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="http://webserver/webapp/Services/Application%20Services/RoleService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;/Target&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			Now that I had basic http working, I changed the web site to support ssl and then tried to connect. Well, not surprisingly, KaBoom as soon as the application tried to access the authentication service.
		</p>
		<p>
			OK, the first fix was easy. I adjusted the code above to point at https and not http, hoping that would just fix it, but alas no...
		</p>
		<p>
			To get it to work, I actually had to adjust the web.config to get SSL support for the asp.net WCF services. I followed the example <a href="http://msdn.microsoft.com/en-us/library/bb398990.aspx" title="How to: Enable the WCF Authentication Service">here</a> on the local copy of the web.config to see if that would fix the issue, but still no love.
		</p>
		<p>
			I then noticed that in my ServiceReferences.ClientConfig, I had a line there that describes the security mode. Didn't I see the same line in the MSDN sample? So I did... So, in the ServiceReferences.ClientConfig, I changed the mode to Transport to match what I had done in the web.config, rebuilt and re-deployed the app and success! Unfortunately for me, the changes I made to both the ServiceReferences.ClientConfig and the web.config have to happen during the build, so I was back using XmlUpdate to get all the proper values swapped out. Here's what I ended up with...
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;Target Name="UpdateServiceReferences" &gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Message Text="Executing UpdateServiceReferences" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;ItemGroup&gt;
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;&lt;ServiceReferences Include="$(SolutionRoot)\Source\SilverlightApp\ServiceReferences.ClientConfig" /&gt;
		</p>
		<p>
			&nbsp;&nbsp;&lt;/ItemGroup&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Attrib Files="@(ServiceReferences)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;ReadOnly="false"/&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_AuthenticationService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="https://WebServer/WebApp/Services/Application%20Services/AuthenticationService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/bindings/basicHttpBinding/binding[@name='BasicHttpBinding_AuthenticationService']/security/@mode"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="Transport" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_ProfileService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="https://WebServer/WebApp/Services/Application%20Services/ProfileService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/bindings/basicHttpBinding/binding[@name='BasicHttpBinding_ProfileService']/security/@mode"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="Transport" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/client/endpoint[@name='BasicHttpBinding_RoleService']/@address"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="https://WebServer/WebApp/Services/Application%20Services/RoleService.svc" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(ServiceReferences.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/bindings/basicHttpBinding/binding[@name='BasicHttpBinding_RoleService']/security/@mode"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="Transport" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;/Target&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;Target Name="UpdateWebConfig" &gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Message Text="Executing UpdateWebConfig" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;ItemGroup&gt;
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;&lt;WebConfig Include="$(SolutionRoot)\Source\WebApp\Web.Config" /&gt;
		</p>
		<p>
			&nbsp;&nbsp;&lt;/ItemGroup&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;Attrib Files="@(WebConfig)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;ReadOnly="false"/&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/services/service[@name='System.Web.ApplicationServices.AuthenticationService']/endpoint/@bindingConfiguration"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="userHttps" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/services/service[@name='System.Web.ApplicationServices.ProfileService']/endpoint/@bindingConfiguration"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="userHttps" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/services/service[@name='System.Web.ApplicationServices.RoleService']/endpoint/@bindingConfiguration"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="userHttps" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/bindings/basicHttpBinding/binding/security/@mode"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="Transport" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.serviceModel/bindings/basicHttpBinding/binding/@name"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="userHttps" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&nbsp;&nbsp;&lt;XmlUpdate XmlFileName="%(WebConfig.FullPath)"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;XPath="//configuration/system.web.extensions/scripting/webServices/authenticationService/@requireSSL"
		</p>
		<p>
			&nbsp;&nbsp;&nbsp;&nbsp;Value="true" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;/Target&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			&lt;Target Name="BeforeCompile" DependsOnTargets="UpdateServiceReferences;UpdateWebConfig" /&gt;
		</p>
		<p>
			<br>
		</p>
		<p>
			I didn't show the target that actually deploys the site, but if you want to see what that looks like, drop me a comment and I'll pass that along.
		</p>
		<p>
			<br>
		</p>
		<p>
			Good Luck!
		</p>
		<p>
			Ta.<br>
			Steve Porter
		</p>
	</body>
</html>
]]></description>
<pubDate>Thu, 18 Dec 2008 15:36:06 -0600</pubDate>
</item>
<item>
<title>Uninstall Issues with Team Foundation Server Power Tools</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ohw248371859</link>
<description><![CDATA[<p>As with previous releases of the TFS Power Tools, you have to uninstall the previous version before you can install the new version. This hasn't been an issue for me until this latest release. The October 08 release moves from a <em>per user</em> install to an <em>all user</em> install. If the machine you're installing on only has one user who has installed a previous version of the power tools, then you're golden. <strong>But...</strong> if a different account has installed different versions onto the machine, you may have trouble.</p>

<p><font size="-2">One quick caveat, this issue with the power tools occurred on a machine with Windows 2003 installed, so if you have another OS, YMMV.</font></p>

<p>This was the issue I encountered on one of my <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812" title="Download details: Visual Studio&#174; Team System 2008 VSTS VPC Image (Trial)">sandbox VPCs</a> that I use for demos. I uninstalled the current version, but when I went to install the October release, I was informed that there were other installs on the machine that I had to uninstall first before I could continue. The installation package was nice enough to tell me which user account was the offending culprit, so I thought I could just log in as that account, uninstall the previous version and Bob's your Uncle...</p>

<p>Well, Bob is not my Uncle, <strong>bastard</strong>!</p>

<p>When I attempted to uninstall the previous version on the second account, the uninstalltion process failed (epic). It complained about missing files, which makes sense because I'd already uninstalled the files under the other account. Doh!</p>

<p><font size="-2">Don't get me started on uninstall processes that fail because it can't find a file to remove. Helloooo, I'm trying to remove these files in the first place. Move along, nothing to see here...</font></p>

<p>There is documentation on how to fix this located on the power tools download site (in Word format, grumble. What's wrong with PDFs people!) but it doesn't mention my issue, so I was left to troubleshoot the issue on my own.</p>

<p>Here's how I fixed it.</p>
<ol>
<li>Obtain the original install package for the version that your're trying to remove. That's was actually harder then it sounds. My Google-fu must be weak, because I couldn't find any links to download the previous versions. Fortunately for me, I had them archived.</li>

<li>Go to the Add/Remove Program control panel utility, locate the offending power tools entry and Click Change. You will then when prompted for what maintenance action you'd like to perform, for this action, select Repair. The maintenance package will then prompt you for the location of the install package, which you located in step one.</li>

<li>Once it's finished repairing your installation, you can then use Add/Remove Program to uninstall Power Tools. It should work successfully now.</li>

<li>Now that you've removed all the previous versions, you should be able to successfully install the October release.</li>
</ol>

<p>Bob is now your uncle! Lets hear it for Bob.</p>

<p>I know what you may be thinking... "Great, you had all of the previous Power Tool installation packages archived, good for you. What do you want, a medal? How does that help me?" Well, here's what I'll do. I've placed my archived copies up on my web site and I'll leave them there until someone tells me that Microsoft has made them available. No, please, no need to thank me...</p>

<ul>
<li><a href="http://homepage.mac.com/stevevrporter/blog/user_files/PowerTools/tfpt-dec07.msi" title="Team Foundation Server Power Tools - December 2007">December 2007</a></li>
<li><a href="http://homepage.mac.com/stevevrporter/blog/user_files/PowerTools/tfpt-mar08.msi" title="Team Foundation Server Power Tools - March 2008">March 2008</a></li>
<li><a href="http://homepage.mac.com/stevevrporter/blog/user_files/PowerTools/tfpt-july08.msi" title="Team Foundation Server Power Tools - July 2008">July 2008</a></li>
</ul>

<p>I've virus scanned all of these files, but I take no responsibility for their contents. Sorry to have to make that disclaimer, but the world has too many lawyers with nothing to do now that the number of Wall Street takes-overs have declined.</p>

<p>Leave me a comment if you encountered this same issue. Maybe you solved it differently?</p>

<p>Ta.<br />
Steve Porter</p>

]]></description>
<pubDate>Fri, 14 Nov 2008 10:10:59 -0600</pubDate>
</item>
<item>
<title>Latest Release of Team Foundation Server Power Tools Now Available</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#lma247853221</link>
<description><![CDATA[<p>The October 2008 release is <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBD14EEA-781F-45A1-8C46-9F6BA2F68BF0&amp;displaylang=en" title="Download details: Team Foundation Power Tools">now available</a> and it looks like the TFS team at Microsoft has done it again. There are some amazing new features here that should make working with TFS even easier. You can get all of the details <a href="http://blogs.msdn.com/bharry/archive/2008/10/01/preview-of-the-next-tfs-power-tools-release.aspx" title="bharry's WebLog : Preview of the next TFS Power Tools release">here</a> and <a href="http://blogs.msdn.com/bharry/archive/2008/11/08/oct-08-tfs-power-tools-are-available.aspx" title="bharry's WebLog : Oct '08 TFS Power Tools are Available!">here</a>, but the pieces that excite me the most are the workspace templates, custom component support and the windows shell integration (which doesn't seem to work on my XP box :( Maybe it's a Vista only thing).</p>

<p>Give it a try and let me know what you think of the new features.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 08 Nov 2008 10:07:00 -0600</pubDate>
</item>
<item>
<title>How to get TFS to use TSWA WI change notifications links when TSWA is installed on a different server</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#qag247363454</link>
<description><![CDATA[<p>Buck Hodges has a <a href="http://blogs.msdn.com/buckh/archive/2008/10/14/how-to-set-up-tfs-2008-sp1-to-use-tswa-links-in-checkin-notification-emails.aspx" title="Buck Hodges : How to set up TFS 2008 SP1 to use TSWA links in checkin notification emails">great blog post</a> on setting up TFS to use TSWA links, but there was one additional piece of information that I couldn't find anywhere, so I thought I'd post it on my blog.</p>

<p>Most of the examples I could find for how to configure the system detailed how to adjust the server's xsl document but they all assumed that the web access power tool was installed on the same server. To get the links generating correctly, I had to slightly adjust the recommended change to WorkItemChangedEvent.xsl.</p>

<p>I changed the line from:</p>

<p>&lt;xsl:attribute name=&quot;href&quot;&gt;
  &lt;xsl:value-of select=&quot;DisplayUrl&quot; /&gt;
&lt;/xsl:attribute&gt;</p>


<p>to:</p>

<p>&lt;xsl:attribute name=&quot;href&quot;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://YOURSERVER:YOURPORT/wi.aspx?id=&lt;xsl:value-of select=&quot;substring-after(DisplayUrl,&#x27;artifactMoniker=&#x27;)&quot; /&gt;<br />
&lt;/xsl:attribute&gt;</p>

<p>One additional gotcha is that this change won't take effect until after you recycle IIS where the Team Foundation Server's app tier is hosted.</p>

<p>Leave me a comment if you like the notification integration with TSWA.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 02 Nov 2008 18:04:13 -0600</pubDate>
</item>
<item>
<title>Learn from the mistakes of others...</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#wwh247361718</link>
<description><![CDATA[<p>This week I accidently brought our production Team Foundation Server to a grinding halt and I thought that I'd share my experience so that no one else out there has to deal with the same issue I did.</p>

<p>I was planning on installing the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9E40A5B6-DA41-43A2-A06D-3CEE196BFE3D&amp;displaylang=en" title="Download details: Visual Studio 2008 Team Foundation Server SP1">new service pack for TFS</a> over the up-coming week-end, and in preparation for that bit of maintenance, I decided to install the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;displaylang=en" title="Download details: Visual Studio 2008 Service Pack 1">Visual Studio 2008 service pack</a> on the application tier. I make it a habit to install the Team Explorer on my app tier so that I can create team projects locally, and because of this, I knew that I had to install the Visual Studio service pack before I installed the Team Foundation Server service pack. </p>

<p>My assumption was that these two service packs were mostly unrelated (one being for the client and the other being for the server) but that didn't prove to be the case at all.</p>

<p>Initially, the Visual Studio 2008 service pack installation went well. It didn't even require a reboot, so I was able to apply it during business hours. It wasn't until over 24 hours passed that I discovered that the two service packs were related.</p>

<p>I received a message from our development team that our Team Server was unreachable. I was able to log onto the server, but a quick check of the event log showed that I was having severe server issues with all of the various web services. The error message that was placed in the event log was cryptic (<em>TF53010: The following error has occurred in a Team Foundation component or extension:</em> and then a large error dump) but I was able to resolve the entire issue by installing Team Foundation Server SP1.</p>

<p>All's well that end's well I guess, but there was definitely a period of time when I was not a happy camper.</p>

<p>If this requirement is explained in the Visual Studio SP1 documentation then I guess that I should have <a href="http://en.wikipedia.org/wiki/RTFM" title="RTFM - Wikipedia, the free encyclopedia">RTFM</a> before I installed the service pack. If it's not documented, it should be.</p>

<p>Drop me a comment ant let me know how has your maintenance has gone?</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 02 Nov 2008 17:35:18 -0600</pubDate>
</item>
<item>
<title>New Scrum for Team System Template due soon</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#oxo245418207</link>
<description><![CDATA[<p>If you're a user of Conchango's excellent <a href="http://scrumforteamsystem.com/en/default.aspx" title="Scrum for Team System">Scrum for Team System Process Template</a>, then you'll be happy to hear that <a href="http://scrumforteamsystem.com/cs/forums/3091/ShowPost.aspx" title="Scrum for Team System version 2.2 - Release on 15th October 2008 - Scrum for Team System">a new version is due out soon</a>.</p>

<p>If you're currently using the scrum methodology in your development process and you have access to Team System, I highly recommend that you check out this template. It does an excellent job of automating a lot of the tracking tasks and provides a great framework for managing your scrum projects.</p>

<p>In addition to the template, you should also investigate their <a href="http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx" title="Scrum for Team System">task board application</a>. This client application provides a very user-friendly UI where you can create and update your backlog items. The application manages all the links between product backlog work items and sprint backlog work items and helps track the state as they move from unassigned, to assigned, to ready for test, to done.</p>

<p>If you'ld like to share your experiences using the current version of this template, please leave me a comment.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 11 Oct 2008 05:43:26 -0600</pubDate>
</item>
<item>
<title>Scorch, Oh how  I love thee.</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#jpd241543999</link>
<description><![CDATA[<p>The latest edition of the <a href="http://msdn.microsoft.com/en-us/tfs2008/bb980963.aspx" title="Visual Studio Team System 2008 Team Foundation Server Power Tools">Team Foundation Power Tools</a> added a new command called Scorch that I just love.</p>

<p>I do all of my Visual Studio work on a virtual machine and leverage snapshots and undo disks to keep my environment as clean as possible. One major downside for this is that my local source is often out of sync with TFS. For example, I'll perform a Get Latest each morning and refresh my local source and in the process pick up a couple of new file versions. All Good. Now, at the end of the day, I'll shelve my local changes up to the server (where they're safe) and the I'll shut down my virtual machine and not commit any of the changes to the virtual machine's drive. So far so good. Next morning I come in and start my virtual machine. It reverts to it's original state (since I didn't commit any of yesterday's changes) so my OS stays nice and clean, but now when I perform a Get Latest, the new file versions that I picked up yesterday won't be transfered to my local drive since the server already thinks that I picked up those changes yesterday. All Bad.</p>

<p>I can perform a Get Specific, but that usually means I have to get all the files, not just the ones that I'm missing.  Again, All Bad.</p>

<p>This is where Scorch comes in. It will perform a diff on my local drive and just get the files that are different. Back to the All Good column.</p>

<p>Does anyone else use a virtual environment for Visual Studio development with Team System? How about sharing some tips that have made your life easier.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Wed, 27 Aug 2008 10:33:18 -0500</pubDate>
</item>
<item>
<title>Preparing a QA Build Based on a Label</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ypc235947542</link>
<description><![CDATA[<p>One of the processes we use here at Imaginet is to create a special team build for the QA team to control. This special build is configured to deploy to the QA environment and is manually ran by the QA team whenever they want to begin a new testing cycle. By using a separate build, the QA team can easily gather quality metrics and build statics for their QA cycle since these QA metrics aren't muddied up by the daily development activities that drive most of our team builds. It also ensures that the testing environment isn't accidently clobbered by the dev team (like that's never happen to you :) .</p>
<p>Our routine goes something like this...</p>
<p>
	<ol>
<li>Development team works like mad for an iteration to prepare a end of iteration QA build for the QA team.</li>
<li>Development team decide which one of their team builds they wish to send to QA for testing.</li>
<li>The development team locates the completed team build in the Build Explorer and sets the build quality to <em>Ready for Initial Test</em>.</li>
<li>The QA team automatically receives an e-mail via the built in Project Alert. This e-mail contains the build's label.</li>
<li>The QA team manually queues their End of Iteration team build and supplies the build label as an MSBuild command line argument. The syntax is <em>/p:GetVersion="L<strong>label</strong>@$/<strong>Team Project</strong>"</em>.</li>
</ol>
<a href="http://homepage.mac.com/stevevrporter/Sites/blog/user_files/BuildFromALabel.jpg"><img width="250" src="http://homepage.mac.com/stevevrporter/Sites/blog/user_files/BuildFromALabel.jpg" /></a>
</p>
<p>Using this special syntax allows the QA team's build to ignore the latest source files (which may have changed since the dev team built their testing candidate) and instead use the exact files that the dev team has authorized.</p>
<p>Do you have any special processes you use for your QA team to help them build their testing environment?</p>

<p>Ta.<br />
Steve Porter </p>

]]></description>
<pubDate>Mon, 23 Jun 2008 15:59:02 -0500</pubDate>
</item>
<item>
<title>Deleted Work Items Still Appearing in Reports</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#bkf235771986</link>
<description><![CDATA[<p>One of the useful features in the <a href="http://msdn.microsoft.com/en-us/tfs2008/bb980963.aspx" title="Visual Studio Team System 2008 Team Foundation Server Power Tools">2008 Team Foundation Server powertools</a> is the ability to delete work items (DestroyWI). With Team System 2005, the best you could do is to hide work items by changing it's state, but there are valid cases for wanting to get rid of errant work items entirely (<em>created in error</em> is my favourite).</p>
<p>Unfortunately, one shortcoming of this powertool features is that the data still seems to show up in the reports. We had this issue occur this week and it was totally screwing up one of our reports. I did a quick bit of digging to see what the issue was and it seemed that the work item was removed from the relational data stores, but not removed from data warehouse that provides data for the cube (which is what the reports use). I queried the data warehouse and could still find the delete work items. Not Good.</p>

<p>Cleaning it up wasn't a major issues, but still a bit of a pain in the butt. To clear the warehouse I used the <a href="http://msdn.microsoft.com/en-us/library/ms400783(VS.80).aspx" title="SetupWarehouse">SetupWarehouse command line utility</a>. The documentation on this command is a little spotty, so here's the command I issued...</p>

<p><strong>"SetupWarehouse -s [DatabaseServer\Instance] -d TFSWarehouse -c warehouseschema.xml -a [domain\TFSService account] -ra [domain\tfsreports Account] -mturl http://server:8080 -rebuild -edt TfsBuild"</strong></p>

<p>This caused Team Foundation Server to rebuild the warehouse and flush all of the current data. The next time the data adaptors ran, the warehouse got populated. Then, the processing service recreated the cube and that allowed the reports to display the correct data. You can force a lot of these actions by calling the warehouse <strong>Run</strong> webservice. To perform this action. Use a web browser to navigate to <strong>http://[your server]:8080/Warehouse/v1.0/WarehouseController.asmx</strong>, then select the <strong>Run</strong> method, and then select <strong>Invoke</strong>.</p>

<p>A word of warning, the data adaptors took a long time to run, so don't expect to see immediate results.</p>

<p>Has anyone else observed this 'feature' of DestroyWI?</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sat, 21 Jun 2008 15:13:06 -0500</pubDate>
</item>
<item>
<title>Assigning a Specific User to the Failed Build Bug</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#blb234737527</link>
<description><![CDATA[<p>One of the items that came up during my last training sessions was how do you ensure that the bug that Team Build creates automatically for you when a build fails, is assigned to the appropriate user.</p>
<p>By default, when a build fails (and this has to be a compile failure, not a test failure), a bug work item is created to assist in tracking the work required to fix the build. The system automatically assigns the bug to the user that requested the build.</p>
<p>Now, this behaviour is great for continuous integration builds, but it's not so good for scheduled builds. Scheduled builds are run under a special build account and by default, it's this account that the bug gets assigned to.</p>
<p>The key to changing this behaviour is to adjust the MSBuild .proj file and add a line that associates the user you want to assign to. Here's the syntax:</p>
<p>&lt;WorkItemFieldValues&gt;<strong>System.AssignedTo=Steve Porter;</strong>System.Reason=Build Failure;System.Description=Start the build using Team Build&lt;/WorkItemFieldValues&gt;</p>
<p>I've <a href="http://homepage.mac.com/stevevrporter/blog/user_files/TeamBuildBug.mov" title="How to Assign the Team Build Bug to a Specific User">created a web cast</a> that walks through the entire process. It's close to 13 minutes in length, but if you want to go right to the implementation and see how it's done, you can just jump to about the 6 minute mark of the web cast.</p>
<p>Have you customized the bug creation any further? If you have, please leave me a comment to share your experiences.</p>
<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Mon, 09 Jun 2008 15:52:06 -0500</pubDate>
</item>
<item>
<title>Filtering the Assigned To Drop Down</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#udf234715498</link>
<description><![CDATA[<p>I was recently asked by a client how to ensure that the <b>Assigned To</b> drop down that appears in most work items can be filtered so that it doesn't include every user on the server.</p>
<p>This is quite an easy task, and it's one that I do for every project that I work on.</p>
<p>The key to only including team members in the Assigned To drop down is to edit the work item and change the rule for the assigned to property from ValidUser to AllowedValues and use "[project]\Contributors" (or some other group) for the rule's list item.</p>
<p>To make this explanation a little easier to consume, I’ve created a really quick <a href="http://homepage.mac.com/stevevrporter/blog/user_files/AssignedTo.mov" title="Assigned To Web Cast">web cast</a> that walks you through the steps.</p>
<p>I hope you find it useful.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Mon, 09 Jun 2008 09:44:58 -0500</pubDate>
</item>
<item>
<title>Download Web Cast</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#vyk233532924</link>
<description><![CDATA[<p>I've placed my webcast on the web for those of you who may have missed the live broadcast. You can access the files <a href="http://homepage.mac.com/stevevrporter/blog/user_files/PTEWebCast.zip" title="Customizing Team System Process Templates Web Cast">here</a>. Once you uncompress the archive, you can just open the ReplayMeeting htm file in IE and you should hopefully be good to go. I had issues watching in Safari, so for you mac user's out there you might have to resort to using a virtual environment. Sorry.</p>

<p>Let me know what you think of the content? Too light, too heavy? Anything you'd like to see in an upcoming web cast?</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Mon, 26 May 2008 17:15:23 -0500</pubDate>
</item>
<item>
<title>Web Cast Followup Post</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#tic232479856</link>
<description><![CDATA[<p><img src="http://homepage.mac.com/stevevrporter/blog/images/PTEDemoSlide1.jpg" title="TF30170 Error Message" /></p>

<p>
	I want to thank everyone who watched my web cast on customizing process templates. As promised, I've posted the files that I included in my demo <a href="http://homepage.mac.com/stevevrporter/blog/user_files/FilesFromPTEDemo.zip" title="">here</a>.
</p>
<p>
	Here are the resource links from my slide deck:<br>
	<a href="http://msdn.microsoft.com/en-us/library/ms194945(VS.80).aspx" title="Process Template Customization Overview"></a>
</p>
<p>
	MS Guidance
</p>
<p>
	Powertools<br>
	<a href="http://msdn.microsoft.com/en-us/teamsystem/aa718351.aspx" title="Team Foundation Server Power Tools">for 2005</a><br>
	<a href="http://msdn.microsoft.com/en-us/tfs2008/bb980963.aspx" title="Visual Studio Team System 2008 Team Foundation Server Power Tools">for 2008</a>
</p>

<p>I'll post the address of the recorded web cast as soon as it's available.</p>

<p>
	If you have any comments or questions, please feel free to contact me via e-mail or you can leave me a comment below.
</p>
<p>
	Ta.<br>
	Steve Porter
</p>

<p>P.S. This is the first in a series of web casts. Joel Semeniuk has posted additional details <a href="http://weblogs.asp.net/jsemeniuk/archive/2008/05/12/free-webcast-on-process-template-customization-and-more.aspx" title="Free Webcast on Process Template Customization...and more... - Joel From Canada" target="_blank">here</a>. Have a look at the schedule and try to attend.</p>

]]></description>
<pubDate>Wed, 14 May 2008 12:44:16 -0500</pubDate>
</item>
<item>
<title>Join me for my upcoming web cast on Customizing Process Templates</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#wum232337213</link>
<description><![CDATA[<p>Join me Wednesday May 14th at 12:15 Eastern for a 30 minute web cast titled <em>Customizing Team System Process Templates</em>. I'll be covering the basics during this web cast, but you will learn enough to make powerful modification in your own environments.</p>

<p>You can register for the Live Meeting web cast by visiting <a href="https://www119.livemeeting.com/lrs/8000153370/Registration.aspx?pageName=73fdz3q11vj4s4hl">this URL</a>.</p>

<p>Hope to see you there.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Mon, 12 May 2008 21:06:53 -0500</pubDate>
</item>
<item>
<title>Unit Testing Course Syllabus</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#sek232058252</link>
<description><![CDATA[<p>I've gathered up everyone's suggestions and built what I think to be a pretty good course syllabus. You can view the offering <a href="http://homepage.mac.com/stevevrporter/blog/images/UnitTestingSyllabus.pdf" title="Unit Testing Syllabus">here</a></p>

<p>Thanks to everyone who took the time to provide me with some feedback. Your responses were very helpful and allowed me to focus on the items that people said would be the most valuable to them.</p>

<p>Now I just have to gather the material...</p>

<p>Keep an eye here for further details on when the course will be available.</p>

<p>Ta.<br />Steve Porter</p>
]]></description>
<pubDate>Fri, 09 May 2008 15:37:32 -0500</pubDate>
</item>
<item>
<title>Being Different just for the Sake of Being Different</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#bmo231951211</link>
<description><![CDATA[<p>I was reading a couple of blog posts (<a href="http://codebaboon.blogspot.com/2008/05/fact-vs-test.html" title="Code Baboon: [Fact] vs [Test]">here</a> and <a href="http://miscjibberish.blogspot.com/2008/05/xunitnet-fact-and-theory-attributes.html" title="Miscellaneous Jibberish: XUnit.Net&#39;s [Fact] and [Theory] attributes">here</a>) about the new unit testing framework on the block (<a href="http://www.codeplex.com/xunit" title="xUnit.net - Unit Testing for .NET - Home">xUnit</a>) and it got me thinking about one of my pet peeves.</p>
<p>Why is it that smart people need to prove that they're smart by taking an established idea, tweaking it a bit to add improvements, but in the process, they make major changes to the terminology so as to add a whole new set of vocabulary to the conversation.</p>
<p><a href="http://messagecom.wordpress.com/" title="message communications">My lovely wife</a> has said to me on many occasions that <strong>words matter</strong>. So why muddy up the waters with a new set of terms? It's easier if everyone is talking the same language. Steve's first rule: <strong>Keep It Simple</strong>.</p>
<p>I've often gone off on a good rant about how Microsoft did itself (and their customers) a big disservice when they choose to make their unit testing framework just different enough so that it breaks compatibility with <a href="http://www.nunit.org/index.php" title="NUnit - Home">NUnit</a>. This forces an organization to choose one testing framework and then once they do, they are pretty much stuck with it. Converting existing tests from MSTest to NUnit is a bit of a pain that would have been a lot easier if they had used the same terminology. Now xUnit has taken the same crappy road. That's too bad.  Now if I want to use their framework I have to learn a whole new set of terms and my tests are hard-coded to a particular framework. Bleech.</p>
<p>Just an observation here, but making up new terms for common ideas does not make you look smarter (<a href="http://en.wikipedia.org/wiki/Scrum_(development)" title="Scrum (development) - Wikipedia, the free encyclopedia">Scrum's</a> use of the term Sprint come to mind). Maybe the folks in marketing think that it's important that your company sets themselves apart from their competition, but the folks in marketing are <strong>evil</strong> and don't care about making things easier for everybody. The industry landed upon the common terms for a reason, now suck it up and stick to them. Spend the time you spent coming up with the nifty new term doing something that's actually useful.</p>
<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Thu, 08 May 2008 09:53:30 -0500</pubDate>
</item>
<item>
<title>What would you like to see taught in unit testing course?</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ipp231199337</link>
<description><![CDATA[<p>I've been thinking a lot about unit tests lately. Anyone who's heard me speak knows that I'm very passionate about unit testing. I believe that it is the number one thing that an organization can do to improve how they develop software. Period.</p>
<p> </p>
<p>But I still find a lot of organizations that haven't started down the unit-testing road. Here are some of the things I hear:</p>
 
<ul>
<li>We don't know how to get started.</li>
<li>We don't have any testing expertise in our organization.</li>
<li>Our code is too hard to test.</li>
<li>What are some best practices we should follow?</li>
<li>Do you think that being a Mac user makes you cool?</li>
</ul>

<p style="padding-left: 50pt;padding-right: 50pt;"><font size="-1">(OK, that last one had nothing to do with testing, but I still hear it all the time and the answer is <strong>yes</strong>! I was totally uncool until I bought my MacBook and just having it in the same room with my <a href="http://www.dilbert.com/strips/comic/2008-04-19/" title="Dilbert.com - The Official Dilbert Website with Scott Adams' color strips, Dilbert animation, mashups and more!">doubles</a> my cool factor).</font></p>
 
<p>The above comments are all valid, but I think that unit testing is so important that organizations need to stop finding excuses and just start doing it. With that in mind, I'm considering creating a course (3 days long maybe?) that would help an organization adopt unit testing and hopefully get off on the right foot. Here are some of the topic areas that I'm considering:</p>
<ol>
<li>Learning unit testing fundamentals </li>
<li>Determining what unit testing framework is right for your organization</li>
<li>Writing your first unit test</li>
<li>Getting started using unit tests in your organization</li>
<li>Writing the right unit tests, the right way</li>
<li>Planning for unit testing in your project planning</li>
<li>Using advanced Asserts</li>
<li>Using external data input in your unit tests</li>
<li>Writing testable code</li>
<li>Writing maintainable tests</li>
<li>Dealing with legacy code</li>
<li>Using mocking frameworks</li>
<li>Determining what mocking framework is right for your organization</li>
<li>Testing databases  </li>
<li>Testing code that accesses a database without actually accessing the database</li>
<li>Integrating unit testing into your build</li>
<li>Choosing what unit testing add-ins and utilities to use</li>
<li>Leveraging unit tests in your production environment</li>
<li>Unit testing mobile applications</li>
<li>Unit testing Windows Workflow applications</li>
</ol> 

<p>I'm picturing a very hands-on course where you learn by writing unit tests against real looking code.</p>

<p>Does that list of topics get you excited? Is this something that your organization would find useful? Drop me a comment or an e-mail to let me know.</p>

<p>Ta.<br />
Steve Porter</p>
 
]]></description>
<pubDate>Tue, 29 Apr 2008 17:02:17 -0500</pubDate>
</item>
<item>
<title>Imaginet .Net Webinar Series</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ngx231192108</link>
<description><![CDATA[<p>Imaginet will be hosting a series of webinars on various .Net topics during the months of May, June and July. Here's a list of topics, presenters and dates:</p>

<p>
<table border=1 cellpadding=3 cellspacing=0 >
 <tr  style="border-bottom:1px solid gray">
  <td><strong>Topic</strong></td>
  <td><strong>Presenter</strong></td>
  <td><strong>Date</strong></td>
 </tr>
 <tr>
  <td >Customizing Team System Process Templates</td>
  <td><a href="http://homepage.mac.com/stevevrporter/blog/Ta.html" title="Ta. Steve Porter">Steve Porter</a></td>
  <td >14-May-08</td>
 </tr>
 <tr >
  <td >Introduction to Software Factories</td>
  <td>Robert Regnier</td>
  <td >21-May-08</td>
 </tr>
 <tr >
  <td >Windows Communication Service Gateways<br/> with C # 3.0 and
  Linq-To-SQL</td>
  <td><a href="http://codebaboon.blogspot.com/" title="Code Baboon">Dave Harris</a></td>
  <td >28-May-08</td>
 </tr>
 <tr >
  <td >Testing out the MVC: Routing</td>
  <td>Ryan Weppler</td>
  <td >04-Jun-08</td>
 </tr>
 <tr >
  <td >Customizing Software Factories </td>
  <td>Robert Regnier</td>
  <td >11-Jun-08</td>
 </tr>
 <tr >
  <td >Dependancy Injection with StructureMap</td>
  <td><a href="http://miscjibberish.blogspot.com/" title="Miscellaneous Jibberish">Jeremy Wiebe</a></td>
  <td >18-Jun-08</td>
 </tr>
 <tr >
  <td >Nhibernate: An Entry-Level Primer</td>
  <td><a href="http://codebaboon.blogspot.com/" title="Code Baboon">Dave Harris</a></td>
  <td >25-Jun-08</td>
 </tr>
 <tr >
  <td >Creating Real world applications with CSLA 3.5</td>
  <td>David Maynard</td>
  <td >02-Jul-08</td>
 </tr>
 <tr >
  <td >MVC vs MVP smackdown</td>
  <td>Robert Regnier</td>
  <td >09-Jul-08</td>
 </tr>
</table>
</p>

Each webinar will begin at 12:15 Eastern and be very easy to consume (30 minutes max). Low on the powerpoint slides, high on code demonstrations.

I'll post updated information once it becomes available, but please mark these dates on your calendar and try to make time to attend.

<p>Ta<br />
Steve Porter</p>]]></description>
<pubDate>Tue, 29 Apr 2008 15:01:48 -0500</pubDate>
</item>
<item>
<title>Team Foundation Server 2008 SP1 announced</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#xgm231176573</link>
<description><![CDATA[<p>Brian Harry just <a href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx" title="bharry's WebLog : Team Foundation Server 2008 SP1 Preview">announced</a> the items that are going to be included in Team Foundation Server 2008 SP1. Wow!</p>

<p>I've always believed that the dev team working on TFS has done a really great job of <a href="http://en.wikipedia.org/wiki/Dogfooding" title="Eating one's own dog food - Wikipedia, the free encyclopedia">dogfooding</a> the whole agile delivery model that they push with the MSF process templates and this service pack speak to that.</p>

<p>This isn't just a bunch of bug fixes, but a whole whack of new features. Here are a couple of highlights for me:</p>

<ol>
<li><strong>Simpler working folder mappings</strong>: One of the hardest concepts that Visual Source Safe users have when they first start working with TFS is Workspaces. Hopefully this new interface will help ease the transition.</li>
<li><strong>Conditionalize builds on the trigger</strong>: This feature would have saved me from having to create and maintain multiple script files for one of our projects that had a large number of slow tests. This would have allow me to skip the slow tests for my CI builds, but keep them in for our nightly builds.</li>
<li><strong>Automatic solution rebinding</strong>: I've always hated the manual grunt work that follows any large scale VSS migration. Although I always recommend that teams take the migration process as an opportunity to clean up their source tree structure, for teams that just want a simple migration, this will be a great time saver.</li>
</ol>

<p>Keep up the good work!</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Tue, 29 Apr 2008 10:42:52 -0500</pubDate>
</item>
<item>
<title>Steps for Evaluating Team Foundation Server</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#ngq230850246</link>
<description><![CDATA[<p>Want to get started evaluating Team Foundation Server 2008? Here are some concrete steps you can take this week-end.</p>

<ol>
<li>Download the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812" title="Team Suite Trial">Team Suite Trial VPC</a> from Microsoft. It's a pretty hefty download, but well worth the bandwidth.</li>

<li>Make sure that you also download and install the VSTS 2008 Hands-on Labs March 2008 Release. This is the last download in the list of files to download on the page noted above. Installing the labs right on the VPC makes the most sense, as they go hand-in-hand.</li>

<li>Download and install the <a href="http://www.scrumforteamsystem.com/en/RegisterPage1.aspx" title="Scrum Process Template">Scrum process template</a> from <a href="http://www.scrumforteamsystem.com/en/default.aspx" title="Scrum for Team System">Conchango</a>. Ensure you get the version for TFS 2008. The template must be installed on the VPC using the TFSSetup account. The install is very straight forward on the VPC (next, next, next). Once installed, you can create a new team project with this template to experiment with. The steps for creating a new team project can be located <a href="http://msdn2.microsoft.com/en-us/library/ms181477(VS.80).aspx" title="How to: Create a Team Project">here</a>. Make sure that in step 4, you select the Scrum template.</li>

<li>Review some of the existing process guidance documentation:</li>
	<ul>
	<li>MSF for Agile - On the VPC, open Internet explorer and navigate to http://tfsrtm08/Sites/Module03/Process%20Guidance/Supporting%20Files/ProcessGuidance.htm</li>
	<li>MSF for CMMI - On the VPC, open Internet explorer and navigate to http://tfsrtm08/Sites/ebanking1/Process%20Guidance/Supporting%20Files/ProcessGuidance.htm</li>
	<li>Scrum - On a machine connected to the internet, open Internet explorer and navigate <a href="http://www.scrumforteamsystem.com/processguidance/v2/ProcessGuidance.aspx" title="Scrum for Team System - Beta Process Guidance - Update Coming Soon">here</a>.</li>
</ul>
	<p>If you have issues access the process guidance on the VPCs, log into the site using the TFSSetup credentials.	</p>

<li>You can learn the basics for navigating Team System by following the lab named "Team Development with Team System 2008". If you performed the default install of the labs mentioned in item 2, then the lab is located in "C:\MSLabs\VSTS 2008\Manuals\e2e".</li>

<li>Most of the team projects have been created using the "Agile" template. if you wish to see that the CMMI template looks like, you can view the eBanking1 Team Project.</li>

<li>Review some of the available reports by reviewing the hands on lab "IT Governance with Team System". If you performed the default install of the labs mentioned in step 2, then the lab is located in "C:\MSLabs\VSTS 2008\Manuals\e2e".</li>

<li>Explore the web front-end to TFS. It's already installed on the VPC, so you'll just have to navigate to http://tfsrtm08:8090 and kick the tires.</li>
</ol>
<p>Hope this helps you get started evaluating Team System. If during your evaluation, you have any questions or thoughts, feel free to leave me a comment.</p>
<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Fri, 25 Apr 2008 16:04:05 -0500</pubDate>
</item>
<item>
<title>Getting started with TFS Migration and Synchronization Toolkit</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#eot229822912</link>
<description><![CDATA[<p>I spent some time with the <a href="http://www.codeplex.com/MigrationSyncToolkit" title="TFS Migration and Synchronization Toolkit - Home">TFS Migration and Synchronization Toolkit</a> this week and I thought that I&#x27;d share my experiences with it to help out anyone else who wants to evaluate this toolkit. I found the included documentation to be a little weak and in some areas if found that parts were missing, so maybe this post can fill the documentation out a bit.</p>
<p>I had a pretty simple goal in mind when I started looking at the toolkit. I just wanted to run a simple demo where I synchronize a SharePoint task list with work items in a Team System project. The toolkit includes the required pieces to make this happen, but the additional undocumented steps I had to perform were a little frustrating (and time consuming as I had to hunt down solutions to my issues). So here are the steps I took to get this simple demo working.</p>
<p>I was working on the newly released <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812&displaylang=en" title="Download details: Visual Studio&#174; Team System 2008 VSTS VPC Image (Trial)">Team Suite Trial VPC</a> from Microsoft, so I was working with both Visual Studio 2008 and Team Foundation Server 2008. </p>
<p>I started by logging into the VPC as Darren (an account with local administrative privileges).</p>
<p>Once logged in, I decided that I was going to work with an existing team project (eBanking1). If you want, you can work with a new team project, but of course, you'll need to create it first.</p>
<p>The code included in the toolkit sample uses a custom work item, so the next step I needed to perform was to import the work item (since the toolkit team was so nice to include the work item definition xml file (WssTask.xml located in WIT\Wss2TfsWit\). I initially experienced some issues importing this work item (this may be a 2005 vs. 2008 issue), but a few adjustments to the .xml file and I was golden.</p>
<p>First, replace line 2 with the following:</p>
	<p>&lt;WITD xmlns:witd=&quot;http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/typedef&quot; application=&quot;Work item type editor&quot; version=&quot;1.0&quot;&gt;</p>
<p>and replace line 210 with:</p>
	<p>&lt;/WITD&gt;</p>
<p>Next, add the following field definition somewhere in the field definition area (I started at line 43):</p>
	<p>&lt;FIELD name=&quot;History&quot; refname=&quot;System.History&quot; type=&quot;History&quot;&gt;</p>
		<p>&lt;HELPTEXT&gt;Discussion thread and other historical information&lt;/HELPTEXT&gt;</p>
	<p>&lt;/FIELD&gt;</p>

<p>Once I made those edits, I used the Process Template Editor to import the work item into my target team project (you&#x27;ve all downloaded the TFS 2008 PowerTool, haven&#x27;t you? If not, shame on you and go get it from <a href="http://msdn2.microsoft.com/en-us/tfs2008/bb980963.aspx" title="TFS 2008 PowerTools">here</a> ASAP).</p>
<p>The next item that needed to be taken care of was the creation of the database used by the migration tool. The required SQL scripts are also included with the toolkit and can be located in &#x27;Toolkit\Wit\SQL\&#x27;. I used the installed instance of SQL Express to host my database, but you can use any SQL Server database. Before I could run the scripts, I needed to manually create the database (called MigrationToolkitTest) and once it was created, I just ran the two included scripts (first the script to create the table definitions and then the script to create the stored procedures).</p>
<p>Next, I logged into the team project&#x27;s portal and ensured that the current user permissions allowed full control over the SharePoint site (see <a href="http://msdn2.microsoft.com/en-us/library/bb552179.aspx" title="Setting Administrative Permissions">here</a> for details).</p>
<p>Once the user had the appropriate SharePoint permissions, I added the currently logged in user to the TFS Server Account group using the TFSSecurity utility (syntax = tfssecurity.exe /server:http://yourserver:8080 /g+ srv: domain\account).</p>
<p>Now that all of the appropriate permissions were assigned, I needed to get the included code built. First, I opened the solution located in the Toolkit directory. If you&#x27;re running Visual Studio 2008, you will be prompted to convert the solution, which was quite painless.</p>
<p>Once converted, I needed to make a few adjustments to get the solution to actually build. I&#x27;m going to assume that the C# compiler has been changed between 2005 and 2008 and that the build errors I was getting don&#x27;t show up in 2005. The changes that I had to make involved changing the scope of a couple of property get statements. In both statements, the property was scoped as protected and I changed them both to be public. Both lines are found in the file named ChangeGrouping.cs (one on line 126 and one on line 286).</p>
<p>Once those changes were made, I was able to build the solution, but there were a few other changes that I needed to make to address <a href="http://www.codeplex.com/MigrationSyncToolkit/WorkItem/View.aspx?WorkItemId=8495" title="TFS Migration and Synchronization Toolkit - View Issue">a known issue</a>. </p>
<ol>
	<li>Move FireEvent(SessionStart, MigrationToolkitResources.SessionStarting call) right after initializing m_syncProcess member in Synchronize, SynchronizeFull and ProcessDeferredLinks method located in WorkItemTrackingSession.cs</li>
	<li>Move FireEvent(SessionAborted,...) in AbortImpl method right under m_syncProcess.Abort() call located in WorkItemTrackingSession.cs</li>
</ol>
<p>Once those changes were accomplished, I was able to build the solution and produce all of the executables and dlls required. If you&#x27;re planning on running the solution via the command line executable, you will need to copy all of the dll output from two projects (TfsLinking and Wss2TfsWIT) to the same directory as the console application. If you want to debug the solution from inside Visual Studio, you can make sure that the console application project references the two previously mentioned projects so that the output gets automatically copied to the output directory of the console application. One additional step you&#x27;ll need to perform to allow debugging is add a call to the SampleConfig.xml to the Command Line are in the Debug property.</p>
<p>Speaking of the SampleConfig.xml file, the included documentation mentions a few areas where you&#x27;ll need to make edits, but I&#x27;ll expand on those instructions a bit.</p>
<p>First, since I only wanted to synchronize the task list and not worry about version control or linking, I removed both the &lt;VC&gt; sections and the &lt;Linking&gt; section (careful to leave the closing &lt;/Sessions&gt; tag at the end of the &lt;Linking&gt; section).</p>
<p>I then edited the WIT section to use my test project (eBanking1) and changed the &lt;BaseURL&gt; to point at the team project&#x27;s portal (eg:http://tfsrtm08/Sites/eBanking1).</p>
<p>I adjusted the Server section to point to my actual server (replacing where id=SampleTFS)</p>
<p>I adjusted the SQL section to use SQL Express by change the connection string to use &#x27;.\sqlexpress&#x27; and made the same edit to the &lt;Server&gt; property.</p>
<p>Once those changes were made to the SampleConfig file, I was able to run the command line application without error. To test the toolkit, I opened the team project portal&#x27;s task list in Internet Explorer, added a couple of tasks and then ran the console application. Once completed, I used the team explorer to query for WSSTask work items and discovered my newly added SharePoint tasks had been copied over to  WSSTask work items. I could then go and make changes to the tasks in SharePoint, rerun the console application and the changes would be reflected in Team System. Pretty cool.</p>
<p>I&#x27;m still dealing with a couple of problems. It looks like I&#x27;m having issues with the time set in SharePoint and the time synchronized in the corresponding work item in Team System and I get errors after creating more then 2 tasks, but I&#x27;m sure that these issues are just me being unfamiliar with setting up the toolkit. Hopefully I have these issues addressed with a little more digging.</p>

<p>Have you had any experiences with this toolkit that you'd like to share? Any successes or issues that you've encountered? Leave me a comment to spread the word (both good and bad).</p>
<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sun, 13 Apr 2008 18:41:52 -0500</pubDate>
</item>
<item>
<title>Addressing Poor Work Item Performance when using Team Foundation Server 2008 and Vista</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#syc229100276</link>
<description><![CDATA[<p>One of my co-workers was having a difficult time creating work items using the 2008 version of the Team Explorer on Vista. Saving a work item would take more then 40 seconds and at times range as high as 2 minute. Totally unacceptable.</p>
<p>We ran the <a href="http://msdn2.microsoft.com/en-us/tfs2008/bb980963.aspx#bpa">TFS Best Practices Analyzer</a>, but it didn’t discover any issues. We tried using Excel to see if it would help, but he still received the same poor results.</p>
<p>While trying to troubleshoot the issue, my co-worker disabled IPV6. Success! All the performance issues disappeared. I wish I had thought of that.</p>
<p>I had heard that enabling IPV6 can cause unusually behaviour, but since I’m not often running Vista these days, it didn’t even occur to me.</p>
<p>Good catch Joel!</p>
<p>Have you ever struggled with TFS or VSTS performance issues and had some successes fixing the issue? Leave me a comment so you can share your success story with the world.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sat, 05 Apr 2008 08:57:56 -0600</pubDate>
</item>
<item>
<title>New Team Suite and Team Foundation Server 2008 trial VPC released</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#hdb228515462</link>
<description><![CDATA[<p>This couldn’t have come at a better time.</p>
<p> The old VPC (which I use for presentations) was set to expire on April 1st  (this upcoming Tuesday) and I needed a replacement. I been working on creating my own VPC for an upcoming session I have in Salt Lake City and I was starting to get worried that I wasn't going to get everything installed and configured on time.</p>
<p>Thanks to everyone involved at Microsoft for getting this released before the old VPC expired.</p>
<p>You can download all of the files <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812&displaylang=en">here</a>. The image is set to expire at the end of 2008. Lots of time to explore all the tools available. Also included is a collection of hands on labs that explore the features of Team System. I'm interested on what they cover.</p>
<p>Was anyone else getting worried about their old image expiring? Did you make good use of the old image?</p>
Ta.<br />
Steve Porter 
</p>]]></description>
<pubDate>Sat, 29 Mar 2008 15:31:01 -0500</pubDate>
</item>
<item>
<title>Simple fix for Team Project Creation Error TF30170</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#gbu226185556</link>
<description><![CDATA[<p>One of my customers reported receiving this error when trying to create a new team project on their new 2008 Team Foundation Server.</p>
<p><img src="images/tf30170.jpg" title="TF30170 Error Message" /></p>
<p>One of the strange things was that this wasn’t the first project that they’d created on this server. Other projects were created successfully.</p>

<p>After a bit of troubleshooting, I discovered that the issue was caused by trying to use the 2005 Team Explorer to create the Team Project. Switching over to the 2008 Team Explorer client fixed the issue. No points to Microsoft for the obtuse error message.</p>
<p>This brings up a good question. At Imaginet, we decided to perform a clean install of 2008 and use it for all new projects but keep our 2005 server around for existing projects. Because of this, we have users who have to jump back and forth between the 2005 Team Explorer and the 2008 Team Explorer. How many of my readers have upgraded to Team Foundation Server 2008? </p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 02 Mar 2008 15:19:16 -0600</pubDate>
</item>
<item>
<title>Starting and Stopping Services during a Team Build</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#qmy223678207</link>
<description><![CDATA[<p>I’ve been working to get our new Team Foundation Server up and running at <a href="www.imaginets.com">Imaginet</a> and one of my tasks was to take an existing project and migrate it over. This has been a mostly pain free procedure, with one team build related exception.</p>
<p>One of the tasks that this project’s team build is performing is to take the build output and deploy it to a testing environment. This involves stopping a set of services, performing a file copy and then starting the services back up again. To assist with these tasks, the build was using a couple of tasks from the <a href="http://msbuildtasks.tigris.org/">MSBuild Community Tasks Project</a> (specifically the StopServices and StartServices tasks). This worked without a hitch with our 2005 build machine, but when I migrated this script over to our 2008 build machine, the build started failing on these tasks. Weird.</p>
<p>One of our staff (thanks <a href="http://weblogs.asp.net/miked/">Mike</a>) started to investigate and came across an unexpected “feature” of the new build agent. I’ll let him describe the issue…</p>
<p><table width="100%" cellpadding="12" cellspacing="0" border="0">
	<tr>
		<td>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">In my build type, I want to shut down and restart some services on my build server. I was able to do this in VS 2005 Team Build successfully:</span></font>
			</p>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF">&lt;</font><font color="#A31515">Target</font> <font color="#FF0000">Name</font><font color="#0000FF">=</font>"<font color="#0000FF">StopServices</font>"<font color="#0000FF">&gt;</font></span></font>
			</p>
				<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF">&lt;</font><font color="#A31515">Exec</font> <font color="#FF0000">Command</font><font color="#0000FF">=</font>"<font color="#0000FF">sc stop</font> <font color="#FF0000">&amp;quot;</font><font color="#0000FF">Support Service</font><font color="#FF0000">&amp;quot;</font>" <font color="#FF0000">Timeout</font><font color="#0000FF">=</font>"<font color="#0000FF">60000</font>" <font color="#FF0000">ContinueOnError</font><font color="#0000FF">=</font>"<font color="#0000FF">true</font>"<font color="#0000FF">/&gt;</font></span></font>
				</p>
				<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF">&lt;</font><font color="#A31515">Exec</font> <font color="#FF0000">Command</font><font color="#0000FF">=</font>"<font color="#0000FF">sc stop</font> <font color="#FF0000">&amp;quot;</font><font color="#0000FF">Client Service</font><font color="#FF0000">&amp;quot;</font>" <font color="#FF0000">Timeout</font><font color="#0000FF">=</font>"<font color="#0000FF">60000</font>" <font color="#FF0000">ContinueOnError</font><font color="#0000FF">=</font>"<font color="#0000FF">true</font>"<font color="#0000FF">/&gt;</font></span></font>
				</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF">&lt;/</font><font color="#A31515">Target</font><font color="#0000FF">&gt;</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">When I log on as the tfsBuild service on the build machine, and run the above build target using MSBuild, it works fine.</span></font>
			</p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Target StopServices:<br>
				sc stop "Support Service"<br>
				<br>
				SERVICE_NAME: Support Service<br>
				TYPE : 10 WIN32_OWN_PROCESS<br>
				STATE : 3 STOP_PENDING<br>
				<wbr> (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)<br>
				WIN32_EXIT_CODE : 0 (0x0)<br>
				SERVICE_EXIT_CODE : 0 (0x0)<br>
				CHECKPOINT : 0x0<br>
				WAIT_HINT : 0x0<br>
				sc stop "Client Service"<br>
				<br>
				SERVICE_NAME: Client Service<br>
				TYPE : 10 WIN32_OWN_PROCESS<br>
				STATE : 3 STOP_PENDING<br>
				<wbr> (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)<br>
				WIN32_EXIT_CODE : 0 (0x0)<br>
				SERVICE_EXIT_CODE : 0 (0x0)<br>
				CHECKPOINT : 0x0<br>
				WAIT_HINT : 0x0<br></font></span></font>
			</p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">When I queue a build to occur on the same build server using Team Build, it fails.</span></font>
			</p>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF"><font size="2">Target "StopServices"</font></font></span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Task "Exec"</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Command:</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">sc stop "Support Service"</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">[SC] OpenService FAILED 5:</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Access is denied.</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Done executing task "Exec".</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Task "Exec"</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Command:</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">sc stop "Client Service"</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">[SC] OpenService FAILED 5:</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier" color="#0000FF">Access is denied.</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">I then ran the following at the command prompt:</span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF"><font face="Courier">whoami /all /fo list &gt; c:\whoami-desktop.txt</font></font></span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">Then I added this task to the target "StopServices" (seen above):</span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font color="#0000FF">&lt;</font><font color="#A31515">Exec</font> <font color="#FF0000">Command</font><font color="#0000FF">=</font>"<font color="#0000FF">whoami /all /fo list &gt;</font> <font color="#FF0000">&amp;quot;</font><font color="#0000FF">c:\whoami-teambuild.txt</font><font color="#FF0000">&amp;quot;</font>" <font color="#0000FF">/&gt;</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">Removing all the identical information in whoami-desktop.txt and whoami-teambuild.txt, the remaining group information is different:</span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><strong>whoami-desktop.txt:</strong></span></font>
			</p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Group Name: BUILTIN\Remote Desktop Users</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Type: Alias</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">SID: S-1-5-32-555</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Attributes: Mandatory group, Enabled by default, Enabled group</font></span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Group Name: BUILTIN\Administrators</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Type: Alias</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">SID: S-1-5-32-544</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Attributes: Mandatory group, Enabled by default, Enabled group, Group owner</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Group Name: NT AUTHORITY\INTERACTIVE</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Type: Well-known group</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">SID: S-1-5-4</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Attributes: Mandatory group, Enabled by default, Enabled group</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><strong>whoami-teambuild.txt:</strong></span></font>
			</p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Group Name: NT AUTHORITY\SERVICE</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Type: Well-known group</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">SID: S-1-5-6</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><font face="Courier">Attributes: Mandatory group, Enabled by default, Enabled group</font></span></font>
			</p>
			<p style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px">
				<font size="-1"><span style="font-family:Arial;font-size:11px">These tasks worked when I was using Team Foundation Server 2005 and its Team Build service.</span></font>
			</p>
			<p align="left" style="margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:1px;padding-left:0px"></p>
			<div style="text-align:-webkit-left">
				<font size="-1"><span style="font-family:Arial;font-size:11px"><br></span></font>
			</div>
		</td>
	</tr>
</table></p>

<p>The answer in getting these tasks to work lies in using the <a href="http://msdn2.microsoft.com/en-us/library/bb399142.aspx">Interactive Build feature of Team Build 2008</a>. Team Build now uses WCF to communicate with the build agent and it doesn’t seem to be as loose with the permissions as the .Net Remoting based Team Build.</p>

<p>The only downside of using an interactive build is that I have to leave the account that is hosting the Team Build process logged in at the console and if the machine reboots, I have to log in and re-run the build process to make sure the build doesn’t fail. I could probably automate the login and process launch, but for now, everything seems fine.</p>

<p>Ta.<br />
Steve Porter</p>

]]></description>
<pubDate>Sat, 02 Feb 2008 14:50:07 -0600</pubDate>
</item>
<item>
<title>Where oh where did my drop folder go?</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#qxc220062436</link>
<description><![CDATA[<p>I discovered an interesting feature with the new Create Team Build Definition dialog for Team Foundation Server 2008.</p>

<p>With TFS 2005, I was used to having to specify what drop folder to use for the build output. This information was gathered when you ran the Create a New Team Build wizard and was then stored inside the Team Build .proj file.</p>

<p>With TFS 2008, a lot of the data stored in the .proj file has been moved out of the proj file and into the Team Build database and the drop location was one of those pieces of information that was moved.</p>

<p>So I expected to have to set the drop folder during the wizard process in 2008, but I was never prompted to provide that information. I was able to provide a drop location if I queued the build manually, but there didn’t seem to be any way to set a default.</p>

<p>After a bit of playing around, I discovered that Microsoft decided to change the terminology slightly for 2008. You now set the default drop location by providing a staging location (see image 1).</p>

<a href="http://homepage.mac.com/stevevrporter/Sites/blog/images/stageingLocation.jpg"><img width="400" src="http://homepage.mac.com/stevevrporter/Sites/blog/images/stageingLocation.jpg" /></a><br />
<p>image 1</p>

<p>Once set, the build agent will drop all of the output to this location by default.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sat, 22 Dec 2007 18:27:15 -0600</pubDate>
</item>
<item>
<title>Checking SQL Versions when installing TFS in Dual Server Setup.</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#fle220037355</link>
<description><![CDATA[<p>I came across this issue while installing TFS 2008 this week. Our client wanted to use an existing install of SQL Server instead of having to maintain a new instance and everything seemed fine until I began to install TFS. I received the dreaded <i>Error 29112</i> (Report server service not configured properly).</p>

<p>Reporting Services installed fine (or so it seemed), and the configuration window showed a lot of green checks, but there was an initialization issue.</p>

<p>After a bit of digging, I determined the issue. The client had installed the developer edition of SQL server and I had used the Standard edition to install Reporting Services on the app tier.</p>

<p>Unfortunately, the only way to fix the issue was to uninstall the standard edition and then install the developer edition.</p>

<p>Once that was done, all was good.</p>

<p>So, lesson learned… Always check the SQL edition on the data tier before installing Reporting Services on the data tier.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sat, 22 Dec 2007 11:29:14 -0600</pubDate>
</item>
<item>
<title>My Experience with Moving Team Foundation Server from One Hardware Configuration to Another</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#imn209909837</link>
<description><![CDATA[<p>I spent part of this week-end doing a dry run in preparation for moving our production Team Foundation Server from it's current home on a low powered glorified desk-top machine to a virtual PC hosted on our kick-ass virtual server environment. </p>

<p><h6>In defense of the old environment, it would have been robust enough for our needs, but when the machine was originally built, someone decided that it would be a good idea to partition the machine's huge hard drive into two partitions and the C drive was only allotted 6 gigs of space. Don't do that.</h6></p>

<p>I followed <a href="http://msdn2.microsoft.com/en-us/library/ms404869(VS.80).aspx">the published documentation</a> for the process and except for 3 issues it went fine.</p>

<p>Issues.</p>
<ol>
<li><p>I needed to install a SharePoint Services hot fix so that that the new environment matched the old environment. This issue occurred while I was trying to restore the STS_Content_tfs database and the error message I received was "The database schema is too old to perform this operation in this SharePoint cluster. Please upgrade the database and try again". To move beyond this, I just had to install WSS2003-KB924881-FullFile-ENU.exe. To confirm that this was the missing component, I used the Add/Remove Programs control panel  plug-in with Show Updates turned on to compare the two environments for differences.</p></li>

<li>I needed to change one of the command line calls while trying to restore and verify Report Server on the new Team Foundation Server. Step 19 needs to be changed to include the -mturl parameter. The command line I had to used was </li>

<p><strong>SetupWarehouse.exe -o -s</strong> <em>newDataTierServerName</em> <strong>-d</strong> <em>newTeamFoundationDataWarehouseName</em> <strong>-mturl</strong> http://<em>newDataTierServerName</em>:8080 <strong>-c</strong> warehouseschema.xml <strong>-ra</strong> <em>TFSReportServiceAccount</em> <strong>-a</strong> <em>TFSServiceAccount</em>. </p>

<p>Before this command line would work, I needed to start the TFS App Pool, which is detailed in steps 1 and 2 in the <strong>To restart services and verify operation</strong> section.</p>

<li><p>I needed to install the Scrum for Team System process template on the new server. I realized this after I noticed that one of our team projects was showing the nasty red x beside the Documents folder in the Team Explorer and the project portal for this same project was displaying an error message. Once installed, the red x disappeared and the project portal displayed correctly.</p></li>

</ol>

<p>Now, I just need to do it for real and then rename the server to match our old environment.</p>

<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Mon, 27 Aug 2007 07:17:17 -0500</pubDate>
</item>
<item>
<title>V1.0 of the Migration and Synchronization Toolkit has been released</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#liv204835123</link>
<description><![CDATA[<p>I've been hearing about this <a href="http://www.codeplex.com/MigrationSyncToolkit">tool</a> for awhile and I have high hopes for it. One of the biggest hurdles facing companies that want to adopt Team System is not wanting to lose their existing investment in other tools that perform some of the same features that Team System performs (Issue Tracking, Source Control, etc.). Hopefully this tool will allow these companies to leverage their existing investment, but still get all of the goodness that Team System provides.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Fri, 29 Jun 2007 13:38:43 -0500</pubDate>
</item>
<item>
<title>Podcast of the Team System Panel from TechEd</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#kpn204817261</link>
<description><![CDATA[<p>The guys over at <a href="http://www.dotnetrocks.com/">.Net Rocks</a> have posted a podcast (show #250) of the Team System Panel discussion held at TechEd. The panel had some great participants (including my boss <a href="http://weblogs.asp.net/JSemeniuk/">Joel Semeniuk</a>). If you wish to get some insight into how Team System is being used in the real world by the leading experts, give it a listen.</p>

<p>Ta.<br />
Steve Porter</p>

]]></description>
<pubDate>Fri, 29 Jun 2007 08:41:00 -0500</pubDate>
</item>
<item>
<title>Back from Beirut</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#fwj204483076</link>
<description><![CDATA[<p>Well, I'm back from my two week stay in Beirut.</p>

<p>It was an absolutely amazing experience and I'd love to go back soon to continue my work.</p>

<p>I want to give a really big thanks to all the folks at <a href="http://www.iesc.org/">IESC</a> for having me out and for making my stay so pleasant. I also want to thank all of the students for making my sessions so enjoyable.</p>

<p>I've posted my journal on-line if you wish to get more detail. There's a lot in there, but if you're looking for some information on what I experienced while in Beirut, I think it's worth a read.</p>

<p>The main page can be located <a href="http://web.mac.com/stevevrporter/iWeb/Site/Blog/Blog.html">here</a> and if you want to just jump to the first entry, you can access that <a href="http://web.mac.com/stevevrporter/iWeb/Site/Blog/AA360B3B-E5CB-4B9E-A384-0AB3F2A7DF71.html">here</a> and then to get to the next day, click 'previous'.</p>

<p>Ta.<br />
Steve Porter </p>]]></description>
<pubDate>Mon, 25 Jun 2007 11:51:15 -0500</pubDate>
</item>
<item>
<title>Off on the road to Beirut</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#tag203095596</link>
<description><![CDATA[<p>Well, I left for Beirut today to participate in two weeks of training as part of an <a href="http://geekcorps.org/">IESC Geekcorps</a> sponsored project. I'll be holding two separate sessions over the two weeks focusing on using Team System to improve software development.</p>

<p>I'd like to thank everyone at IESC for giving me this opportunity and I'm looking forward to interacting with the people on the ground in Beirut. I'm going to to make sure that everyone involved learns something useful during my stay (including me).</p>

<p>I'm going to be presenting <em>Microsoft's Optimizing the Software Development Lifecycle with Microsoft Visual Studio Team System (MOC 2631a)</em>. This is my first exposer to this material and it seems to be well thought out. It covers all of the basic components of Team System and gives the students an excellent hands-on experience with each area (Project Management, Architecture, Development and Testing).</p>

<p>This course focuses more on labs then on lectures which follows my philosophy for training engagements (Powerpoint is for girly men). I've been warned in advance that the setup for the training material can be a little tricky but I believe that the trainer that preceded me iron out all the bugs (thanks Ben).</p>

<p>I encourage everyone to investigate the IESC geekcorps web site and see if participating in one of their projects might interest you. I've been very impressed with how well I've been treated so far and I'm going to assume that things are not going to change once I'm on the ground.</p>

<p>Ta.<br />
Steve Porter</p> ]]></description>
<pubDate>Fri, 08 Jun 2007 00:00:00 +0300</pubDate>
</item>
<item>
<title>Why are we so Often Wrong</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#yka202106135</link>
<description><![CDATA[

<p>I noticed this great <a href="http://www.healthbolt.net/2007/02/14/26-reasons-what-you-think-is-right-is-wrong/">post</a> on <a href="http://digg.com/">Digg</a> about 26 reasons why what you think is Right is Wrong. It contains a list of 26 effects or biases that effect the way we perceive or act.</p>

<p>The list is actually a good read for software professionals because there are a few nuggets in there that directly apply to software development.  Here's my personal favorite...</p>

<p>14 - <a href="http://en.wikipedia.org/wiki/Information_bias">Information bias</a> - the tendency to seek information even when it cannot affect action.</p>

<p>This is just another word for <a href="http://en.wikipedia.org/wiki/Analysis_paralysis">Analysis Paralysis</a>. To combat this, you should consider the the Agile concept of doing just enough analysis to get you started and then continue to review your assumptions as you progress.</p>

<p>Or how about...</p>

<p>20 - <a href="http://en.wikipedia.org/wiki/Planning_fallacy">Planning fallacy</a> - the tendency to underestimate task-completion times. </p>

<p>Oh man, is that not the truth!</p>

<p>Have a look at the list and see if any apply to you.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Mon, 28 May 2007 23:35:34 -0500</pubDate>
</item>
<item>
<title>An Excellent way to Define Risk</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#exh201748934</link>
<description><![CDATA[<p>Yesterday I attended an excellent seminar on Agile Development presented by <a href="http://weblogs.asp.net/rosherove/">Roy Osherove</a>.  One of the nuggets of wisdom that I took away was his suggestion on how to get your team to think about project risk.</p>

<p>Defining risk is hard. Very hard. Developers are optimist by nature (bless their little hearts). They all believe, that given enough resources, they can accomplish any task. So when you ask them to define the risks to a projects success, they're stumped. They assume that they'll be able to overcome any obstacle and succeed.</p>

<p>His suggestion was to get the team to hypothetically place themselves into the future, at the end of the project, after it's already failed miserably. You then get the team to describe what caused the project to fail. What a great idea! I think by getting the team to acknowledge that the project could fail (by mentally placing them into the future where the project has already failed), and it allows the team to be pessimistic without it being personal.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Thu, 24 May 2007 20:22:14 -0500</pubDate>
</item>
<item>
<title>Feature (cough... bug) of TFS Branching and Merging.</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#pjf200169716</link>
<description><![CDATA[
	<p>One of our clients brought this little beauty to my attention, so I'd thought I'd pass it along in case anyone else comes across this issue...</p>

	<p>This client makes heavy use of Team Foundation Server's branching and merging feature. They have a main source root that they take branches from to work on and then merge their changes back into the root. All good so far. In addition to merging back to the root, these branches, on occasion, re-visit the root to pick up changes made to it directly or changes from other branches that have merged their changes to the root. They do these occasional syncs to make the eventual final merge to the root less painful and to insure that their branch is up to date. Everything was working great until one merge started causing them grief. Here's the detailed explanation...</p>

	<ol>
		<li>Take a branch from the Root.</li>

		<li>Modify a file in the root (in changeset 1).</li>

		<li>Modify the same file in the branch (in changeset 2).</li>

		<li>Merge the change from the root into the branch (in changeset 3) by discarding the change in branch. So now the file in the branch contains a copy of the code from changeset 1.</li>

		<li>Now you want to merge from the branch into the main and you'd expect to get the changes from changeset 3 back into the root.  Here's the bad part...</li>
	</ol>

	<p>instead of merging changeset 3 into the root (because changeset 3 is the most current changeset), TFS merges changeset 2. According to Microsoft, this behaviour is by design because the devs at Microsoft assume that your merge back to the root was done to rollback the previous merge from the root (doh!). TFS thinks that it should use changeset 2 instead of changeset 3 because the files were never actually merged, but overwritten.  Microsoft is working on a hotfix, so if you stumble across this issue, contact Microsoft and request the fix.</p>

	<p>Thanks Dan.  Both for the original report and the later clarification.</p>

	<p>Ta.<br>
	Steve Porter</p>

]]></description>
<pubDate>Sun, 06 May 2007 13:41:55 -0500</pubDate>
</item>
<item>
<title>Geek (to the) Corp</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#iie200167640</link>
<description><![CDATA[<p>A few weeks ago I stumbled upon a blog post that announced that <a href="http://www.geekcorps.org/">IESC Geekcorp</a> was looking for volunteers to travel to Lebanon to provide Team System training. I immediately thought, 'What a great opportunity', so I submitted my particulars and within a few days they gave me a call and said that they were interested in having me participate. After a few weeks of ironing out the details, the final few arrangements have been made and my participation has now been confirmed.</p>

<p>I'm scheduled to be in Beirut from June 9th, 2007 until June 23rd 2007. During that period, I'll be holding two three-day sessions on optimizing the software development lifecycle with Microsoft Visual Studio Team System in addition to meeting with individuals involved in the local software development community.</p>

<p>I'm really looking forward to this opportunity. Not only do I get to experience a whole new culture, but I can really put my money where my mouth is when it comes to helping out those in need. Lebanon has experienced a series of awful events over the last couple of decades and it's great that instead of just sitting on the sidelines and talking about what a bad situation it is, I can do something that might contribute to Lebanon re-establishing itself as the commercial centre of the Middle East.</p>

<p>If anyone has any suggestions about how I should spend my free time while I'm there <em>(all work and no play makes Jack a dull boy)</em>, please drop me a note.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 06 May 2007 13:07:20 -0500</pubDate>
</item>
<item>
<title>Code Clarity</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#yrr200159792</link>
<description><![CDATA[<p>I just read an interesting <a href="http://ceiled.spaces.live.com/blog/cns!FDEE70107FF2676B!137.entry">post</a> on <a href="http://ceiled.spaces.live.com/blog/?&amp;_c02_owner=1">Ryan Milligan's blog</a> regarding the proper way to structure your code to correctly convey its intent to the reader.</p>

<p>Whenever I see this sort of code I think, <em>is this a good case for refactoring into objects?</em> Now, for his specific example, encapsulating these behaviours into objects may be overkill. However if you have a base set of behaviours and you find a special case, that screams out for a parent object and an inherited child where you override the base where required for your special case.</p>

<p>For those of you who haven't read Martin Fowler's <a href="http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672">book on refactoring</a> or visited his <a href="http://www.refactoring.com/">site</a>, I highly recommend you spend some time getting familiar with the techniques he describes.</p>

<p>One of the goals of refactoring is to make the code simpler (which isn't always easy). Simpler code is easier to maintain. Always remember that source code has two readers: the compiler and the coder. Both audiences are important. As Ryan points out, having your source code convey its intention to the coder reading it is important. The compiler won't really care how the code is structured as long as the results are the same, so why not make the code easier to read?</p>

<p>For all those hotshot coders out there who strive to produce tight code (<em>"I can write that method in one line"</em>), just remember that someone else may have to look at the code later and determine what the heck you were trying to do. Sure, you saved yourself a few key strokes, but your logic may be so obtuse that it requires a few lines of comments to explain just what the heck you're doing. And... who knows what the compiler is going to do with your wonderful code. Modern compilers are pretty good at optimizing code, so why not just keep it simple and let the compiler work out the details. The coder who has to maintain your code will thank you (and that coder may be you!).</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sun, 06 May 2007 10:56:32 -0500</pubDate>
</item>
<item>
<title>Dealing with Team Explorer’s big red x</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#bqf199468346</link>
<description><![CDATA[<p>I recently spent a week at a client’s site helping them implement Team Foundation Server into their development environment. In the end, everything was good, but the experience wasn’t as smooth as I would have liked. My experience with installing and configuring TFS has been almost universally positive, but this client’s environment proved to be challenging.</p>

<p>We met our first issue during the actual installation of TFS. I encountered error 28925 (Calling the Team Foundation Server ServerStatus Web service failed). After a little bit of troubleshooting (huge thanks to my client’s head of network infrastructure) we traced the issue down to the company’s proxy rules. The company has an enforced policy that pushes down the proxy settings and the installation process was having difficulty resolving its own name because the account we were using for the setup (TFSSetup) couldn’t authenticate against the proxy. We could have addressed the issue by granting the TFSSetup account rights to proxy server, but instead we just temporally disabled the proxy by clearing the entry from the registry.</p>

<p>Once we finished the installation, our troubles persisted. When we tried to register the newly installed team foundation server with the team explorer, we couldn’t successfully add the server by using the server name, but we could successfully add the server if we used the IP address. And I use the term “successfully” loosely here because once the server was added to Team Explorer and a team project was added, both the Documents folder and the Reports folders showed large unfriendly red x’s beside the folders. To make things more confusing, we didn't experience this behaviour if we were logged directly onto the Team Foundation Server.</p>

<p>Again, the proxy was the culprit here. Thanks to a <a href="http://blogs.msdn.com/buckh/archive/2005/12/12/503015.aspx">post</a> from <a href="http://blogs.msdn.com/buckh/">Buck Hodges</a>, we were able to get the environment correctly configured by following his instructions and adding the <strong>BypassProxyOnLocal</strong> string value to the registry under the key, <strong>HKEY_CURRENT_USER\Software\Microsoft\VisualStudio<br />
\8.0\TeamFoundation\RequestSettings</strong> (which you will probably have to add yourself) and then setting its value to true. Once this was done on the all of the client machines, all was fine.</p>

<p>Ta.<br />Steve Porter</p>]]></description>
<pubDate>Sat, 28 Apr 2007 10:52:26 -0500</pubDate>
</item>
<item>
<title>You can find productivity gains in the weirdest places.</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#kox199464912</link>
<description><![CDATA[<p>One of the things that I really love about my Mac is its ability to perform so many actions purely though keyboard shortcuts. Between using the built-in shortcuts and <a href="http://quicksilver.blacktree.com/">Quicksilver</a>, I rarely have to use the mouse.</p>

<p>I’ve always thought of myself as a fairly proficient computer user, but I find that the more I use the keyboard and the less I rely on a pointing device, the more productive I become. The time I spend learning and practicing new ways of harnessing the power of keyboard shortcuts is always time well spent and ends up paying for itself</p>

<p>With this in mind, I’d like to direct you to this <a href="http://ceiled.spaces.live.com/blog/cns!FDEE70107FF2676B!126.entry">post</a> in Ryan Milligan’s blog. Ryan is one of the best programmers I’ve had the pleasure to work beside and he is able to work the Visual Studio IDE like a concert pianist plays a baby grand. I can guarantee you that if master even a small subset of the commands listed in his blog, you will see measurable gains in your productivity. I’ve watched Ryan in action and I’m a believer.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 28 Apr 2007 09:55:12 -0500</pubDate>
</item>
<item>
<title>TFS Migration and Synchronization Toolkit announced</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#uwv198881939</link>
<description><![CDATA[<p>An early <a href="http://www.codeplex.com/MigrationSyncToolkit">beta</a> of this tool was recently dropped to <a href="http://www.codeplex.com/">CodePlex</a>. The purpose of the tool is to allow organizations to create tools that can be used to synchronize Team System work items and source code with other third party tools that have similar features to Team System.</p>

<p>One of the major challenges that an organization that wants to implement Visual Studio Team System faces, is that they may already have a major investment in another tool. The main issue I see is companies may already have an issues/bug tracking tool. Because of this, they feel that they can’t use Team System’s built-in work items and its excellent source control features. Up until now, all I could recommend to these organizations is that they consider performing a bit of double entry, where the primary identifier/key/ID from their existing issue tracking system be entered as a field into a new Team System work item. Doing this allows a level of traceability between the issue/bug in their legacy tracking system and the new work item in Team System.</p>

<p>Microsoft understands that this sort of manual double entry is a major impediment to Team System adoption (and the selling of Team System licenses ☺ ), so they’ve created this tool to assist in the migration and synchronization of data from an existing system into Team Foundation Server. Their eventual goal is to release migration/synchronization tools for all of the major vendors (<a href="http://h71028.www7.hp.com/enterprise/cache/447066-0-0-0-121.html?rd=mercury">Mercury</a>, <a href="http://www.borland.com/us/products/starteam/index.html">Borland</a>), but by releasing this tool into the community, they’re hoping that companies who are using a home grown system might consider writing their own migration tool and eventually move entirely to Team System.</p>

<p>So if your organization is holding back from investigating Team System because you’re concerned about losing your investment in your current development management systems, have a look at what the migration/synchronization tool has to offer.</p>

<p>Ta.<br />
Steve Porter</p>]]></description>
<pubDate>Sat, 21 Apr 2007 15:58:58 -0500</pubDate>
</item>
<item>
<title>Using Windows SharePoint Services 3.0 with Team Foundation Server</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#enq198880346</link>
<description><![CDATA[<p>Brian Keller’s <a href="http://blogs.msdn.com/briankel/archive/2007/04/14/Configuring-Visual-Studio-2005-Team-Foundation-Server-with-Windows-SharePoint-Services-3.0.aspx">blog</a> details the steps required to get Team Foundation Server to play nice with Windows SharePoint Services 3.0.  For those who haven’t had an introduction to <a href="http://www.microsoft.com/technet/windowsserver/sharepoint/default.mspx">WSS 3.0</a> yet, you need to get on the bandwagon and quick.  
</p>
<p>
Microsoft has seriously revamped this platform and a lot of organizations are planning to heavily leverage this tool in their organization to allow them to simply and quickly create web application like tools without having to write a whole bunch of code.  Web developers who ignore this tool do so at their own risk.  They may find that a lot of what they code by hand will be replaced by what this service provides right out of the box.
</p>
<p>
<a href="http://www.imaginets.com">Imaginet</a> has been spending a lot of time and effort getting ahead of the curve on this latest offering from Microsoft, so if your organization is looking for guidance, drop us a line.
</p>
<p>Ta.<br />
Steve Porter</p>
]]></description>
<pubDate>Sat, 21 Apr 2007 15:32:26 -0500</pubDate>
</item>
<item>
<title>Is IT fun?</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#tqs195947122</link>
<description><![CDATA[<p>I just finished reading an interesting article on <a href="http://www.eweek.com/article2/0,1895,2104997,00.asp">what's plaguing the IT industry</a> and can't help but think, "My, this sounds familiar".  This is exactly the sort of environment that I see as I travel from company to company.  It's not yet the norm, but the trend is obviously heading in that direction.  That's really sad.</p>

<p>But it does motivate me to change things in my little corner of the world.  We all really need to start looking around us and say, "How can we use technology to make things work better around here".  Because at the end of the day, this is really what it's all about.</p>

<p>I'm not normally one to <a href="http://en.wikipedia.org/wiki/Kool-Aid#.22Drinking_the_Kool-Aid.22">drink the Kool-Aid</a>, but I really believe that Team System can help get some of the day to day drudgery out of the way and allow teams to focus on what's important.</p>

<p>Ta.<br/>
Steve Porter</p>
 ]]></description>
<pubDate>Sun, 18 Mar 2007 21:45:22 +0000</pubDate>
</item>
<item>
<title>Moving Work Items</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#wlf193507495</link>
<description><![CDATA[<p>One of the less fun administrative tasks with Team Foundation Server is the task of moving a work item from one team project to another.  It's a manual task where you drag them from one project to another.  Not to bad for a smaller project, but for a larger project with thousand of work items, not so good.</p>

<p>Fortunately, <a href="http://blogs.counterpunchsoftware.com/">Eric Lee</a> has created a tool that will assist with this task.</p>

<p>You can read about the tool <a href="http://blogs.msdn.com/ericlee/archive/2006/11/20/work-item-moving-tool-is-back.aspx">here</a>.</p>

<p>Thanks Eric.</p>

<p>Happy moving everyone.</p>

<p>Ta.<br>
Steve Porter</p>

]]></description>
<pubDate>Sun, 18 Feb 2007 10:04:55 -0600</pubDate>
</item>
<item>
<title>Interesting new Team Foundation Server Event Subscription Tool</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#hxh192810547</link>
<description><![CDATA[<p>One of the features that I love about Visual Studio Team System is the rich eventing model.  Microsoft opened up this feature to allow developers to extend the built-in alerts and to roll their own event alerts, but it's not a trivial task.</p>

<p>Jeff Atwood at Vertigo Software has just posted a new tool to <a href="http://www.codeplex.com/tfseventsubscription/Wiki/View.aspx">CodePlex</a> that makes this process a little easier.  You can find some additional information about the tool on his <a href="http://blogs.vertigosoftware.com/teamsystem/archive/2007/02/08/Team_Foundation_Server_Event_Subscription_Tool.aspx">blog</a>.  I'm looking forward to giving it a test run.</p>

<p>Ta.<br>
Steve Porter</p>]]></description>
<pubDate>Sat, 10 Feb 2007 08:29:07 -0600</pubDate>
</item>
<item>
<title>I've Been Tagged</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#qsv192423181</link>
<description><![CDATA[<p>I've been <a href="http://en.wikipedia.org/wiki/Blog_tag">tagged</a> (thanks <a href="http://weblogs.asp.net/miked/archive/2007/01/20/blog-tag-five-things-you-didn-t-know-about-me.aspx">Mike</a>).</p>
<ol>
<li><p>I'm a big fan of <a href="http://www.dccomics.com/">DC comics</a> and role playing games (<a href="http://www.wizards.com/default.asp?x=dnd/welcome">Dungeon and Dragons</a> specifically) and I have been since I was young.  Toss in my asthma and love of computers and you have the full geek package.  And yes, I was beaten up a lot in school.</p></li>

<li><p>I lost two of my front teeth during a car accident that occurred while driving on a <a href="http://www.google.ca/maps?f=q&amp;hl=en&amp;q=+49°52%2727.83%22N,+++97°19%2733.88%22W&amp;ie=UTF8&amp;om=1&amp;z=18&amp;ll=49.874397,-97.326078&amp;spn=0.002468,0.005847&amp;t=k">slippery road</a> and not wearing a seat belt (dumb, dumb, dumb).  I've had a slight lisp ever since (and it worsens the quicker I talk).</p></li>

<li><p>My first real job was that of a letter carrier (in Winnipeg...  in the winter, yeah I know, I'm a sucker for punishment).  I actually lost the job because I missed too many days of work.  Losing the job turned out to be the best thing that ever happen to me since it eventually forced me to go back to school and pursue a career in software development.</p></li>

<li><p>I secretly want to learn how to play the <a href="http://en.wikipedia.org/wiki/Penny_whistle">tin whistle</a>.  I've taken some lessons and I can play a handful of songs, but I need to practice a lot more.  Maybe when I'm retired I'll find the time.</p></li>

<li><p>I'm adopted and I very recently reunited with my birth father (who's just great and has a great family) and hope to have a reunion with my birth mother in the near future.</p></li>

</ol>

<p>I'm tagging Robert Regnier, Ryan Milligan, David Maynard, James Struthers and Deborah Zanke.  None of which have a blog.  Maybe this will be the reason they start one.</p>

<p>Ta.<br>
Steve Porter</p> 


]]></description>
<pubDate>Mon, 05 Feb 2007 20:53:01 -0600</pubDate>
</item>
<item>
<title>Excellent Suggestions for Structuring your Source Files</title>
<link>http://homepage.mac.com/stevevrporter/blog/Ta.html#flp192209211</link>
<description><![CDATA[<p>Found an excellent <a href="http://keithelder.net/blog/archive/2007/02/01/Structuring-Solutions-in-Visual-Studio-and-Team-Foundation.aspx">post</a> on Keith Elder's site that does a great job of describing how to structure your source files to take advantage of VSTS's source control features along with the built in automated build features.</p>

<p>At Imaginet, we've been following these patterns for awhile now, but Keith does a great job of bringing all of the best practices together.</p>

<p>Ta.<br>
Steve Porter</p>]]></description>
<pubDate>Sat, 03 Feb 2007 09:26:50 -0600</pubDate>
</item>
</channel>
</rss>