27 November 2007

Power Tools for TFS 2008 Roadmap

Brian Harry has posted a time line of which power tools will be released over the next month for TFS 2008.  In summary, these will include:

  • VSTS Web Access - the "final" version for TFS 2008.
  • MSSCCI Provider - will allow access to TFS 2008 from VS 2003, VS 2002, and VS 6 as well as other IDEs.
  • TFS Power Tools - the same basic TFS Power Tools that shipped for TFS 2005 but compiled against the TFS 2008 object model.
    • Process Template Editor - mainly bug fixes and small improvements.
    • Build Notification Tray App - this is a new Power Tool application that will allow you to monitor TFS builds via a Notification Tray application.
    • WI & WIT Destroy - support for the deletion of work items and work item types has been added to the tfpt command line utility.
    • Best Practices Analyzer - has been updated to work with TFS 2008.

It's nice to read that these updates will be released soon as they have definitely become a necessity in the day-to-day operations using TFS.

You can read the full details, including the timeline, here.

26 November 2007

TFS 2008 License Changes

Brian Harry recently posted details regarding a change to the newly released TFS 2008 licensing model.  In short, the new license structure will allow anyone in your company to perform the following actions against a TFS server (Standard Edition only - does not apply to the Workgroup Edition) within your organization without the need for a CAL:

  • Create work items
  • Query work items they've created
  • View work items they've created
  • Update work items they've created

I suspect this type of activity has probably been going on quite a bit in the past with TFS 2005 - it's just that it hasn't been all that easy to track.  This new change will at least remove some of the worry associated with trying to keep these types of users (i.e. the ones that fit the above profile) in compliance.

The downside (as Brian points out) is that there is no built-in tools to help you determine (or enforce) compliance.  It appears that they plan on providing some enhancements over the next year to address this issue.

What I like about this change is that it will give development shops a little more leverage on how they might choose to make use of the work item features within TFS.  For example, I'm currently finishing up a blog post on how to create TFS work items directly when an exception is caught within your application.  Previously, in TFS 2005, your end users would (legally) need to have a TFS CAL to utilize the exception handler.  Now, in TFS 2008, any end user in your company is automatically covered - no CAL is required.

What I don't like about it (I suppose I shouldn't be complaining - at least it's a start) is that it's overly restrictive.  Does it really hurt to allow full work item access to your employees?  If they can create and manage their own work items, what does it hurt to allow them to manage other work items (not created by them) as well?  Maybe that's a change that will come in the future as Microsoft works out the best fit for their TFS license model.  At any rate, it's a good start.

You can read more in the original post.

15 November 2007

NDiagnostics - Beta Release

Any of us that creates software on a day-to-day basis, that's actually used by someone other than yourself, has undoubtedly had to answer technical support questions about your software and/or troubleshoot why it's not working. In a lot of cases, you may have a dedicated support team that interacts directly with your customer base and they only contact you if they come across something they can't resolve or explain. Over time, the support teams tend to become very efficient at resolving application-specific issues regarding setup and configuration. However, when an application is first released, the process isn't so straight-forward and you may have to field a lot of questions.

Now, don't get me wrong, I'm more than happy to answer any questions I can about the software that I produce. However, I'm also interested in maximizing everyone's time (mine, the technical support staff's, as well as the end-user's). That is why I decided to create NDiagnostics. The purpose of NDiagnostics is to allow for the easy creation of a self-diagnostics utility customized for a specific application. For example, if your application requires certain files and/or folders to be present, a specific version of the .NET Framework, and possibly access to a SQL Server database, then you can create a custom configuration file that can quickly and easily scan a user's machine for compliance. Here's a sample screen shot of what NDiagnostics might look like after scanning a user's workstation:

In this example, the SQL Server Service's Startup Type was not set to Automatic as expected. However, you can quickly ascertain that the required .NET Frameworks are installed, the SQL Server service is running, Visual Studio is running (yet another strange requirement), my blog is available (yeah!), and the application's database is accessible.

This isn't necessarily a real-world example but it does demonstrate how easy it can make troubleshooting certain tasks. It only took a few seconds for the above tasks to run - it would have taken several minutes to verify these tasks manually (possibly hours if the technical support staff had to determine what to verify to begin with).

