One of the new features in Windows Vista is the ability insulate your machine from potentially malicious web-sites. The insulation extends all the way to creating a fake file system for components that you may have authorised to play in.

I saw this feature demonstrated last year, but it wasn’t until now that I realised how complete it was. I was actually navigating to a SharePoint site that happened to use a self signed certificate and wanted to upload a document. When I clicked the upload button I was presented with an empty directory.

EmptyDirectory

After being confused for a few minutes (and double checking that I hadn’t finally flipped) I looked under the security settings for Internet Explorer 7.0 (installed by default in Windows Vista). Basically its the “protected mode” feature that causes this behaviour. It gives Internet Explorer 7.0 a fake registry and file system for any malicious components to run in without them really realising that they are restricted.

ProtectedMode

You can turn this feature off it is causing you problems (it was for me). Just go to the security tab in Internet Explorer 7.0.

Hey Darren – here is my first Vista Vision! I was really happy to see the sidebar come back after it was initially dropped. And one of the reasons is that it helps complete the desktop metaphor around having things that are easily within reach that you can either use or look at.

One of my favourite gadgets is the out of the box Notes gadget that allows me to quickly scratch something temporary onto a piece of “virtual” paper. In the case below I had a problem using Groove and I didn’t have time to submit a formal bug report right there and then so just put it into a note so that I didn’t forget.

Notes Sidebar Gadget

The first of the two notes was the key that I had to keep typing in to the various Office 12 setup programs, but I decided not to take a screenshot of that . . .

It’s 4:10am in the morning, Bella came through to our bedroom in the middle of the night so I thought that I would take the opportunity after Nicola put her back in her room to come and check where my Windows Vista installation was at. The machine had gone to sleep, but when I woke it up it was ready at the final configuration steps where I set up where I am and create the default user account. I’m not getting Aero on this machine which will probably prompt me to ask for an upgraded laptop sooner rather than later (in fact, it already has).

There are a few things that aren’t working at the moment (like audio), but I already know what my first two Vista visions are going to be. Caio!

The rest of the world started installing Windows Vista BETA 2 earlier this week, but I had to hold off until today so that I could get my MSDN web-cast out of the way. I did that at about 7am this morning and now I have just over a week before I need to use my laptop for demonstrations. Right now I am backing up my “sandbox” directory which is where I put any source files I am working on, this is really just a precaution because most of the stuff that I really want to keep is either safely tucked away in SharePoint or Team Foundation Server.

BackupingUpSandboxes

I’ll be installing Vista on a Dell Inspiron 6000 with two gigabytes of RAM, and while it has a 128MB video card I believe it uses shared memory, so glass isn’t supported. On top of Vista I’ll be installing Office 12 BETA 2, although I’ve been running Office 12 BETA 2 on Windows XP for over two weeks now and I’ve been very impressed with its stability so far and I’m really starting to like the usability enhancements (the ribbon bar is a huge leap forward).

Dogfooding the latest Microsoft operating system is something that I’ve been doing ever since Windows NT 3.5 and Windows 95. I’ve been keenly interested in Darren’s (and his home blog), Rocky’s and Grant’s first impressions to see if there were any gotchas that I needed to watch out for, but mostly I’ve just been lusting over the UI that their laptops are spitting up.

My next blog post to you will be coming from within Windows Vista!

P.S. This has been a long road to get to this point, I first remember trying out Vista in 2003 after the Professional Developers Conference where they released a very early build of Longhorn.

Andrew Coates has posted the list of TechEd 2006 developer track sessions for Australia. There are a total eighteen sessions in the track. I think the current plan is for me to present the “Extending Team Foundation Server” session and co-present another with Joe Sango.

See you at TechEd 2006!

Every now and then my wife turns to me and says “I want an X for Christmas”. Me being me, I completely forget what she wants when it comes time to getting that special present that shows that I was both listening in the first place, and thoughtful enough to remember to get her what she wanted.

Well – no more! From now on, whenever Nicola tells me something like this I’m just going to blog it, then at the appropriate time I’ll just mearch for it (thats my new Microsoft-centric search term – Google is so vendor specific :P ).

Marathon Blogger

May 24, 2006

Seems to be a fitness related day today. I got my pack for the Global Corporate Challenge today and I am just trying out the pedomiter. The competition officially starts tomorrow and I get to see how my daily walking activity compares to the others in the company. I’m looking forward to it.

On the health and fitness topic, a friend of mine has just started bloging (not sure if he wants to keep his name top secret or not). Anyway, I met him around the time he started running again. He would come back into the office looking like a tomato. Anyway – subscribed!

Its the vibe!

Darren Neimke is hosting TechTalkBlogs at the moment, and one of the things he has kicked off is Vista Vibes (onetwo and three – currently). The idea is to get real peoples opinions on Windows Vista before the marketing department has a chance to put any spin on it, or before the industry pundits get to have their two bobs worth. Because its still not released the people that Darren are interviewing tend to be technical folk who love living on the bleeding edge – the trail blazers if you will.

The first Vista Vibe was with Frank Arrigo and although Frank runs the DPE team at Microsoft, he is usually pretty forthcoming with his own opinions. The second Vista Vibe was with Grant Holliday who has been having fun getting all his kit working on the new operating system. Finally, the third Vista Vibe is with Ian Griffiths who will probably need to take out a restraining order against Joseph because of the whole fan-stalker thing.

One of the things that I liked about Ian’s interview is that it explained why so many people do the spinning textbox demo in WPF, but he also points out how we really need to move beyond that though. I disagree however that WPF isn’t really for Line-of-Business applications. I’m convinced that building lots of small task orientated Navigation Applications in WPF is the way to go for a lot of enterprise development scenarios, especially when you couple it with secure-by-default WCF communication channels, ClickOnce and start menu/shell enhancements.

Keep up the good work Darren – who is next?

The Team Build facility in Team Foundation Server allows development teams, and in particular configuration managers to define a build that can be performed on a remote server at the click of a button. After the build is complete the results of that build process are uploaded to a drop location on a network volume somewhere.

Builds that are performed can quite often be rejected because of a failure caused by a file not being checked in, or some debug-time setting propogating into a build destined for release. Other builds may be rejected at a later date due to functional testing identifying a problem.

BuildHistory

While recording details about each build that is performed is useful from an auditing perspective, storing the actual artefacts from that build does come at a cost – a storage cost. The solution is to regularly clean the old rejected builds out of the drop folder to reclaim space.

At Readify we try to run a pretty tight ship when it comes to Team Foundation Server. So not just anybody can go in and delete files from the drop location – that might remove good builds that may be required for diagnostics later on down the track. But how do we allow people clean-out the garbage?

Introducing the Build Clean-up Service

This is an extension to Team Foundation Server that I’ve had queued up to develop for quite some time. The clean-up service takes care of cleaning out the “Rejected” and “Unexamined” builds after a specified period of time (configurable).

After installing and starting the build clean-up service a few things happens. First, the “WorkItemStore” is contacted to get a list of Team Projects defined within Team Foundation Server, then a list of builds performed under that scope of that Team Project is retrieved from the “BuildStore”.

Each of the builds is checked in turn to determine whether it is a candidate for clean-up. The rules for determining this are as follows:

  • Has the expiry date for the build been reached? This is a basic calculation to determine whether time since the build was finished is greater than the expiry time span defined in the configuration file. Currently ours is set to fifteen days.
  • Does the drop location exist? This feature was added after I realised that during the installation of our Team Foundation Server I had tested out some builds and subsequently deleted them off the file system – this will be a pretty common scenario I think.
  • Has the build actually completed? If you set quite a low expiry time span and you happened to have a fairly long build process its concievable that the service could kick in and start trying to delete the build while it was still running. So here we make sure we are only considering whether a build is a candidate for clean-up checks for this.
  • Has the build been abandoned? Abandoned build are builds that are either in a Rejected or Unexamined state. By default all builds go into an Unexamined state, but remember that the build needs to have expired as well before it gets cleaned-up so you shouldn’t have good builds going missing before you have a chance to inspect them unless you set a really low processing interval on the service (default is one hour).

Once it has been determined that a build is a candidate for clean-up the service systematically deletes the build artefacts in each of the specified build locations. There are a few things that it doesn’t touch however. The clean-up service will not delete the build log (provided it is called BuildLog.txt) and it will wrote a “Readme.txt” file to explain what happened to the files.

In addition to that, two entries will be placed in the event log, one for the start, and one for the completion of the clean-up for each build. This provides an audit trail that monitoring software can pick up if you require that level of control.

BuildCleanupEvent

Downloading and Installing the Build Clean-up Service

Before you download, install and run the build clean-up service I want to let you know that I take no responsibility for what this does to your system. It was tested on my laptop and a live Team Foundation Server environment but I can’t guarantee that I’ve picked up every issue. I recommend that you take a backup of your drop locations prior to installing and running this service – just in case, and I would warn development teams that it is being turned on. That said – I’m pretty sure that it’ll work for you.

The first thing that you need to do is download and unzip the service onto a machine that has Team Foundation Server components installed on it. I would recommend either the application tier or the team build server (if you have those components distributed). After that you need to use the .NET Framework (2.0) installation utility to register the service on the computer:

InstallUtil.exe BuildCleanup.exe

During the installation process it will prompt for credentials for the service. One sure fire way to make sure it has the right credentials is to make it run under the same service account as the Team Build service, on most systems thats [DOMAIN]\TFSBUILD.

The final step is to edit the BuildCleanup.exe.config configuration file to point the service at the URL for your Team Foundation Server. Once that is done you should be able to start the service by issuing the following command:

net start BuildCleanupService

When the service springs to life you’ll probably get a flurry of activity, depending on how long your Rejected and Unexamined builds have been sitting around for. If you want to get a picture of what the service is doing just look at the event log on the system it is running on.

What’s next?

You tell me! If you have any features that you would like to have added to the Build Cleanup Service then shoot me an e-mail to let me know. I’ve got a few that I would like to see:

  • A Windows Installer-based setup package which includes prompts for setting up things like expiry time spans, processing intervals and the Team Foundation Server URL.
  • Warning e-mails for those that iniated builds that are going to be deleted.
  • Support for changing the build quality indicator to “Deleted”.
  • More robust error handling and logging.