March 2006 Archives

With Apple about to celebrate it's 30th Anniversary, Wired is running a piece on the best Steve Jobs' comments ever. While I don't particularly like the proprietary way in which Apple goes about things - you have to admire the man's presentation skills, charisma, vision and the ability to go from a two man in a garage team to being a CEO. Also, there ain't no denying that his companies products are awfully nice looking and the consumer experience of buying technology from the Apple store compared with Best Buy or Dixons is like the difference between buying jewelry from Tiffany's instead of Elizabeth Duke. The following are my personal favourites quotes from the Wired piece:-

"We made the buttons on the screen look so good you'll want to lick them."
"I've always wanted to own and control the primary technology in everything we do."
"Innovation has nothing to do with how many R&D dollars you have. When Apple came up with the Mac, IBM was spending at least 100 times more on R&D. It's not about money. It's about the people you have, how you're led, and how much you get it."
"It's really hard to design products by focus groups. A lot of times, people don't know what they want until you show it to them."
"It comes from saying no to 1,000 things to make sure we don't get on the wrong track or try to do too much."
"It is hard to think that a $2 billion company with 4,300-plus people couldn't compete with six people in blue jeans."
"Why would I ever want to run Disney? Wouldn't it make more sense just to sell them Pixar and retire?"

Ian Olsen is Blogging

After a somewhat public call to action, Ian Olsen is now blogging. Ian works over on the SourceGear side of the company and will be a familiar name to those of you subscribed to the CruiseControl.NET mailing lists. If you have the time pop along and pay him a visit. If you are wondering, his desk is probably about another 10 feet closer to Eric's than Ben's.

HDTV Confusion


I'm confused. Sometime this year, we want to buy a second TV for our house. As this TV will be around for a while in our "posh" room it makes sense (to me - not my wife) to get a HD TV. However, every TV I'm seen marketed has 768 lines, with various widths (1366 or 1280 pixels seem the most common). Yet the HDTV specs I've heard about are 720p or 1080i (which seem to match with resolutions of 1280 x 720 or 1920 x 1080). Now none of the TV's I've seen match the resolution of the images as broadcast surely meaning that it will have to do some interpolation of the results. If the signal is a 720p one it will have to scale the image up, if it is 1080 scale the image down. In my experience LCD screens running at non-native resolutions usually look nasty.

I am I the only one confused? Anyone know of a good web page that will explain it all for me. I may just hold off a while until the formats settle down and get a cheap old fashioned analog TV to last us a couple of years - but that will hurt my early adopter pride.

While even it's own mother would admit that VSS has some issues, the one thing in it's favour is it's simplicity. You only need a file server to keep a VSS repository available and organisations have a lot of experience keeping file systems up and running. Recently I've been talking to a lot of Architect types who are trying to figure out how Team Foundation Server will fit into their organisation and the issue of ensuring availability frequently crops up.

Buck Hodges has an interesting post on the topic, linking to some MSDN documentation on the topic. Good news is that we can use database clustering and database backup skills that most large companies using SQL Server have in house - but we are reliant on a warm standby option for application tier availability.

In real terms this is probably a better position than most folks are in for their current version control systems, but as Team Foundation Server develops, I would expect to see more improvements in this area.

Quick note about configuring your application tier machine (and source control proxy machines). Personally, I consider it best to use a couple of disk types. The application and config settings should be stored on a partition configured for maximum reliability and read optimization (think RAID level 5), however there is a caching element to the application tier and with the proxy server. The caching stores compressed versions of each file at each changeset - allowing them to be rapidly streamed to the client. You can separately configure the location of this cache on disk - allowing you to put this on a disk array configured for performance (say RAID level 0) - if the disk array was to suffer a failure the cache can always be re-built from data stored in the database. For more information on the Version Control cache see an excellent screen cast by Swamy Subramanian.

Hardware Mute Hack


A headphone jack with no headphones - perfect to act as a hardware mute buttonI have a lovely Dell Precision M70 as my main development machine. It's a notebook so is great for when I am travelling around and has more than enough grunt to handle a few VMWare images running at once for cross-platform demos etc. The only complaint I have about it is a common one with laptops - there is no hardware volume control. There are buttons that control the volume but these link into a software volume control (which amazingly even work in Ubuntu Linux complete with a nice screen overlay showing you the current volume setting).

At my office I will quite often have the volume up pretty loud so that I can hear incoming messages etc. This is fine until I take my laptop mobile and then decide to switch it on while sat in the audience of a quiet presentation - the windows start music always blares out before I the software loads to control the volume allowing me to mute the sound.

An advantage of travelling on transatlantic flights is that most airlines give away a pair of cheap headphones so you can watch the in-flight movie. I'd collected a couple of pairs of these headphones and so this morning I snipped the headphones off a pair to leave me with the headphone jack. Plug it into the headphone socket and the sound is muted. A simple and cheap way to add a hardware mute control to my laptop courtesy of American Airlines. If I had left the headphones attached then it would have also doubled up as a pair of headphones - but it seemed like a good idea at the time.

As I have mentioned before, when you check out a file for edit in Team Foundation Source Control, you are actually telling the server that you are going to edit a particular version of a particular file that you have in your local workspace. At that point, you can optionally select one of three lock types:-

"none", "check-out" or "check-in"

Lock "None". The file is not locked. A user may check out the file after you have, make changes and check those changes back in. At the point when you come to check in files you will be prompted to resolve any conflict that could occur. A really useful example when none is very useful is if editing a common config file, and interface containing constants or an enum where typically only additions are being made - your changes and another developers changes will usually always work in harmony. Typically, we default to lock of "none" in my organization and rely on communication between developers to ensure we do not adversely effect each others development.

Lock "Check-out". The file is locked on the server so that no user may check the file out after you have. This is useful is you are making a change to the file and you do not want anybody else to be able to start editing the file until you have released the lock by checking in the file or un-locking it. You cannot place a lock of "check-out" on a file if somebody already has checked out the file with a lock type of "none". Additionally, binary files are checked out with a check-out lock due to the problems of merging two binary files.

Lock "Check-in". This is also known as the "antisocial" lock in our company :-) A check-in lock prevents anyone else from committing their changes to that file until you have released the lock. This means that they will be responsible for performing any conflict resolution activities that result. You can place a check-in lock on a file even if somebody has a file checked out with a lock type of "none" i.e. I know you are working on this file but you are not allowed to check in your changes until I have made this important quick fix.

Depending on the culture in your organization, you may not be comfortable with two developers being able to work on the same file at the same time. In which case there is a Team Project Setting (Team, Team project Settings..., Source Control, Check-out settings) called "Enabled multiple check-out". This is typically enabled, however you can de-select this option if you have appropriate privileges and from then on all check-outs will be performed with lock "Check-out" - no other types of lock will be permitted by the server.

The X-Factor

| 1 Comment

Just been listening to an excellent programme from BBC Radio 4 - The X Factor. Not a story of wanabe pop stars, but a tale of what it is like to go into space and how the experience is about to open up to more normal people. It is presented by veteran astronaut Jeff Hoffman, who is now professor of astronautics at MIT. Sadly the programme is not available to download as an MP3, but you can listen to it through RealPlayer using the BBC's listen again service.

Just noticed there is now an official Team Foundaion Server FAQ page. Nice to see four of my projects have made it on to the interoperability list :-)

TFS RTM Upgrade Complete

Build 147 of Team Foundation Server, running nicely thanks.Well. That was rather painless. We've just completed the upgrade of our internal dogfooding instance of Team Foundation Server to the 180-day trial edition from the MSDN download site. Having personally been one of the lucky few to have tested the Beta 2 - Beta 3, Beta 3 - Beta 3R, Beta 3R to RC and finally RC to RTM upgrades I have to say I was seriously impressed with how easy it was. It *just worked*. I would love to report about all the clever things we had to do to make it work, but we simply RT'd the FM and we didn't encounter any problems. In all, we had less than 15 minutes downtime, but I could have probably made it less if I'd practised. All our work item customizations are in place, everyones files are still there. It just works. Thanks to the VSTS Team for a job well done. Looking forward to typing in the real TFS Server key when our shiney blue box arrives.

Another TFS RTM Install

Quick post to say that I got an RTM version of Team Foundation Server installed inside a VPC over the weekend and it worked seamlessly (as we've come to expect - kudos to those involved). Once little caveat: don't attempt to install from media over a network share.

I had the install files copied into a local folder on my workstation and then tried to install them directly from a shared folder from within the Virtual PC. It failed saying it couldn't find files some files (I have screen shots if any of the good folks from Microsoft are interested). I figured it was because the setup routine had .NET code in it which often doesn't like running directly from a UNC network share for security reasons - but I didn't spend the time investigating it further (it could also have been a file naming thing because folder names were very long by the time the media was extracted to disk). When the media was local (which it will me in most cases) then there are no problems.

I gave the latest builds of the Teamprise Clients a quick run through and they seems to be working just fine - however tomorrow we upgrade our main physical server instances so we'll see what happens then....

The Best Booth Question Ever

So, I was manning the booth yesterday in a freakishly tired state that I was almost hallucinating (I swear I saw another high ranking Microsoft person using Linux in a keynote). I'd got to the point where I'd said the same things so many times I couldn't remember if I was repeating myself to the same person or not. Then, a guy asked me the best question I have ever been asked at a booth.

Guy: "Are you a developer on the product?"
Me: "Yes I am."
Guy: "Which bits did you write - which is your favorite feature".

Well, what a nice question. Admittedly I ended up showing him some pretty bizarre edge cases that I'm particularly proud of (and realized how few of the features I could claim to writing - as I've said before, working at Teamprise is a very humbling experience for a developer). Next time you are at a booth and see a scary looking developer type - rather than asking "You got anything free to give me" try asking the question above and you might get more than you bargained for...

I'm a Total Idiot


Usually, I am very good at the 24 hour clock. It comes from a childhood of setting the VCR because my parents just could never figure it out. However I turned up for my 9.30 flight this evening, only to find I had read my tickets wrong and it was actually 19.30. Luckilly they were fully flexible tickets because I had to book them at the last minute, however it was the final flight of the day and so now I'll not be getting home until Saturday evening - missing the entire St Patrick's Day celebrations on Friday. What an Idiot I am - playing Check-In Chicken used to be one of my favourite games, but missing a flight home is never as much fun as missing the flight out. To improve my mood and help me sleep I've been investigating how to say Cheers in multiple languages. Sláinte!

Ireland Tour

I've been living in Northern Ireland for over a year now however I've only been to Ireland once - and that was to get some cheap petrol as I was near the border. Next month I'm going to have a celebratory tour of the INDA user groups to talk about Team System now that it has been officially launched.

Source Control With Team System
Source control is something that every professional developer uses yet is hardly ever taught to use. In this session, Martin explains source control using Microsoft Team Foundation Server, how this differs from other source control systems like VSS, CVS or Subversion and how to get the best out of it in your day to day development. He also talks about how to adopt the new Microsoft Team Foundation Server and manage all the source code of your company including Visual Studio 2003, Visual Basic 6 or Java projects.

I am really looking forward to seeing some more of the country and having a chat with other developers around the island of Ireland. If you are near one of the venues it would be great for you to stop by and have a chat.

SD West Slide Deck

If you were at my talk at SD West today, then this is the slide deck. However, if 8.30 am was a little early for you then don't worry - you didn't miss much and at least you have the slides now so you can still pretend you were there. If you were up but didn't come then I won't take it personally - I would have probably been next door in the AJAX session myself if I'd had the choice.

Connecting to Team System Across the Enterprise - Microsoft Sponsored Partner Session
Thursday, March 16, 8:30am - 10:00am - Room 201.

Drawing on real world scenarios, this session will explain how to deploy Visual Studio 2005 Team Foundation Server across your enterprise. It will focus in on a realistic adoption route and demonstrate the alternative methods available to connect into your Team System Environment. Particular focus will be given to the Teamprise suite of products which allows Team Foundation access from non-Windows platforms and from inside Eclipse, the leading Java IDE.

Upgrading TFS RC to RTM

| 1 Comment

Well, the impending release of Team Foundation Server looks to be days away. The User Education team have posted the upgrade instructions. I'll post back to let folks know how we get on when we do the upgrade.

Like many people we have customized the base MSF Agile process to add some fields that we need (for example, customer contact details on the Bug work item type), so we'll be saving those types out and re-modifying the template later. The question I currently have is what will happen to the data that is currently in these fields in the RC version. I'll soon find out, but I'll be taking a dump of the data into an Excel spreadsheet before I upgrade so I can get the data back easily should it dissapear (which is what I expect to happen, but am prepared to be plesently suprised).

Foxe Basin

According to the in flight map, I am currently 36000 feet above Baffin Bay, traveling at 550 Mph with mild amusement towards Foxe Bain. The temperature outside is a balmy -53 degrees Celsius. However, having watched the latest Harry Potter thriller and with 2987 miles to go until I reach San Francisco, I thought I'd better actually work on the talk I'm supposed to be giving in a couple of days time.

I was just trying to figure out what I am trying to say (which is basically Team System is cool you should buy it, hey while you have the corporate card out why not take a look at our company). A couple of things struck me while I messing in PowerPoint so I though I would write them here - I'm very easily distracted when it comes to preparing for talks...

