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.

main

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

prefs

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.

30 October 2007

Getting Ready for Patterns & Practices Summit 2007

It's almost time for this year's Patterns and Practices Summit and I'm excited for many reasons.  There is a list of great speakers lined up along with some great sessions.  One thing I'm looking forward to with this summit over the typical conference (e.g. TechEd or PDC) is I don't have to pick-and-choose between a dozen (or more) tracks when deciding which sessions to attend - there is only one track with about seven sessions per day.  I'm also looking forward to visiting the Microsoft campus since I've never been there before.  So, all-in-all, it promises to be a great event.

Of course, I'll have to put on my tourist hat in the evenings and check out the local sites such as the Space Needle.  Having never been to Washington state I'm not sure what to check out so if anyone has suggestions, please post them.  Also, if there is anything specific (i.e. super cool) to visit while on the Microsoft campus please post that as well :-)

24 October 2007

TFS 2008 System Recommendations Released

In case you haven't seen it, Brian Harry posted the TFS 2008 System Recommendations a few days ago.  There is some great information in there if you are planning on upgrading existing TFS 2005 installations or if you're planning on installing TFS 2008 on a new system.  Based on the test results it looks like some pretty good performance improvements have been achieved.  You can read more here.

19 October 2007

What's New in TFS 2008

I just completed my presentation on the new features of TFS 2008 at this year's Tulsa TechFest.  It was a relatively small session held in one of the classrooms here at the OSU campus which allowed me to more easily address questions during the presentation.  The topic I presented on is called What's New in TFS 2008.  Although the presentations run roughly 75 minutes, I had to skip over a couple of my demos because there are so many new features in TFS 2008.  It was easy to tell that I'm not the only one excited about some of the new features :-)  If I had to pick my top 5 features in TFS, they would have to be:

  1. Continuous Integration - although there are 3rd party/open source implementations available for TFS 2005 now, they don't have the same, clean integration that's present in TFS 2008.
  2. Build Retention Policies - finally, I won't have to worry about running out of space on the "drop" server because there are 2,000 old builds sitting around collecting dust.  Anyone that's ever had a build fail due to lack of disk space (which is not stated in the build failure log) will appreciate (or, love) this feature!
  3. Better Build Support - specifically, the ability to store the TFSBuild.proj file in any folder.  This greatly enhances branching options.
  4. Queued Builds - the ability to queue builds is great.  I know longer have to wait for my CI build to complete before I can start the test build that pushes the updates to the test machines.
  5. Performance Improvements - there are tons of other enhancements and improvements throughout TFS 2008 but there are also a lot of performance improvements as well.  Anything that allows my builds to complete a little bit sooner is much welcomed.

I could probably list a couple dozen other features that I really like in addition to those above but I have to stop somewhere :-)

You can download the slides here if you're interested:

17 October 2007

TFS 2008 Features in TFS 2005

There are a lot of new features in TFS 2008.  So many in fact, it's difficult to list them all at once.  I will, however, do my best to cover as many new features as I can during this year's Tulsa TechFest when I present on What's New in TFS 2008.  There are a lot of new features that have been integrated into TFS 2008 that can also be had today in TFS 2005.  Some of these are listed below...

Continuous Integration - there are several 3rd party solutions for implementing continuous integration in TFS 2005.  These include:

  • A Microsoft implementation - this is a web-service based implementation that allows you to associate a Team Project with a specific Build Type to be called any time something is checked into version control.  I've seen several variations of this implementation available on the web.
  • TeamCI by Notion Solutions - this is a free CI tool offered by Notion Solutions.
  • TFSBuildLab - this is an open source project on Microsoft's CodePlex site.  This TFS utility offers more than just CI capabilities.

TFSBuildLab - along with the continuous integration capabilities listed above, TFSBuildLab has many other features:

  • Retention policies - can be based on Build Status or Build Quality.  You can also specify the number of builds to keep or the number of days to keep them.
  • Tray notifications - receive build and check-in notifications (via "toast" messages)
  • Build queuing - provides a mechanism for queuing builds.
  • Build scheduling - provides a UI for scheduling builds.

"Listless" Unit Tests - TFS 2008 has the ability to specify which unit tests to run (during a build) based upon a file mask rather than being forced to select a list of tests.  This approach lets you easily run all unit tests within an assembly or set of assemblies (for example) without ever having to manage lists of tests for the build.  Buck Hodges has a great post explaining an implementation for TFS 2005.  Trust me, once you start specifying your unit tests in your build using this approach, you'll never go back to test lists again :-)

"Broken Build" Check-in Policy - TFS 2008 has a new check-in policy called Builds.  When something is checked into version control this policy will check to see if any related builds are currently in a "broke" state;  If so, the policy will fail.  The idea is to not let developers keep checking in code when the build is just going to fail anyway.  Clark Sell has created a Build Status check-in policy for TFS which gives you this functionality now, in TFS 2005.

BuildStep Task - If you've ever wanted to add your own custom text in the build report (the view you get in Visual Studio while watching an active build run through the various build steps) then you're in luck.  In TFS 2008, there's a new build task called the BuildStep task that does just this.  You can also get this functionality in TFS 2005 with the TeamBuildTask posted by Aaron Hallberg.

Incremental Builds - incremental builds are supported within TFS 2008.  TFS 2005 build scripts can be configured to run incremental builds with a little work.  There's a "how to" article on MSDN that explains the steps to run incremental builds in TFS 2005.

There are undoubtedly other features that can be made available for TFS 2005 but this is a good start.

01 October 2007

NLarge Utility

I've been putting the finishing touches on a TFS 2008 presentation that I'll be giving at this year's Tulsa TechFest conference later this month and came across a utility that promises to be extremely useful.  It's called NLarge and provides the ability to zoom in and out of a presentation (or any other displayed materials) using a smooth scrolling effect.  NLarge runs in the taskbar notification area and can be activated with a hotkey (Alt+1).  Once activated, the zoom feature can be controlled with the mouse, tablet pen, and/or keyboard.  Although I haven't used this utility during a presentation yet, I think it will be extremely valuable in aiding those in the back of the room to see what I'm focusing on.

NLarge is an open source project available on Microsoft's CodePlex site.  You can get more information about NLarge here.

29 September 2007

TFS (2005) Power Tools Final Release

The latest and final release of the Team Foundation Server 2005 Power Tools have been released.  This release includes two new additions to the existing Power Tool set:

  1. TFS Work Item Templates - work item templates allow you to define templates for existing work item types with specific fields already filled in.  The work item templates are accessible via a Visual Studio add-in allowing easy access to your templates.  This can be a great time saver if you fill out lots of work items - especially if they have a lot of fields that tend to use the same default values each time.
  2. Team Foundation Server Best Practices Analyzer (TfsBpa) - this is a utility that a lot of people have been eagerly waiting for for some time now.  The TfsBpa can be used to check an existing environment prior to installing TFS 2005 to ensure all pre-requisite requirements are met.  You can also utilize the TfsBpa to troubleshoot existing installation that may not be working as expected.  This utility is going to save a lot of time in the near future for anyone installing TFS 2005 or troubleshooting an existing installation.  There are some installation issues that need to be reviewed prior to installing so be sure to check out the link below.

Brian Harry has posted more details on the above release here.  Brian states that this will be the final Power Tools release for TFS 2005.  I only wish they would have gotten the TFS Best Practices Analyzer out a long time ago instead of waiting until the product has been (for all intents and purposes) replaced by TFS 2008.  He does write, however, that the 2008 version of these tools should be out within a few months along with some new tools that aren't in the current release.