January 2006 Archives

John Lawrence has posted an interesting tip about the error "Server did not recognize the value of the HTTP Header SOAPAction: http://schemas.microsoft.com/TeamFoundation/2005/06/Services/ServerStatus/02/CheckAuthentication". Basically, if you see this error you are trying to use a beta client to connect to an RC version of Team Foundation Server. The solution is to upgrade your client to the latest version.

Web service versioning is a minefield issue when it comes to SOA Architectures. It would have been nice if the MS Client detected this error better and gave a nicer error to the end-user. There is a get version method call that the client pings occasionally to keep the HTTP session alive - really that schema should have stayed intact and clients used it to detect if they were compatible with the version on the server and give back an understandable error message.

Anyway, looks like the RC is very nearly here. I for one cannot wait to have it in my sweaty hands.

MS VP demonstrates Teamprise on LinuxAt the keynote today at VSLive, Soma Somasegar publicly announced the availability of VSTS RC in the next week and the RTM in March 2006 - so basically the team are on track. While that is good news, the highlight of the talk for me was to see Soma (Microsoft's VP of Developer Division) take part in a demo of our Teamprise Explorer client running on a "non-windows client" - Ubuntu 5.10 for those that are interested. We had loads of people come by the booth today and overall we had a very positive reception. I was also a little star struck because loads of names that I recognised from DotNetRocks were around, including Mark Miller and Rocky Lhotka.

VSTS Diagram Zoom Tip

I am in a presentation at the moment and realised that the speakers don't know about this excellent tip that I learnt from Rob Burke but never seen it written down anywhere. If you have a scrolling mouse, press Ctrl and scroll the wheel up and down in the VSTS diagrams to zoom in and out - it works really well (even with the scrolling features on most laptop trackpads)

Live @ VSLiive

| 1 Comment

Teamprise Booth at VSLive in San Francisco
I am in the pre-workshop conference VSTS for Everyone: Best Practices for the Whole Team. It is really interesting watching other people learning VSTS and also what common questions that they ask. Rob Caron is here as well, he is doing a better job than me of not interrupting the speakers but it is funny to watch him squirm at some of the things the speakers say.

To be honest, I have been a bit disappointed so far with the talk. It was billed as a workshop, which to me suggests audience participation. Really, it was just a day long demo or some of the VSTS functionality, but never really getting too deeply involved with any of it. Anyway, an encouraging thing to take from the day is the number of folks that think VSTS is really cool - but have Java or Mac folks in their company that they want to get involved.

To view my hotel and my short walk to the conference venue then see this Virtual Earth Bird's Eye View.

Teamprise Preview 5

TeamprisePreview 5 of Teamprise is now available for registered users to download (registration is free). This release is compatible with Beta 3 and Beta 3 refresh of Visual Studio 2005 Team Foundation Server. We'll be releasing another preview release after Release Candidate comes out (due any time soon).

I use the Preview 5 release day-to-day for the continued development of Teamprise in Eclipse. Considering I spend most of my time on the end of a VPN connection the source control works incredibly well. We also use the command line client in the build scripts to download the source onto the build server (which is on a meaty linux box).

Anyway, if you are currently using VSTS and you have some Java folks in your organisation then I suggest that you point them at the Preview 5 download page so that they can join in the party. Even if you don't use Eclipse for your day-to-day development, I'd also recommend you try the Teamprise Explorer (a stand-alone client) if you are just using VSTS for source control. IMHO, it's a more compact interface than Microsoft's Team Foundation Client (which currently just looks like Visual Studio). Also, the compare dialog is really nice. You wouldn't believe it was a 100% java client, SWT is soo much of an improvement from the old Swing days...

Chicken or Beef?


If I were clever like Eric Sink or Bill Caputo, I'd be able to turn that catchy title in to a witty and insightful post about the software industry. But sadly for you, I'm not and (as witnessed in this blog) my writing skills are pretty awful. My headmaster once wrote in a school report "Martin has invented a whole new way of spelling the English language - sadly I don't think it will catch on".

Instead the phrase "Chicken or Beef" means that I am on my latest round of travels. As I write this message I have bagged 3 of the 8 flights I'm scheduled to be taking in the next 12 days, and I will no-doubt hear those familiar words many more times as I tuck into my microwaved airplane delight with the relish of a condemned man. To be fair the first 3 flights were quite un-eventful, I had a three seats all to myself on the way over the pond and got a nice little snooze, only to be woken by some turbulence. Well, it wasn't strictly the turbulence that woke me, but more the screaming of a women in the row next to mine. A little screaming I can handle, but the praying really started to freak me out so I got back to reading a book (which I read in a single day, and it's been a long time since I made time to read trashy fiction book in a day - it felt wonderfully self indulgent). However, judging by my employer’s history with air travel I’ll still have a look of pleasant surprise if my baggage and I end up at the correct destinations in one piece.

On the positive side, I get to spend a week with the smart folks at Teamprise HQ. I am looking forward to spending some time face to face with people I've been telecommuting with for the past few weeks. Also, on Saturday I'll be traveling over to VS Live in San Francisco. If you happen to be around, feel free to pop by the Teamprise stand and take a look at what we've been busy doing for the past few weeks / months. Using Teamprise from Linux or Mac OS X still gives me an excited rush of feeling I'm doing something very naughty that just shouldn't work as well as it does.

Right, I'm off to get some food and then some bad, jet-lag interrupted, sleep. You know, the next time I'm offered, I might go for the beef option. Why not - live life on the edge...

Teamprise Webcast

If you've been wondering what I have been up to lately, then make sure you sign up for the following MSDN Webcast:-

MSDN Webcast: Accessing Visual Studio 2005 Team System Using the Teamprise Plug-In for Eclipse (Level 200).

Find out how you can use the Teamprise Plug-in for Eclipse to access the source control features of Microsoft Visual Studio 2005 Team System from within the Eclipse integrated development environment (IDE). In this webcast, we show you how to add new Eclipse projects to a Microsoft Visual Studio 2005 Team Foundation server, import existing projects from Team Foundation Server into Eclipse, and keep projects synchronized. We also look at the Teamprise Explorer client on a Linux virtual machine.

Presenter: Corey Steffen, General Manager, Teamprise (my boss).
Time: 8pm GMT

VSTS vs VSS - The Numbers

In my talk at the Belfast Launch Event, I gave some numbers of the differences that we had found when migrating our source from Visual Source Safe to Team Foundation Server Source Control. Since then I've had a couple of emails asking for them again, so I'm including them in this blog post for posterity.

Note: You might not get the same improvements, this was just my experience on using VSTS across a WAN.

Netgear WiFi Skype PhoneLike buses, you wait for ages then two come along at once. Following a wave of Skype announcements at CES, Creative have announced a new Skype phone. Unlike previous offerings, this one does not need a computer to make Skype calls but can do it all from the phone with a wired network connection. Then Netgear came out and trumped that with the announcement of a 802.11g WiFi enabled Skype phone that looks a lot nicer and can be carried anywhere inside the house, or other WiFi hotspot. Details on both devices are still sketchy but they should be available Q2 next year. The Netgear device might be just what I am looking for to get Skype past the wife acceptance boundary.

Bill Caputo on Stubbornness

A nice post to start the day from Bill Caputo. I know he doesn't think of himself as an XP evangelist anymore, but I like to think of him as the Pragmatic Evangelist.

The Guntlet

| 1 Comment

Buck Hodges recently posted about a problem with locks based on files types and shelving in VSTS Source Control. In the post he mentions a system called Gauntlet that is used internally in some teams at Microsoft.

The Gauntlet system is very interesting to me. I've never seen it in action and have only had snippets of conversations with Microsoft people (and I have to say mostly it is them moaning about it).

From Buck's article, Gauntlet runs by processing a queue of shelvesets. (A Shelveset is a great new feature in VSTS Source Control where you can save your code on the server but outside of the main source tree - you can think of it a bit like a temporary working branch - but see Chris Rathjen's post Is Shelving just a fancy word for branching? for more)

Anyway, each shelveset is processed, and providing the code does not break the build (i.e. compiles, passed static code analysis and unit tests) then it is added to the main source tree.

To me, this is Continuous Integration by another name. Many people are using CruiseControl (and CruiseControl.NET) to acheive the same benefits but the Gauntlet has some additional benefits:-

  • The code is not committed to the main branch until it is proven by the server that it will not break the build.
  • Main branch build and labels can be reserved for "integration builds" or releases - that way you can very easily provide the users of that build with a list of differences between the builds

The downsides seems to be:-

  • More complicated development process, slowing down development
  • Increased time before a code change appears in the main branch
  • Complicated process discourages small incremental checkin-ins
  • When you submit your change, there may be a queue of changes being processed and one of those might break your code, no easy way of preventing this
  • Similarly, if you are relying on a change that then doesn't get passed the Gauntlet then odds are additional queued changes by you will also fail

Using an open source toolset, an equivalent process could be done by using patch files. It would be pretty painful with today's toolsets but could be simplified.

Like everything, you have to have a process that meets the needs of your organisation. Development is always a matter of control vs speed of delivery. Personally, I think CI in the traditional sense with CruiseControl strikes a nice balance in most organisations.

But if anyone in Microsoft land fancies describing Gauntlet in a but more detail and perhaps a quick pros / cons of using a similar process versus CI with CruiseControl (or MSBuild for that matter) I for one would love to read it.

It's probably obvious this one, but it took me a minute to figure it out. In VSTS source control, file version numbers do not go 1,2,3,4.. but they are versioned by the changeset number that the change was in. For example, I am currently looking at a file in my repository that has the following versions in its history:-

539, 538, 493, 451, 386, 4.

At first that is a little wired, but you get used to it. A changeset in VSTS is the transaction under which a commit to the source repository occurs. It can contain edits to files, renames (what everyone apart from Microsoft usually calls move), add, deletes, etc. Once you realise that all your check-ins to the source control are done in one atomic unit you start to understand how different VSTS source control is from VSS... (You also realise that there really is no excuse anymore for breaking the build in a CI environment)

Anyway, Somewhere during changeset 538 I did something to one of the 6 files that I modified that broke what I thought I was fixing in a non-obvious way (by non-obvious I mean we don't have a unit tests that covers it - yet). I want to restore the state of my source tree to before changeset 538, then go through my changes one by one to figure out which one is at fault.

I simply did a "Get Specific Version" and entered the changeset before the one I wanted (i.e. 537). I could have also entered the date and time this morning that I last synced my code repository if I wanted to get rid of all my mornings work.

Simple I know, but it's nice when something is easy...

Scott Guthrie has posted about a new web project type that will be available for VS 2005. I know quite a few people have been running into difficulties with the shipped way that web projects work in VS 2005 (especially when it comes to automating the build process outside of Visual Studio) and this new model sounds like an interesting hybrid.

While the model is interesting in itself, just wanted to say I also am really enjoying the new found agility, responsiveness and transparency at Microsoft - especially from the DevDiv guys.

The Software Lifecycle Blog


[Via Rob] Some smart folks over at Avanade have started blogging about the Software Lifecycle (being Avanade, you'd expect this to be heavily focused on VSTS and it is). If anyone is going to be getting serious about using VSTS "out there" then you'd expect these guys to be bleeding edge. Anyway, so far the contents looks pretty useful - much better than the drivel you will find at this blog. Also, I know at least one of the guys is a fan of obscure British television comedy so he deserves respect!

[Via Rob] Dave McKinstry has recently posted about his Approach to Process Customization with TFS. While I have been practising my work item definitions on a scratch project inside a team system VPC before applying them to the production box, he lays out a good process to help you avoid mistakes.

Now if only there was a nice tool that followed this workflow but did all the global search / replaces for you. Another project for the back-burner me thinks.


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