Get Latest on Checkout is Satan

If you are running Team System, there is feature in the source control option in your project level settings that you should be aware of. Right click your team project in the Project Explorer window of Visual Studio.

Go here:


And get this screen.


Why? Because if you have made some changes to a file while it wasn’t checked out, you will not have the option to merge to your local machine. This option will simply overwrite your local code file.

Why does this feature exist? Because oodles of people asked for it because they were used to it in Source Safe, and the team relented.

Repeat: This is a bad idea!

If, however, you are a person who simply must have this turned on in order to feel snug, there is a way to do it without making your entire team experience the hell that will be yours.

In Visual Studio, go to Tools > Options > Source Control > Environment and do this:


I warned you.

Tech Ed Developer 2008 Day 2

Elegant Code Cast With Ward Bell

Ward Bell is the Vice President of Product Management at IdeaBlade, which makes a .Net ORM product called DevForce. I met Ward and had a great discussion about ORM solutions and the evolving world of ORM and business tier technologies from MS and others.  Ward was good enough to share 30 minutes or so on the mics and you’ll be hearing hi interview on the Elegant Code Cast in the weeks to come.

Platforms for SOA and Business Process Management: Comparing .NET and Java

This session looks at the worlds of Java and .Net while paying particular attention to the problems found in the ESB space. For example, how does each stack solve for workflow, rules, messaging, etc.

David Chappell has presented this session at the Java One conference, so it is important to remember that this information as been vetted through the Java community.

The basic message came down to this: Sun’s stewardship of Java has promoted a fragmentation of technologies implemented in the Java language. This is great news for MS, who provides a unified stack of solutions in these spaces. The presenter asked the room this question, “Who believes that many solutions to workflow is good for the Java community?” About half the room went one way, the other half went another.

This gets to the core truth of the whole 1 vs. many solution discussion. Developers obviously love choice in their tools. After all, developers like to tinker and play with new technologies. Are these people also the ones most capable of making core platforms decisions for an enterprise? Typically not, because there is a bias toward new technology adoption over uniform practices.

As an example, the speaker told a story:

A Java developer asked him at a conference, “Help me construct an argument for my management to get permission for me to use Spring.”

“Why do you want to use Spring?” asked David.

“Because it’s cool, man,” answered the developer. “I want to play with it because everyone knows it is a better way to write applications.”

“You should be fired,” he answered.

The point here is that executives and logical decision makers who choose platforms are interested in the long game, not what technology is cool. Can I depend on vendor support? Will the product continue to evolve and grow? These are the questions that yearn for an answer of a unified platform that can be depended on to carry the business forward.

David actually cited the Garter quote that predicts the ultimate death of the J2EE platform in favor of vendor supported Java platforms by IBM and Oracle. If that actually comes to fruition, it is fascinating not just for its technical implications, but also for the comment this makes on the ultimate viability of community-based technology stewardship.

Maybe this 3 legged race of IBM v. Oracle v. MS offers an easier soup to stir than one consisting of many open source implementations. Interesting talk. The most interesting part of that discussion is the notable absence of Sun as a player in the Java discussion. What a weird world.

My favorite quote of the session, “Model Driven Architecture is where the rubber meets the sky.” Awesome. This comment on the huge abstraction of MDA feels right on.

FDD With Team System

Joel Semenuik provided a great overview of how his organization uses a formal Feature Driven Development process in conjunction with Scrum to deliver software. They do this using of Team System, which is no surprise since Joel is the co-author of Managing Projects with Microsoft Visual Studio Team System with Martin Danner.

I later learned from Martin, who used to be my office mate, that he and Joel are sponsoring a CodePlex project to aggregate open source process templates. What a nice idea! One stop shopping for process templates. I went hunting for it, but couldn’t find it on CodePlex yet.

How I Became a Team Build Muscle Man

Steve Borg blew packing material all over me when the build failed in his demo. To be more precise, he had a build monitor application hooked to a fan that blew packing peanuts all over me when his build failed. Nice. It tok 10 minutes to get all the stic clingy bits off me.

Anyway, Steve ran through a demo on using Team Build for CI and for deployment. It was pretty good, although I think many of us could have done without the Richard Simmons imitation. 🙂

Deploying to IIS

Steve used the MSBuild tasks found in the SDC CodePlex project to deploy his web application to IIS on a deployment and smoke test machine.

Deploying SQL Data

Even better, he used Visual Studio 2008 DB Pro to create a DB sample data loading script and deployed that to his test DB server via the SDC task DeployDatabase. This ensures that his web tests will always be run against his app with the same underlying data. This makes writing and running automated web tests as part of your build MUCH easier.


Also in 2008, we get the new BuildStep task that we can use to emote nice messages into our build log to provide some debugging information. Handy.

Implement the ITask interface to create your own tasks BTW. This is easy, I’ve actually done it!

WIX (Windows Installer for XML) is an open source tool that MS actually wrote and released to CodePlex. It is a nice little tool that helps us build MSI installers for our application. This utility is actually used by MS to create their installers like the MS Office and other binaries. This is basically a Visual Studio project that works like MAKE, but better. You can use WIX to accomplish all kinds of things like prepping your target machine’s dependencies as part of the MSI. Nice.

Source Control Branching Strategies

This was a great after-hours Birds of a Feather session that deserves a post of its own and will get it.

Here’s the takeaway: I had no idea source control strategy was a religious issue or that one can see an organization’s dysfunction in a source control system’s folder structure.

Now I know.

Conchango’s Scrum Process Template 2.1 for Team System

I went to my favorite session of Tech Ed today, but it was for personal gratification reasons that I enjoyed this so much. I am so happy about the work coming out of Conchango that I could pop. Why? Because when I get home I have the task of implementing TFS 2008 for my organization using the Scrum process template. I was nervous about this because of the tremendous amount of customizations I have been making to the Scrum work items in the prior version of the template I had been working with.

Colin Bird, CTO for Conchango, showed the 2.1 version of the process template today. It solved almost 100% of the problems I had been struggling with in my customized versions of the template.

  1. Support for different teams on every work item type. This is HUGE because it allows for all teams to pull work from a single backlog.
  2. Burn down reports for sprint, product, and release, that all split against teams. This is the biggy. If you haven’t tried working with reporting in TFS, you don’t know how HUGE this is. Awesome.
  3. Code churn reporting
  4. Value flow diagrams
  5. Elimination of the Sprint data element in a work item in favor of using a release model based on iterations. Thank you.
  6. Bugs as work items that appear on the product backlog

Honestly, there is very little left to do! I can only think if a few things I will be adding to this already existing functionality.

  • Epics and Themes as work items and reports to support them. Even this will get better in Rosario with hierarchical work items.
  • Tagging

That’s about it.

img006 Colin also showed us an awesome new product that Conchango will be charging for and I would happily pay for. It is a WPF application that is a Scrum board working right off of TFS directly. There are other attempts at solving this same problem in the open source world, but this one is fully baked and soon to be available. It looks very usable. I can’t wait to see this thing in my shop. It will help the daily standup so much, and the overhead of making out physical cards will be a thing of the past.

I took a picture of it with my cell phone, but I don’t think I was supposed to do that. Oh, what the hell. Here it is.

You can actually drag the cards around and they change state and work remaining. If Colin weren’t English I would have hugged him. And then tickled him.

Tech Ed Developer 2008, Day 1

Keynote by Bill Gates and a cast of Microsoft Executives

Guess what? SilverLight, Visual Studio, Unified Communications, surface computing, and robots are going to save the earth. So will WCF.

Brian Harry on TFS Now and Future

This was a great session. I know we are all tired of hearing it, but Rosario really is the release of TFS that will be the ONE. We are all struggling with Work Items and being able to manage our work the way we actually think of our work.

The one question I posed was simply how may an organization manage one single backlog of work within TFS and parse out that work to separate teams? The answer is that for right now, there isn’t a good story here. I will be blogging later in the summer about how I am solving for this in our organization.

Open Q&A on TFS – Jeff Levinson

Jeff is a Team System MVP and trainer and consultant for NW Cadence. He talked people through a lot of the typical questions that get asked soon after you install TFS in your organization.

  1. What source control branching model makes sense for me?
  2. How can I customize my work items?
  3. What’s in the service packs?
  4. How should I deploy for my build environments?

You get the idea. Here are some likeable nuggets I took away from this session.

  • If you are installing TFS into an organization with fewer than 500 active developers, install it all on one box.

    I have installed on one machine for simplicity’s sake and recommend the same model , but I had no idea the scalability of that model went as high as 500. Jeff claims that this kind of load will only flutter the CPU. Bear in mind, though: This is NOT regarding the build machine. Build machines need to be separate and preferably virtual.

  • Microsoft will be paying closer attention to X in Rosario. X can equal any of these things:
    • Project server integration
    • Portfolio server integration
    • Query-able link control in work items
    • Tooling for testers, and that doesn’t mean test tools for developers.

Application Lifecycle Management Panel Discussion

An entire stage of Team System MVPs, discussing Application Lifecycle Management. Rich Hundhausen, Jeff Levinson, Mike Azocar, Steve Borg, Jeff Beehler,  Mickey Gousset, and several others.

This is about ALM which includes all phases of the lifecycle, so how are we helped by rapid delivery.

I only asked one question of the panel. “What’s the view forward for integrating the entire ownership lifecycle? Don’t we really need tooling like support in TFS for System Center to get where you are all talking about?”

Answer: It turns out that MS is solving for different phases of the overall ALM problem at different phases with different tools. TFS for developers, System Center for I.T., Project and Portfolio Server for the business folks. What ties it all together? Nothing yet. Maybe BizTalk will do the trick, eh? Right.

Scrum-tastic Process Template

Presented by, Mike Azocar, the author and project manager of the actual CodePlex project for the Light Weight Scrum Process Template for Team System (whew).

I am particularly interested in this work because of the aforementioned focus I have on customizing the Scrum process template from Conchango.


  • An interactive system can never be fully specified – Wagner’s Law
  • Scrum is appealing to many organizations because it is:
    • Simple
    • Free
    • Transparent
    • Common sense
  • “No one runs beyond 3 or 4 sprints before changing their out-of-the-box process template.” – Mike


Keep a watch on this page, which hosts videos from the Tech Ed floor.

Oh, and I met Richard Campbell of DotNetRocks. I told him it was sort of like meeting Madonna. He asked me not to follow him into the bathroom.

Tagging Team System Work Items

I expect some people to see this and say, “Hey, that’s clever.” I know that others will read this and think, “What a hack.”

Whichever side you fall on, there is little debate that navigating Work Items in Team System via customizable queries can be a little frustrating at times. The rub is in the data matching and ensuring you have fields defined for all the data you want. Often, I want to work with a set of work items that seem to have little to do with each other and aren’t tied together with a genuine data model.

For example, when my backlog of Product Backlog Items (PBLIs) has 300 work items in it, I want to take 5 of them into an estimation meeting. Or maybe I want to flag 10 of them as a group because they are related via a project that I cannot get to with Area or Iteration data.

The logical next question is, “Wouldn’t it be great if I could tag a work item in TFS?”

Here’s how I did it.

  1. Add a custom field to every single Work Item type in my Team Project.
    This field is just a string and is not marked as reportable. I only need it available for queries. I added no custom rules for the field, it is just there if you want it, not required or managed as part of workflow.
  2. Add a control (a long one) for the field on all the work item types. I put it right near the top to make it easy.
  3. Tag away. As a best practice, I am advising users to treat space as a delimiter to make tag searching easier.
  4. Create a custom team query that looks like this:
    This lets users get to a search fairly quickly inside VS, but the best thing is to create your own private tag searches and keep them around like this:
  5. It  is much easier to get use out of this using Team System Web Access because the search feature will simply hit against tags.

