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.

07 September 2007

Tulsa TechFest 2007

The second annual Tulsa TechFest is coming up next month on October 19th and 20th.  There are currently over 50 speakers geared up to present at this years conference with around 15 tracks.  Some of the current speakers include:

And, let's not forget myself :-)  I'll be presenting on What's New with Team Foundation Server 2008 on Friday at 1:00.  This will be my first time at Tulsa TechFest, although not my first time in Tulsa.  I grew up in Oklahoma about 60-90 minutes south-southeast of Tulsa and I also have a sister that currently lives in Tulsa so it will be fun visiting with her.

I'm looking forward to attending and presenting at this year's event and hope to see you there.

04 September 2007

Cool LINQ Utility

Like a lot of you out there, I've been spending a bit of time learning the new Language Integrated Query (LINQ) features available in the .NET Framework 3.5 (still in beta).  LINQ provides some very powerful capabilities for querying not only databases but other data types as well (e.g. XML, .NET collections, arrays, etc.).  Although the syntax is similar to SQL, it is not exactly the same which offers a bit of a learning curve.

I came across a utility called LINQPad a few days ago that has been helping me get over the learning curve with LINQ.  This utility offers functionality similar to the query functionality in SQL Enterprise Manager.  You create ad-hoc queries using the LINQ syntax and view the results in a hierarchical format (where applicable).

There is an interesting challenge on the LINQPad site that goes as follows:

  • Locate the shortcut for SQL Management Studio on your Start Menu and move it some place else.
  • In its place, insert a shortcut to LINQPad.
  • For the next week, perform all your ad-hoc SQL queries using only LINQPad.

I'm currently about 2 days into the challenge and I have to say that it's a completely different mindset.  I also have to admit that I've cheated at least once and used SQL Enterprise Manager to run some queries because I was under a time crunch and didn't have the time to figure out exactly how I could use LINQ to achieve a particular problem.  However, I suspect that after another week or so I should have a very good understanding about the LINQ syntax (at least for database queries).

You can download and read more about LINQPad here.  Also, here are a couple of good LINQ reference sites for anyone starting out with LINQ: