January 2007 Archives

Free TMobile WiFi on Vista

Over the next few months I'm going to be doing a bit of traveling to the US again, and this offer could not have come at a better time - free TMobile access from my Windows Vista Laptop - sweet!  I'll post back when I have been through the sign-up process to see what validation it does of your Vista running status, I hope for their sakes that it is a little more than a User-Agent check...

Update: Sadly for them, they are simply doing a user-agent check. This offer may run out pretty quickly so sign up now if you can...

I'm getting really excited about the next CTP for the next release of Visual Studio (Codenamed Orcas).  Not only will previews of some great new features in Team Foundation Server be coming along, Scott Guthrie just announced a bunch of changes to the web designer editor in Visual Studio.  Reading Scotts post it looks like the Visual Studio editor has now got nearly all the features you would want, including ones I was used to from static page and JSP development using Dreamweaver.  Orcas is shaping up to be a very exciting release!

iTunes 7.0.2 on Vista


So, next on my list was to get iTunes working so that I can easily feed my podcast addiction.  I am very nearly at the point of purchasing a new MP3 player so I am ready for any excuse to tip me over the edge.  Anyway, to get iTunes 7.0.2 to work correctly on Windows Vista RTM, I had to run the application as an administrator.  It only seems to need to run as administrator to get iTunes to Sync with my iPod, but as that is the only reason I run iTunes it is kinda handy.  This gave me the change to make my first foray into the world of the Program Compatibility Wizard.

Control Panel Searching.Step 1:  Press the Windows Globe (or press the windows key on your keyboard) and go to Control Panel.  In the search dialog, type "compat".  Click on the link "Use an older program with this version of Windows".

Step 2:  Press Next

Step 3: Select "I want to locate the program manually" and press Next

Step 4:  Type the program location or browse for it.  Mine was in "c:\Program Files\iTunes\iTunes.exe" which is the default install location for iTunes.  Press Next

Step 5:  Select "Do not apply a compatibility mode" and press Next

Step 6:  Press "Next" on the display settings screen, nothing needed to be changed here

Step 7:  Finally.  Check the box "Run this program as an administrator" and press Next.

Step 8:  Press Next again and confirm that everything works as expected, then save the settings. 

There we go.  Hopefully they'll be a Vista compatible version of iTunes soon.

I'd been having trouble getting Visual Studio Team Suite up and running on my new vista install.  I was assuming it was something nasty in the long winded installs of Visual Studio Team Suite, Team Explorer, SP1 for both and the Beta of the Vista GDR for Team Suite.  Every time I tried to start Visual Studio, I got the following error:-

"An error has occurred while trying to access the log file. Logging may not function properly".

Luckily for me, Gabriel Lozano-MorĂ¡n posted the solution over on the MSDN Forums - turns out that I had installed a Visual Studio Plug-in as part of my VMware Workstation 6 Beta.  I didn't really want this plug-in from within Visual Studio anyway, so I re-ran the VMWare setup and removed the plug-in.  All is now working just fine.  Thanks Gabriel !.

Windows Mobility Center, get it by pressing Windows-X I was having trouble getting my external monitor to work properly.  The NVidia Quadro FX Go1400 installed in my Dell Precision M70 is quite clever when it comes to auto-switching and automatically selecting the best resolution.  However, Vista was also trying to be clever and the two collided.  Anyway, to cut a long story short, I stumbled upon the Windows Mobility Center which is a handy place for laptop owners.  Pressing the Windows-X key brings this up instantly and you can turn your Wi-Fi On/Off, mess with external monitor configuration etc etc.  Not exactly rocket science, but it'll add it to my short list of Windows key shortcuts that I actually use.

I've moved to Windows Vista

| 1 Comment

Well, the time came.  I got too jealous of everyone with Windows Vista and decided to upgrade myself.  Before I start complaining, the reason I installed Vista on my main dev box is because I like it.  I like the fact I use the mouse less.  I like the fact I get prompted when things want admin status.  I like the fancy UI.  I like the faster start-up times and the additional support for mobile users.  I upgraded to Vista because I like it.  It runs great on my Mac Mini so I decided to bite the bullet and see what it is like to run on day in day out.

However, an upgrade before the official consumer launch means that I knew it was going to be painful.  So much so that I actually bought a new hard drive for my laptop and installed Vista on it.  My dev machine is vitally important to me so I wanted to make sure I could roll back quickly at any point.  I took the opportunity to upgrade from a 60Gb drive to a 100Gb drive at the same time as I'm guessing that I'm going to have to use a Win XP virtual PC image quite a lot for the forseeable future so that I can test / reproduce problems with software in XP.