TFS Team Project Permissions Relief

When creating a new Team Project in your Team Foundation Server, everything is nice and smooth right up until you get to the permissions of groups and individuals. This can be a real PITA because permissions must be set up in 3 separate places.

  1. Team Project level permissions within TFS itself
  2. The Share Point Portal site for the Team Project
  3. The SQL Reporting Services site created to serve reports on the Team Project

If you have done a little forward thinking, you have Active Directory groups for the major role mappings you want to make in all three of these areas. This will make the task a little better, but by the time you’ve gotten through with your Reporting Services permissions, you start to wonder if you remembered all the right group permissions way back on the Team Project itself. You know that feeling, and by the time you’ve assured yourself all is well, 10 minutes have elapsed.

Enter the CodePlex project "Team Foundation Server Administration Tool". This handy little utility lets you see permissions for each group across all 3 areas all at once. There may be the occasional uncaught exception or UI oddity, but this beats the heck out of doing the job manually.

These early releases of Team Foundation Server do still have a few ugly little knots on their heads, and the open source community has really stepped in to smooth those knots out. This utility is one great example. For a more complete list of open source tools for Team System, check out Thanks to Richard Hundhausen’s for his excellent slide deck on Team System implementation anti-patterns which turned me on to this utility.

Life as a Team System Product Owner

I recently inherited the role of Product Owner for my company’s implementation of Team Foundation Server and Team System. One of the first things I recognized is the confusion around what the pieces of the system are and who should be using it (along with who shouldn’t). To help with that discussion, here is a high level model of the different packages that make up the whole of Team System. Click the image to blow it up.


As we can see, there are many different actors in this system. The image doesn’t really break out the Team System versions of the different engineering tool packages. These are based on primary role and include:

  • Database Professional
  • Testing Professional
  • Developer
  • Architect

In addition to all of these different ways to access the system, Microsoft has just released TFS and Visual Studio 2008. This means that many of the pieces of the system have received new features or changes in functionality. This is all good stuff, but it does introduce a level of complexity. Should we migrate? Should we do so incrementally? All at once? What did we learn in our 2005 implementation that informs how we should structure our 2008 implementation differently?

You get the idea.

One thing a good product owner needs is a reasonable way to actually see the views each of the users sees. In pursuit of this goal, I am going to build a lot of machines. Fortunately, these will all be managed as virtual machines using Microsoft’s System Center Virtual Machine Manager. This new I.T. tool from Microsoft is HOT. I love that I can have a library of VMs and only spool up the ones I need. This allows me to create my library of machines I need to be a good product owner, because there are a lot of them.

  2005 2008
Team Foundation Server
w/ SP Services
w/ Team System Web Access
w/ SQL Reporting Services
w/ Automaton CI Server
TFS Client Only + Office & MS Project X X
VSTS Tester Edition X X
VSTS Developer Edition X X
VSTS Team Suite
This is just a fail safe for me
VSTS Database Edition X X

That’s right, 12 machines. I am going to try running all of them on Windows Server 2008. I just found my new best friend, and it is Virtual Machine Manager. Using this technique for mocking the entire system, I should be able to maintain a reliable environment for R&D. This will be particularly handy as we look to implement customizations to process templates, but more on that another time.

There goes my MSDN license for OS installations.

MVC at Boise NetDug Tomorrow Night

Anyone in the Boise area can come out and get a taste of the new ASP.Net MVC framework from Microsoft. I will be doing an hour or so on the MVC framework at the local .Net users group.

Following the MVC talk, Martin Danner will be doing an hour or so on the fresh new features found in Team Foundation Server 2008.

I hope to see you there. Let’s go for a beer after over at Table Rock!


Technorati Tags: