Wednesday, September 25, 2013

Signing up for Visual Studio Online (cloud-based Team Foundation Server)

October 3, 2014: updated to reflect Microsoft's rebranding and subsequently changing the name of Hosted TFS to Visual Studio Online. Additionally this posted was updated to reflect the prices of Visual Studio as of October 3, 2014.

This article introduces Microsoft's cloud-based Team Foundation Server (TFS), Visual Studio Online. Signing up for Visual Studio ONline will be demonstrated as will how to access this cloud-based TFS from Visual Studio 2012.


Visual Studio Online is free for up to five users -- at least for the present (as of September 2013). This cloud-based version of TFS supports source code control, bug/work-item tracking and project management. More importantly, this service places your source code in an environment where Microsoft will provide, free of charge, complete source control backup. Developers can access source code remotely using a standard Microsoft accounts. The URL used to access an instance of Visual Studio Online is of the elegant form (a vanity URL):

A classic use of Visual Studio Online came when I started working at a firm that was using SVN. The server hosting SVN was an older PC, running Linux, setup by a developer who was no longer at the firm. The company used outsourced IT and the SVN host was rarely backed up if ever. There were five developers on the team. In order to access SVN remotely developers had to access the company's incredibly slow VPN. Visual Studio Online was an easy sell in this environment.

Signing up for Visual Studio Online

Signing up for Visual Studio Online is straightforward. If you already have a Microsoft account (,,, etc.) skip to Step 2. You can also skip to Step 2 if your work email address is already mapped to be used as a Microsoft account. It is important to note that your Microsoft account will be the initial administrator for Visual Studio Online. Other administrative rights can be assigned once signup is completed.

Step 1: create a Microsoft account. You can use your work email as Microsoft account name and sign up at or just create an email account at

Step 2: in Internet Explorer (when working with Microsoft service, IE is often the best choice of browsers) navigate to

Step 3: clearly shown on this page is the "Sign up for free" button which should be clicked on.

Step 4: pick the name for your source code vanity URL where below I chose to name my source code control after software pioneer Admiral Grace Hopper:

Step 5: click on "Create Account" which will display the log in screen for the Microsoft account.

Step 6: sign in using your Microsoft account. You may have to provide additional information as Microsoft validates your account.

Step 7: create a project by clicking on "New team project".  Below the new project name was MarkI after the computer Admiral Hopper first developed software on:

Step 8: clicking on "Create project" will create the project within TFS. Remember that Visual Studio Online provides process management capabilities so for "Process template" the template, "Microsoft Visual Studio Scrum 3.0" was selected (the default value).

Step 9: from the previous screen click on "Navigate to project":

Step 10: click on "Manage all members..." in order to add your coworkers as TFS users. Make sure your coworkers have created Microsoft accounts so they can be added to TFS as users.

Access Visual Studio Online from Visual Studio

Once Visual Studio Online has been setup, Visual Studio can be used to utilize this free source code service. In support of this, Visual Studio (below Visual Studio 2012 is shown) contains a Team menu item:

When the Team is selected the user is given the option to "Connect to Team Foundation Server":

Click on "Connect to Team Foundation Server" reveals rather indirectly the "Team Explorer - Connect" view:

Under "Team Foundation server" select the Connect link button which displays the "Connect to Team Foundation Server" dialog:

From the "Connect to Team Foundation Server" dialog, select "Servers" which displays the "Add/Remove Team Foundation Server" dialog:

From the "Add/Remove Team Foundation Server" dialog, select "Add" which displays the "Add Team Foundation Server" dialog:

In the "Add Team Foundation Server" dialog, add the name/URL of your TFS location which for the purposes of this article was: Click on "OK" which prompts users to enter their Microsoft account credentials which allows them to access TFS:

Once a user is logged in they are returned to the "Add/Remove Team Foundation Server" dialog:

Clicking on "Close" to close this dialog returns the users to the "Connect to Team Foundation Server" dialog which now lists the "Team Projects" that include the MarkI project. This project was previously created via the Visual Studio Online web site:

From this screen the MarkI project can be checked following by clicking on the "Connect" button which closes the "Connect to Team Foundation Server" dialog. The connection to TFS is established along with a connection to the MarkI project.

To access source code control select the sub menu item: View | Other Windows | Source Control Explorer:

Clicking on the "Source Control Explorer" sub menu item displays the "Source Control Explorer" dialog:

Right clicking on the MarkI project shows what is expected, access to source code related functionality:

Visual Studio Online from Microsoft is a fantastic service given that it is free for up to five users with access to source code control. An unlimited number of Stake Holder users (accessing to bugs/tasks) is supported Visual Studio Online (cloud hosted TFS): Unlimited (no cost) users can Create/Access Bugs/Tasks. To find out more information on project navigate to the Visual Studio Online web site ( and select the "Pricing" menu:

The pricing menu displayed is as follows:

From the pricing menu select "Overview of User Plans" which shows the pricing (as of October 3,2014):

Of note for any startup for small development firm is user plan "Visual Studio Online Basic". As stated previously (and above in the screenshot) five users with access to source code control (a.k.a. "5 users FREE"). Not mentioned in any of the user plans are the unlimited stakeholders.

Clicking on the Stakeholders buttons reveals an overview of the cost (free) and capabilities of such users:

Friday, September 20, 2013

Affordable Windows Phone 8 development (the Nokia Lumia 521)

The goal here is to develop software for Windows Phone 8 and not pay thousands of dollars a year. There is a cost to getting started in Windows Phone 8 development but developers can code for this environment for a reasonable cost.  $249.99 is all it should cost per-year to develop on Windows Phone 8. Let's break down the options.

The phone we all love, the Nokia Lumia 1020 is $199 with a two year contract from AT&T. The plan costs $39.99 per month for 450 minutes and $20 for 300 MB of data monthly (as of September 2013). Summing it all up, there is a cost of $1638.76 over the life of the two year plan.

Paul Thurrott's Super Site for Windows ( points out that the Nokia Lumia 520 can be purchased for $99 (In Praise of the Nokia Lumia 520) with no commitment. This phone could be used with WIFI only or could be placed on an AT&T GoPhone (pay as you go plan). You can get a GoPhone plan for $25 a month for calling (250 minutes per month) and $5 a month for data (50 MB per $5). It would be pretty reasonable to develop with such a phone and only turning on calling/data when it is required.

There is better alternative, the Nokia Lumia 521. The Lumia 521 costs $149.99 without a contract. For $100 you get 1000 minutes to use over an entire year -- Prepaid phones t-mobile. Text messages reduce the balance by 10 cents each message  For $30 per month you can get 100 calling minutes and unlimited web (the web is throttled after 200 MB of data access). Obviously with no data plan, the phone can be used on WIFI.

So for $249.99 a year it is possible to develop with Windows Phone 8.

If you are torn between the Lumia 520 and 521, has a great comparison between the two phones: Nokia-Lumia-520-vs-Nokia-Lumia-521.

The Lumia 520 and 521 are nearly feature equivalent. The Lumia 520 comes with a Qualcomm Snapdragon MSM8227 processor running at 1 GHz. The Lumia 521 comes with a Qualcomm S4 Plus Snapdragon MSM8227 processor running at 1.4 GHz.

The Lumia 521 makes a good phone for a kid (replacing their pricey, fragile screened IPod touch). A key application for the phone is Metro Talk ( Google does not provide a native Google Voice application for Windows Phone 8. Metrotalk supports Google Voice which means using WIFI text messages can be sent for free using the phone number associated with Google Voice.

With alternatives like the Lumia 521 and the Lumia 520, costs should be a barrier to Windows Phone 8 development.

Thursday, September 19, 2013

Visual Studio Online (cloud based TFS): Getting multiple labels using TF GET (without deleting the files associated with the previous TF GET)

This article presents how to pull source code from TFS using the TF utility. Pulling source code in this manner is the first step in automating a build. Rather than simply pulling one label from a collection in TFS, this article presents how to pull multiple labels.

As a developer, I am a big fan of Microsoft's hosted Team Foundation Server (TFS) which is free for up to five users: So for a project I work on, I was tasked with automating the build using PowerShell. Before writing any PowerShell script, I wanted to learn how to pull code using TF.

Within TFS, I created two team projects: ATest and BTest. I placed a single text file in each project. I created a label for each project ATest01 and BTest01 respectively. Project is the terminology used by Microsoft's hosted TFS. ATest01 and BTest02 are actually TFS collections.

I did not want to test with the production code from TFS simply because it takes too long to pull the code so two project each with one file seemed like an efficient development environment.

TF for Visual Studio 2012 is documented here: How to run TF is documented here: which explains how to open a Visual Studio console window.

The steps to get source code are;

1) Delete the workspace in case it was previously created by the build. Below we delete WorkSpaceATest and make sure not to prompt since this will be automated process:

tf workspace /delete WorkSpaceATest /noprompt

2) Create the workspace. Below we create the workspace WorkSpaceATest and again insure there is no prompt:

tf workspace /new WorkSpaceATest /noprompt

3) Map the collection to a folder and associate the mapping to a workspace. Below we map collection ATest to folder D:\ATest and associate this mapping with WorkSpaceATest:

tf workfold /map $/ATest D:\ATest /WorkSpace:WorkSpaceATest

4) Get the source code by specifying the label;
tf get /version:LATest01

The /version command-line option is used to specify a version number. By prefixing the label name with an L, the /version command-line option can be used to specific a label. The L prefixes the label ATest01.

Using the previous commands to pull the source code for the ATest and BTest collections is as follows:

tf workspace /delete WorkSpaceATest /noprompt
tf workspace /new WorkSpaceATest /noprompt
tf workfold /map $/ATest D:\ATest /WorkSpace:WorkSpaceATest
tf get /version:LATest01

tf workspace /delete WorkSpaceBTest /noprompt
tf workspace /new WorkSpaceBTest /noprompt
tf workfold /map $/BTest D:\BTest /WorkSpace:WorkSpaceBTest
tf get /version:LBTest01

As it turns out the "tf get /version:LBTest01" command deletes all the files for the ATest collection.

The command "tf workspace /new" created a new workspace and associates the current folder (c:\temp) with this workspace.  There is an error in the previous screenshot. The workspace WorkSpaceBTest was not created because the current directory (C:\Temp) was already associated with the workspace WorkSpaceATest. When the second "tf get" is invoked for label BTest01 all the files associated with label ATesst01 are deleted.

The trick here is to create each workspace while the script is running in a separate folder. Workspace WorkspaceATest will be created while the current directory is D:\ATest.
CD /D D:\ATest

Workspace WorkspaceBTest will be created while the current directory is D:\BTest.
CD /D D:\BTest

The resulting script to pull two different labels from TFS is as follows:
CD /D D:\ATest
tf workspace /delete WorkSpaceATest /noprompt
tf workspace /new WorkSpaceATest /noprompt
tf workfold /map $/ATest D:\ATest /WorkSpace:WorkSpaceATest
tf get /version:LATest01

CD /D D:\BTest
tf workspace /delete WorkSpaceBTest /noprompt
tf workspace /new WorkSpaceBTest /noprompt 
tf workfold /map $/BTest D:\BTest /WorkSpace:WorkSpaceBTest
tf get /version:LBTest01

I'd prefer a cleaner solution such as a way via the command-line to suppress "tf workspace /new" from associating the workspace with the current directory.