I started the upgrade on Saturday so that I would be productive again by Monday morning.  The actual install of the OS went very well, by far my easiest install of Vista to date.  I have a Dell Precision M70 and my Windows Experience Index is 4.1 - constrained by the CPU which is a Pentium M 2.26Ghz.  My new hard drive got a 5.0 and my Aero experience got a 5.9 from my NVidia Quadro FX Go1400.  Eclipse and Teamprise all installed just fine and worked with no problems so I knew I was good to start work Monday morning.  I've created a new category on my blog called "Vista" in which I'll post my trials and tribulations as I use the OS day in day out as a Team System developer.

The World's Smallest TFS?

Dave Glover has held onto the title of world's smallest Team Foundation Server instance since August 2006.  However, I have a confession to make. 

On Tuesday I was doing an MSDN webcast demonstrating the Teamprise plug-in.  We have a bunch of TFS test instances over in our head office in Champaign, but I was doing the webcast from my office in Northern Ireland.  I was a little worried about running live meeting, routing my VoIP phone call and also accessing a test TFS instance over the VPN back into the office all on my 2Mb ADSL connection so I figured I would play safe and talk to a local instance of TFS.  Normally I talk to one running on my laptop - however, I had a spare machine sitting on the desk right next to me that I can connect to over my Gigabit Ethernet.  It is dual core with 2GB RAM and 120GB hard disk just sitting idle - so I figured I would put TFS on it.  The machine worked a dream, and the demo passed off flawlessly (well, apart from a few presenter glitches, but you can't blame TFS for that).  This was a little surprising for me, as the machine in question was my Mac Mini...

Team Foundation Server running on an Intel Mac Mini

Courtesy of the good folks at SizeEasy.com here is a comparison between my Mac Mini, Dave Glovers Mini ITX system in a Morex 3888 case and a can of pop.

Size comparison from SizeEasy.com

Now, I cheated a little bit.  Rather than installing a clean version of TFS (with all the pre-requisites such as Windows Server 2003, SQL Server 2005 etc) I simply dropped in a test VMWare image that I normally use for demos into a beta version of VMWare Workstation 6 that I had installed on the Vista partition of my Mac Mini.  I'm not sure if virtualized instances count in the World's Smallest TFS Server book of records, but maybe now you can see why I was surprised when it worked so well :-)

Reminder: MSDN Webcast on Teamprise

Well.  I've had the pleasure of clashing with some great presenters in my time - but today I have the opportunity to clash with the great Zen master of presenters - Steve Jobs doing the keynote at MacWorld 2007.  If you are not listening to Mr Jobs speak then why not go for the second best option and come and watch me demo Teamprise :-)  If you do happen to be at MacWorld or you have some other reason to miss my webcast live then you'll be able to watch a recording of it:-

MSDN Webcast: Accessing Visual Studio 2005 Team Foundation Server Using the Teamprise Plug-in for Eclipse (Level 200)
60 minutes
Start: Tuesday, January 09, 2007 9:00 AM Pacific Time (5pm GMT, Additional Timezones)

The presentation is light on slides and I'll spend most of the session showing off the Teamprise plug-in for Eclipse V2.0 along with Teamprise Explorer 2.0.

Update:  The link above will now take you to the recording which should stay up for a couple of years or so.

If (like me) you are using the tf.exe command line to access your Team Foundation Server via a Version Control Proxy from a remote office, then the following tip is extremely useful - much more so than my previous registry hack

There is currently no option with the Microsoft command line to pass a version control proxy server in to TF.exe.  It will pick one up if you have one set in the registry if you have used the Team Explorer GUI - but that isn't great for scripted scenarios.  James Manning recently pointed me in the direction of an undocumented environment variable called TFSPROXY.  If set, the TFS client will use that setting to proxy your requests.  Therefore the following will call tf.exe passing a proxy server to use in your connection:-

@echo off
set TFSPROXY=http://your_proxy_server:8081
tf %*

I saved this in a batch file called "tfvp.cmd" (for "tf via proxy"), therefore if I want to call tf via my proxy and I'm in a shell that doesn't have the environment variable set I can call my script.

The only command that this really useful for is when doing a tfs get command, as only the download is sent via the version control proxy server, the majority of requests go direct to the main Team Foundation Server application tier that you are connected to.

By the way, if you are using the Teamprise command line client then you can use the /proxy:http://your_proxy_server:8081 argument to specify a proxy server to use for the connection, I've just logged a bug so that we will also accept this undocumented environment variable, but we'll make it so that passing one explicitly will override any picked up from the environment variable.

I'd been seeing this for a while now, the game of Blogtag has been running riot over the internet.  Blog memes are kinda like the blog equivalent of a chain letter or a pyramid marketing scheme but very slightly less dumb and hopefully have more positive consequences.  Goodness know what it does to the Google pagerank algorithm.  Anyway, last night I was tagged by Eric so here goes mine...

  1. I used to compete in county cross-country championships for my school
  2. I once spent a summer working as "Temporary Brand Marketing Secretary" for Reebok UK, dealing with everything from letters from school kids wanting free posters to sponsored athletes wanting free shoes to directors of football clubs (wanting significantly more) through to making cups of tea and coffee and doing the typing of 5 demanding marketing managers
  3. I am a qualified fork lift truck driver
  4. I have a bachelors degree in Physics from the world renowned Physics Department of the University of Durham.  My final year research projects included measuring the proper motion of nearby stars using data from my own observations and data from the Hubble Space Telescope.  My final year was also spent designing and building a magnetic field imaging device - after building the hardware and controlling electronics, I wrote the controlling and imaging software in QuickBASIC because Windows 3.1 based development environments (such as Visual Basic) didn't have any good way of directly driving the parallel and serial interfaces of the computer at the time without delving into the device driver level which was (and still is) well beyond my programming skills.  In my spare time, I was the manager of the St Chad's College JCR Bar and also set up the initial versions of the college and JCR web sites that are still used to this day (but have been totally re-written thank goodness).
  5. Despite appearances, I do not like pies.

On to the fun part - picking 5 more people to tag.  I choose Rob Caron, Lorenzo Barbieri, Rob Burke, Buck Hodges and James Manning.  Let's see how many of them actually read my blog.

Update:  I was later tagged by Jay Flowers, so I'll allow this post to act as a bridge between two branches of the same meme.  At some point I might map all the links out into a pretty "5 Things" picture, but if I do you'll know I've far too much time on my hands...

Why have Keyword Expansion?

| 1 Comment

Every source control system I have worked with until recently supported keyword expansion.  My code comment blocks have always tended to be something like (in Java):-

* Description. * @author $Author: martin $ * @version $Revision: 12 $ $Date: 2007-01-02 16:15 $ */

The source control system updates the block in-between the $tag: $ on check-in and that's just how it works.  Over time, I standardized on author, version, date because that is what was common between all the major SCM tool vendors and things like the history tag just got in the way.  Keyword expansion did have it's downsides thought, the main one is that it always gave you problems when diffing and merging files and had the habit of giving you un-necessary conflicts to resolve.

I say that every source control system "until recently" supported keyword expansion.  Over the past couple of years there has been a notable exception - the version control provided by Team Foundation Server does not have this capability.  I found this very surprising at first - just because I expected to have them at my disposal, I never stopped to ask why I wanted them.

The reason why I used to want them was because I used to review code by printing it out on candy stripe paper and taking it along to a code review meeting.  Also, my source control tool was always a separate (frequently hard to use) application that meant me swapping tools and then finding the file I was working on in that separate application when all I wanted to know was to who to talk to about the line of code I was looking at.  I'll admit that was in the days when I did all my coding in PL/I with the odd sprinkle of JCL - but still.  It was awfully handy for the source control system to help you keep your comment blocks up to date, to tell you who was the last person who touched the code, therefore the first person you spoke to if your suspected the code was broke.

Now-a-days, it is rare that a single person "owns" a file.  If they do, you get a much better idea of what has happened by looking at the history.  As all this is nicely integrated inside the IDE, checking the history is a matter of right-clicking on the file in the IDE and selecting "History", I don't have to jump tools, re-navigate to find files etc.  With diff between versions and annotate functionality I can easily see who did what and when, what other changes they made at the same time and what work items they linked all this stuff too.  Maybe keyword expansion was just a solution for a problem I no longer have (except possibly when dealing with Stored Procedures, but IDE integration has come a long way there recently).

Yet I still miss it.  Does anyone out there have a reason why they *need* keyword substitution as part of their software development process, or is it just one of those things that you've always done that has long lost the value?

On Tuesday January 9th, I'll be doing a short MSDN webcast to demonstrate Teamprise 2.0 in action.  If you haven't yet seen a demo of Teamprise or have some questions that you've been wanting answered then please sign up.  I'll be concentrating on our Eclipse plug-in but I will also show a little of Teamprise Explorer 2.0 and the command line tools.

MSDN Webcast: Accessing Visual Studio 2005 Team Foundation Server Using the Teamprise Plug-in for Eclipse (Level 200)
60 minutes
Start: Tuesday, January 09, 2007 9:00 AM Pacific Time (5pm GMT, Additional Timezones)

If you can't make this time then the event will be recorded and I'll post details of the recording as soon as I have them.

Update:  The link above will now take you to the recording which should stay up for a couple of years or so.


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