1) Team System is one of those products that seem really simple on the face of it. You integrate the IDE with a list of work items and a powerful version control system based on an proper RDBMS. Hey, while you are at it we might as well give you some reporting on that data and as you need a server running Windows 2003 to run this all one, why not use Windows Sharepoint Services to give yourself a team collaboration area. Sprinkle in all the other nice stuff that the best teams tend to use like a decent class modeling tool, a build server, static code analysis, code profiler, unit test framework etc. It is such as simple idea you wonder why the competing products (and I'm thinking about Rational and Borlands offerings) don't quite hit the mark. I guess Microsoft have done a classic Microsoft trick - look around and learn from what others have done before and also keep things so you can use as little or as much as you want. A sign of good software is that it looks simple on the outside - an almost transparent layer between you and the work you want to do. I think (with a few small exceptions) Team System hits the mark.

2) Sure, you can go out and assemble a collection of tools and technologies and integrate them yourself. Many of them would be open source and would cost you less to purchase. The problem is that you have to be certain type of person to go out and do all that work. If my experience has taught me anything, it is that inside companies many folk can't be bothered doing that - indeed you could argue that is not what their business are paying them to do. While not every component inside Team System is best of bread yet, the fact that they all come installed on the workstation if you deploy one of the Visual Studio Team System SKU's across your development teams you know that more people will pick up those tools and improved quality will be the result.

3) Microsoft realizes that they cannot do everything. Instead they have focussed on providing a core platform and set of features that bring benefit to the company and done the best they can to make the platform extensible. This mean partner copmanies like my own can add value to the product, but if a company wants the product to work a certain way then they can make it behave how they want. It also means other groups inside Microsoft can be nimble, adding to the platform, and Microsoft can release a series of add-ons and aftermarket solutions to improve the offering without having to wait for the next release cycle.

In my own experience with Team System, the company I used to work for were really interested because they needed a decent source control solution that worked across the WAN. Then, we noticed these things called "Work Items" and soon we were adding stuff into there from our various lists. Then people started focusing on quality. I've seen the same thing happen where-ever I've seen Team System installed. People start thinking about quality and traceability of requirements. They start doing all the stuff they have been feeling guilty about not doing for years. Why were they not doing it before? Because it was too hard.

Anyway, enough ranting. I'm 235 miles closer to my destination and I really should do some actual work on this journey. For those of you that are interested I predictably had chicken again. I really was going to go for beef this time, but it was a chicken curry (which I haven't had for weeks because my son won't eat it) and it actually tasted rather good. Maybe I'll be different on the way home, which (thankfully) is only a few days away.

James Manning has posted a suggestion for a powertoy to enable you to paste the contents on your clipboard into a work item as an attachment.  Personally, I think this would be awesome, in conjunction with the standard windows Print Screen, or something more powerful like OneNote or WinSnap – it would make adding screen shots to the work item a breeze.  We have features in our Teamprise clients that make it easy to save diagnostic information to disk, just so we can have this as an attachment to the work item.  Anything that makes it easier for folks raising the bugs to give the developers the information they need is a good thing in my book so I hope this powertoy finds it way into the outside world.

If you think it would be useful, then I encourage you to head over to James’ blog and leave a comment – if there is enough interest then hopefully it will be shipped as a V1.0 powertoy.

Ben Pryor

Ben Pryor has recently started blogging, I encourage you to add him to your aggregator.  His first couple of posts are all ready pretty interesting (better than my first blog posts).

Make Windows XP Look Shiney

| 1 Comment

Windows XP Royale ThemeRecently I was looking at some screenshots from my good friend Clark Sell and  I spent more time admiring the theme on his copy of Windows than looking at the error he was trying to show me. Anyway, the theme is the one that comes with Windows Tablet PC Edition 2005 or Windows Media Centre 2005 - called "Royale" or "Energy Bliss".

I've seen a few posts around showing you how to hack the Windows Tablet PC download and turn it into a Windows XP theme. However, you can officially download it for Windows XP, along with some irreverent takes on the standard Bliss background, thanks to those lovely folks at Microsoft New Zealand.

Tonight, I finally sat down and recompiled the CruiseControl.NET plugin to work with the RC version of the Team Foundation Server API. 

Turns out there was only one change – the TeamFoundationServer object now has a public constructor to pass the credentials to rather than using the factory as I has previously been doing.  I also put a quick fix in there, but I really want to re-write the whole thing.  Looking back at the use of the client API it is very naive, there would be a ton of improvements I would love to do to it to make it faster by actually using some of the great features that Version Control in Team Foundation Server gives you.  I also want to talk to the PublishTestResults service.  Hey ho – so little time so many projects…

Anyway, cruise on over to the VSTSPlugins project to find out more.



Creative Commons License
This blog is licensed under a Creative Commons License.