Tuesday, February 13, 2007

From time to time I am asked where one can get their hands on case studies around VSTS. You can find all VSTS case studies here: http://msdn2.microsoft.com/en-us/teamsystem/aa718812.aspx. Today we just released two new case studies focused around ROI.

posted on Tuesday, February 13, 2007 5:53:07 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Wednesday, January 24, 2007

Jeff Beehler and Buck Hodges both decided to tag me and I hear tag backs are not allowed. So it's time to kick off this new year of blogging with a few items you may have never guessed.

  1. I have a 10 month old son, Ethan. It's amazing just how fast your life can change.
  2. I love Motorsports. While there is number of different leagues, I most enjoy watching NASCAR. A few friends and I try to attend one race a year and so far I have been to Michigan, Charlotte, Atlanta, Memphis and Indy.
  3. Given I love Motorsports you could imagine I also love cars. So much so I am actually doing my own body off restoration on a 1970 Camaro. Yes it's turned into a slow moving project but it's still a great time when I get to turn some wrenches and lay a few welds.
  4. I didn't aspire to be a programmer when I went to college. In fact I really didn't aspire to do anything much with computers but I loved the internet. My father was a geek since the dawn of time so I had always grew up around them. At that point in time I would have just rather worked on cars. Once I got into college that quickly changed and I graduated with an IT degree. My first job out of college was actually working on the ole Y2K bug.
  5. I am an Eagle Scout.

I am sure these guys don't read my blog but I read theirs. In the spirit of this now you've been tagged too: Kevin Hammond, Richard Turner, Paul Andrew, Keith Brown

posted on Wednesday, January 24, 2007 9:02:00 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Friday, November 17, 2006

As a consultant you find yourself all over the place.  Today I am headed to downtown Chicago via the good ole train.  It's roughly a 1:30 minute ride one way.  I normally travel with at least the following:

  • Large cup of Dunkin Donuts ( you know America runs on it )
  • 1 Verizon phone with EVDO
  • 1 Vista machine, 2 batteries
  • 1 set of headphones

Here is where things get very geeky:

I am currently using the phone as a modem.  Blogging, email, IM, banging code all while listening to URGE ( BTW URGE just rocks ).  All at 50 mph!  If that wasn't enough, the code I am working on is hosted on a remote TFS server I am currently checking things in and out of.  CRAZY, I just love it!!

So what does my current bandwidth look like?

Download Speed: 1118 kbps (139.8 KB/sec transfer rate)
Upload Speed: 119 kbps (14.9 KB/sec transfer rate)

It's pretty crazy how connected we really are today.

posted on Friday, November 17, 2006 7:55:38 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Tuesday, November 07, 2006

Join members of the Visual Studio Team System product group to discuss features available in Visual Studio Team Foundation Server, Team Editions for Architects, Developers, Database Pros, and Testers. In addition, discuss what's new in the latest Community Technology Preview (CTP).

Join the chat on Wednesday, November 8th, 2006 from 10:00am - 11:00am Pacific Time.

Add to Calendar

Additional Time Zones

posted on Tuesday, November 07, 2006 7:51:38 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Monday, November 06, 2006

That blasted VSMDI file.  Well Buck, Tom and crew did it.  They have finally given us the ability to run tests ( albeit all ) found in an assembly regardless of test lists.  http://blogs.msdn.com/buckh/archive/2006/11/04/how-to-run-tests-without-test-metadata-files-and-test-lists-vsmdi-files.aspx I am currently integrating this into TfsAlert and will post my findings.

posted on Monday, November 06, 2006 8:40:13 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Sunday, November 05, 2006

After releasing TfsAlert 0.3.0.0 I realized I'd failed to mention how security works.  BIG OPPS, Sorry!!!  TfsAlert will not get into the business of managing your user account.  Windows already provides such a facility and I believe leveraging that is just a better more secure choice.  However TfsAlert will maintain knowledge about your TfsUserName.  It does so to properly create the Tfs event subscription.  Having said that you still need to properly authenticate just to subscribe, no different than any of the other Tfs tools.

So how do we manage security?  Simple, we just add the server\username \ password into Control Panel -> User Accounts -> Manage User Accounts -> Advanced -> Manage Passwords.  I do realize this may be shut down by a companies GPO but if not we have found this to work very nicely.  If your one of those people ( like I ) who use multiple Tfs servers at a variety of locations you would always be prompted for your credentials just to start up the IDE.  This all goes away once your account is loaded into that Windows facility.

posted on Sunday, November 05, 2006 9:13:18 AM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
 Wednesday, November 01, 2006

With today's release of TfsAlert a question will no doubt get asked; what really is a Filter Expression?  Short answer, an expression to filter events sent from TFS.

Long answer.

Formally known as Visual Studio Event Filter Language or VSEFL, it feels very much like a SQL expression and/or like WIQL. These filters are added with the creation of the subscription itself.  This becomes really important when you're consuming any part of the TFS eventing system.  Let's use TfsAlert for example.  It's 100% driven by the TFS eventing system and while there are a number of events once can subscribe to lets just focus on two and further provide some concrete examples.

  • CheckinEvent
  • WorkItemChangedEvent

Lets also assume you have a TFS server which has more than one TFS project and more than one person using it.  Given that when you startup TfsAlert without any subscription filters you're going to get a number of events, some of which I am sure you don't care about.  The following questions usually come next.  How can I

  • filter a CheckinEvent for my set of team project(s)?
  • filter only WorkItems assigned to me across any TFS project?
  • filter WorkItems for my area?

A typical CheckinEvent filter usually looks something like the following:

" TeamProject = 'Project Name' "
" TeamProject MATCH 'Project Name A|Project Name B' "

Those two expression actually answer that first question. The expression simply states we want to filter on TeamProject where the it either = 'Project Name' or MATCH all project which equal Project Name A or Project Name B. The "key" ( in this case TeamProject) is derived from that events schema.  So what operators are available?

= (equals) String, Int, Enum, Date, Bool
< (less than) Int, Enum, Date
<= Int, Enum, Date
> (greater than) Int, Enum, Date
>= Int, Enum, Date
Under (Quickly match file specs) String
Match (Regular Expression Match) String
Like (Simple match) String

Matching is pretty easy and all completed on the server side before the event is ever sent.  What you really need to understand is each particular events schema.  That events schema ultimately defines the actual event and what you have the ability to filter on.  When TFS installs you can find the default schemas @ %ProgramFiles%\Microsoft Visual Studio 2005 Team Foundation Server\Web Services\Services\v1.0\Transforms.  You can further create your own event types, but I will save that for another post.

This release of TfsAlert will actually publish the message you've received to the event log just so you can easily look at it.  This will really help when you want to build some filter expressions.  This can also be turned off by setting the value attribute from 3 to 0.

<switches>
  <add name="General" value="3" />
</switches>

Want to dive deeper, all the eventing information you ever wanted to know can be found @ http://msdn2.microsoft.com/en-us/library/aa398965.aspx

posted on Wednesday, November 01, 2006 2:08:36 PM (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback