Monday, March 26, 2007

Playing in the snow

The holiday is over and the snow is gone. The rain is back and the job is waiting. Ah well, I really do like my job, but it was so nice to clear my mind while descending from a shiny white slope starting at the top of a mountain.

Anyhow, last weekend I returned from a week of skiing in La Toussuire, part of the French Alpes' Les Sybelles area. Me, my girlfriend and a group of eight other friends and acquaintances stayed in a nice chalet directly at the slopes and ski-lifts. Apparently, La Toussuire is a very quiet and boring little village, but we brought enough supplies (and booze) to make sure that we were going to have a great time.

It was very warm over there and unfortunately, no new snow fell during our stay. Still, there was enough for me to ski for about 4-5 hours per day (including my daily 2,5 hour lessons). You had to get up early because the snow in the valley did melt quite a lot during the after-noon. At one point, we measured a temperature of 25 degrees Celcius in the sun. Yet, even though the weather conditions were barely good enough for skiing, they were great for enjoying a nice cold beer. I can really recommend a local beverage called Monaco, a mixture of beer, 7-Up and grenadine juice.

Half of the group preferred snowboarding and of the people who ski, only me and our friend Chantal took lessons. We initially enlisted for level 1, but soon ended up in level 3, including lots of jumping, off-piste, and a real slalom race on Thursday. I'm definitely going to continue taking lessons next year, because the amount of progress in technique and confidence you make in such a short week is impressive.

We had a lot of fun during our stay there, but somehow, seven people (including my girlfriend) managed to get caught by a stomach flu. I managed to fight it off for almost the entire week, but during the trip back, it caught up with me after all. Luckily, it was only a mild version of it, but it did keep me at home for two more days.

Anyway, it was great fun, and I won't hesitate when we're invited again next year…

Free web-based interface for TFS available now!

This is certainly incredible. One day after I blogged about my complaints on Team Foundation Server (especially its lack of a web-based interface), Microsoft announced that they've acquired DevBiz Business Solutions, the creators of TeamPlain, the best commercial TFS-based product available. And what's best, you can download it for free starting right now! I'm sure going to try it first thing in the morning.

Oh yes, and not to forget, Microsoft released a new roadmap for Visual Studio Team System, including the post-"Orcas" product, codenamed Rosario.

Saturday, March 24, 2007

What's not in Team Foundation Server

Being a great improvement over tools such as SourceSafe and alike, I've been using the Team System products for over a year now. Microsoft has always been very good in delivering an integrated experience. Still, I do miss some essential features that should have been part of the product from the start (or at least made available since its introduction). Some of these items have already been mentioned in the Visual Studio Orcas roadmap, but that one is not expected to arrive before the end of 2007.

  • I'd like to differentiate between a work item that has been assigned to somebody and one that that person has actually picked up. The Agile process template does not support this. Not sure if this also applies to the CMMI process template though.
  • TFS supports linking work items to eachother. I'd love to get a hierarchical view from within the Team Explorer such as a list of all active scenarios and their corresponding tasks for instance.
  • It is very difficult to move work items between projects out-of-the-box. Fortunately, a community effort, the TFS Work Item Utility, allows you to do just that.
  • No rich editing support in the work item description; it seems the editor does support it (just cut-and-paste something from Word), but TFS removes the formatting upon the next save. The editor for adding comments does support it though. Just make sure you enable the Formatting toolbar. Now that I think of it, maybe its just a bug (although I'm using service pack 1).
  • TFS does not provide a web-based interface for managing work items. The WSS team site is there, and already provides several features of the Visual Studio Team Explorer. It is one of the most missed features that our customers complain about, so why not add work item management as well? And what about alternatives?
  • There is a free ASP.NET example project that you can get from CodeProject that provides basic work item viewing and creation.
  • A commercial solution is available by means of a product called TeamPlain Web Access. It really covers all the aspects you may wish. In fact, this is how Microsoft should have made it from the beginning.
  • Continuous Integration; although not supported out-of-the-box (yet, see Orcas roadmap), several rather succesful attempts have been made in the TFS community using the web service notification mechanism provided by TFS.
  • TFS has limited support for email notifications. For instance, project managers would like to receive notifications whenever a work item changes. And developers wish to receive an email when a work item is assigned to them. Since TFS supports an extensive notification API (based on web services and the infamous BisSubscribe command line tool), the limitation is really a GUI problem.
  • A very popular ready-to-use notification web service is available that will send an email to whoever gets a work item assigned to him.
  • The TFS Event Subscription Tool provides a decent amount of help on configuring the TFS notification database. However, the filters needed to properly limit the amount of notifications are still a challenge.
  • There is a notification web service template for Visual Studio that you can use to create your own notification service.
  • No integration with Windows Sharepoint Services 3.0; This is a major issue for me. Just imagine: on one side you have MOSS 2007 (based on WSS 3.0) which allows you to set-up many great portals for your Internet and Intranet publishing, and even some advanced team sites for your projects. And then, on the other side, you have a TFS team site, based on an outdated WSS 2.0, that basically allows you to do…barely anything. According to Microsoft they are planning this for the next version of TFS, but there's an unofficial guide on how to migrate to WSS 3.0. I haven't tried it myself, but it seems to work with just a few minor limitations.

Friday, March 23, 2007

NHibernate best practices

As I'm in the process of introducing NHibernate into a reusable architecture based on Microsoft's Web Client and Web Service Software Factories, I've been struggling with several decisions. Should I encapsulate access to NHibernate classes in some data access layer? Where do I keep its ISessionFactory instance in a IIS-hosted WCF service? Should I have default transactions for each service interface request? Who is responsible for committing or rolling back the transaction?

Anyway, while looking for best practices, I ran into a great article by Billy McCafferty that not only covers many of my issues, it also presents some great design patterns and ideas that I've been adapting since then. Notice that his article mentions NHibernate getting support for C# Generics and Nullables soon.
Well, I have been using version 1.2.0 RC1 for a few weeks now, and it works like a charm. You can now define associations as ISet, IList or any of the other generic collections, and using types like int? or float? is a natural choice as well.