NDiagnostics is completely configurable via an XML-based configuration file. The configuration file defines the groups of diagnostic tasks to be run as well as the order of the tasks. NDiagnostics currently ships with the following tasks:

  • File Task - checks for the existence of a specific file and can also (optionally) check the version number.
  • Folder Task - checks for the existence of a specific folder.
  • NETFX Task - checks for a specific version of the .NET Framework.
  • Process Task - determines whether a specific process is running.
  • Registry Task - allows you to verify registry settings.
  • SQL Server Task - checks for connection to specified database; optionally check for table existence and/or query result.
  • URL Task - determines whether a specific URL is available (can verify web page or web service).
  • Windows Service Task - determines whether or not a specific Windows Service is installed, and optionally, the current status (e.g. running, stopped, etc.).

Being that this is the first release the set of tasks is somewhat limited. There are several new tasks currently in the works that will be made available in future releases. Also, the project just went "live" tonight so I'm still getting the on-line documentation up to speed.

So, if you have a need for a quick-n-easy diagnostics tool, give NDiagnostics a look. Please provide any feedback as I would like to make this utility as useful, friendly, and simple as possible. If you have any suggestions for new tasks, please post a comment here or leave feedback at the NDiagnostics site. Also, the source code is fully available so you can customize this application to your liking.

13 November 2007

TFS Book Wish List

Have you ever found yourself saying something along the lines of "If only I had more time, I'd write a book about such-and-such"?  Well, I've found myself saying that several times over the past year or so about Team Foundation Server.  Now, don't get me wrong, there are several good books currently available for TFS but none of them quite match what I'm looking for.

I'd like a TFS Automation for Developers book that covers the details for:

  • Programmatically creating new work items.
  • Programmatically querying work items and modifying them.
  • Creating custom check-in policies.
  • Creating custom build tasks.
  • Programmatically accessing and utilizing published unit test and code coverage data.
  • Programmatically accessing related SharePoint documents.
  • An in-depth explanation of the web services architecture and how to use it.
  • An in-depth explanation of the TFS Object Model and how to use it.
  • All of the above for both TFS 2005 and TFS 2008.
  • Anything else I happen to think of :-)

Granted, I can find examples for most (if not all) of the above items on the web today.  However, what I don't have is a comprehensive explanation of each of them and how they all relate and work together.

Searching Amazon.com for "Team Foundation Server" turned up 18 items (17 books and 1 TFS software package) of which only three appeared to focus on Team Foundation Server.  The most promising book out of these three is not yet for sale (although I've added it to my wish list so I don't lose track of it).  Just based on the title (Visual Studio Team Foundation Server [Microsoft .NET Development Series]) it may be close to what I'm looking for.

In the meantime, I still don't have the time (or necessarily, the skill) to write a reference book so I thought I'd start an on-line version of the tasks I outlined above.  The basic purpose of the new site would be to consolidate and organize the information necessary for working with TFS programmatically.  I also realize that MSDN already has a lot of information on it as well but it's not necessarily the easiest to traverse nor does it always have good examples to follow.

So, if you're interested in seeing anything specific, or if you've come across some great sites with great coding examples, please leave a comment.  I'll be posting back soon on the progress.

06 November 2007

SafetyTip - My First Mobile App

A co-worker recently sent me a link about calculating checksums for tips (i.e. the tip you leave your server when paying for a meal at a restaurant).  Without getting into the crux of the poster's original argument ("thieving restaurant servers" - I don't know how often this happens) I found the idea of creating checksums for tips intriguing.

That same night, at one of my family's favorite restaurants, I decided to put the checksum into practice.  However, I quickly realized that mentally calculating checksums for tips wasn't all that fun :-).

So, what's a software developer (with a Windows Mobile-enabled phone) to do?  Develop an application, of course!

I decided to build a simple Windows Mobile application that supports the following features:

  • Allows the entry of the total net amount (i.e. the amount on your bill)
  • Allows you to select a level of service (e.g. Ok, Good, or Excellent) with an associated tip percentage.
  • Allows you to select the tip calculation method (e.g. standard, checksum, or palindrome).
  • Calculates the appropriate tip amount.
  • Allows all default values to be modified.

Notice that I also implemented the "palindrome" method based on a comment on the original post.

The application has two screens.  The first screen allows you to select the tip level and calculation method and also allows you to enter the net (bill) amount.  As you enter the amount, the tip will be calculated based on the method you've selected.


The second screen (invoked by selecting the Preferences menu option) allows you to modify the application's default values.


Granted this is a simple but it's also my first mobile application so it's been a good experience (plus it's something that I'll make use of).  However, even though it's simple, I've learned a lot about the differences in controls between the .NET Framework versions and how to use the Pocket PC emulators as well how mobile applications are deployed.  There's still lots to learn but we all have to start somewhere :-)

If you're interested in the application, you can download the CAB file here.  The application is compiled against the .NET Framework Compact Framework 2.0 which must be installed on your PDA and targets Windows Mobile 5.0.