17 Nov 2016


Presenting at the Microsoft Developer Event 2016 in Sydney

Satya in Sydney

Yesterday, I had the privilege to be one of the presenters at a half-day developer event in Sydney, Australia. The event included an opening keynote by Microsoft CEO, Satya Nadella who spoke about empowering developers to shape the future with an intelligent cloud platform and artificial intelligence.

This was probably the biggest audience I have presented to to-date with over 1,300 developers registered to attend the event.

SydDev01SydDev02 SydDev03

The focus of my presentation was DevOps using Visual Studio Team Services (VSTS) and Team Foundation Server 2017 (TFS). Here are some links to more information on some of the topics I demonstrated.

At the Microsoft Connect(); 2016 conference in New York today, Microsoft announced the immediate availability of TFS 2017. You can find the download links on Brian Harry’s blog post.

17 Nov 2016


Microsoft Virtual Academy–Applying DevOps to your VSTS Extensions

Following the MVP Summit in Redmond last week, I got the opportunity to record a short training video for the great folk at Microsoft Virtual Academy. My presentation was the final part of a 3-part series covering creating VSTS/TFS Extensions.

It was awesome to be able to present beside Donovan Brown, Senior DevOps Program Manager and Willy-Peter Schwaub, Visual Studio ALM Ranger Program Manager. While the video was only a short one, ~30 minutes, we still had a lot of fun recording it.


The videos have not been published yet but I will update this blog post as soon as the links are available.

8 Aug 2016


A Raspberry Pi3 VSTS Build Light-Part 4, some finishing touches

In this fourth and final blog post on the Codify VSTS build light, I’d like to share some finishing touches I have applied to the build light to make it more robust for demonstrations as well as a little more portable.

If you’ve not read my previous posts in this series you can find them here.

A Raspberry Pi3 VSTS Build Light–Part 1, the hardware

A Raspberry Pi3 VSTS Build Light-Part 2, installing Windows 10 IoT Core

A Raspberry Pi3 VSTS Build Light-Part 3, installing the Codify VSTS Build Light software

After completing the first three blog posts and taking the Codify VSTS build light to a few user groups to demonstrate, I realised I need a more durable case as well as a way to plug and unplug the lights and power for travel.

The stock cases I could find from the usual Raspberry Pi online stores didn’t really protect the Codify board so I went looking on Thingiverse to see if someone had a suitable design for a case that I could 3D print. I found a design by UltiArjan which was a remake of a design by 0110-M-P. The case looked promising so I did a remake of this case to suit the two wire terminal blocks on the Codify board and also added a thin cover over the micro USB port usually used to power the Raspberry Pi.

I then loaded up my 3D printer with purple filament (for Visual Studio of course) and went to work. The result is a custom fit case that can survive both office environments and travel for demonstrations.

28 VSTS Build Light Cases

One of my other issues was the inconvenience of having to use a screwdriver if I wanted to remove the power of the light strip for travel. That was solved with the addition of two pigtails – one for the pwoer and another for the light strip.

29 Case including pigtails

I’m sending a few of these cases out to friends and people who have asked for them. If you would like a case, please contact me through the contact form on this blog. I can send you the STL files if you want to print your own or for the price of a roll of filament + postage, I’ll send you one.

Here are the steps to assembling the Codify VSTS build light in this case.

Step one, we start with the case, the Raspberry Pi and the Codify board. I’m including all the necessary screws and spacers in the case when I send them out.

30 Getting Started

The next step involves placing the Raspberry Pi board into the white part of the case and securing the board with a single screw in the back corner. (Diagonally opposite the ethernet port)

31 Installing RPi

You then need to add the Codify board. Don’t push it all the way down onto the pins yet.

32 Add Codify Board

Now you need to gently add the white plastic spacers between the Raspberry Pi board and the Codify board. Once these are in place you can screw the board down into the white case.

33 Add Spacers

In this close up below you can see where I have put a thin cover over the micro USB port port that is usually used to power the Raspberry Pi. You may recall from a previous blog post in this series that the Raspberry Pi is powered by the 12 volts going into the Codify board. As a result you should not connect the Micro USB port to a power supply.

34 notice USB Cover

You’re now ready to sit the white case onto the purple wall plate. The wall plate serves three purposes. Firstly it provides a convenient way to mount the case on a screw in any of four orientations. Secondly, it provides extra space between the white case and the wall or table to help with airflow/cooling of the Raspberry Pi. Thirdly, it has the nuts embedded in the wall plate to allow you to screw everything together.

35 Place on to of wallplate

Now you’re ready to put the largest part of the case on top and screw it all together.

36 Add top case

Once it’s all together here is the key to help you insert the appropriate wires into the terminal block.

37 Easy access to terminal blocks

I’ve added holes in the top of the case to allow you to get a small screwdriver into the terminal blocks to secure the wires.

38 Easy access to screws

Here’s a photo showing the nuts embedded into the wall plate.

39 Nuts are embedded in wallplate

Congratulations!  You’re Codify VSTS Build Light is in its new home ready to give you the good or bad news about your latest builds.

40 All finished

20 Jul 2016


Deleting a TFS workspace from the command line

Today I had need to explicitly remove a TFS 2015 workspace. I was troubleshooting a build and wanted to completely remove any workspace the build service might be using.

I did this from a new TFS 2015 Build Agent machine (non-XAML) that had VS2015 installed as well. The process I used to do this was as follows.

1. Open a developer command prompt

2. Get a list of all workspaces (you can refine further if needed)

tf workspaces /server:http://{TFSServername}:8080/tfs/{CollectionName} /owner:*

This will return a list of all workspaces including the Owner of the workspace. Find the name of the workspace you want to delete and also pay attention to the owner name.

3. Use the following command to delete the specific workspace. (NOTE: The command above uses “workspaces” while this command uses “workspace” not the plural form)

tf workspace /server:http://{TFSServername}:8080/tfs/{CollectionName} /delete “{workspacename};{owner}”

In my case, I was looking for a workspace used by the new TFS 2015 Build Agent. This meant I could specify the workspace owner as “Project Collection Build Service” which was the scope I was using. This reduced the list of workspaces significantly which made it easy to find the workspaces I wanted to delete.

This was the exact command line I used as an example.

tf workspace /server:http://TFS:8080/tfs/DefaultCollection
/delete “ws_1_2;Project Collection Build Service”

If I had been scoping the build to just the Team Project, I would have used the “Project Build Service” instead.

25 Jun 2016


A Raspberry Pi3 VSTS Build Light-Part 3, installing the Codify VSTS Build Light software

In this third blog post in this series, I’ll walk you through getting the Codify VSTS Build light software installed and configured.

I’m running Visual Studio 2015 Enterprise edition with Update 2 on my laptop but you can download and install  Visual Studio Code if you prefer. (It’s FREE)

You’ll need the Universal Windows Platform Tools and Windows 10 SDK installed. If you don’t have this installed on your machine, you will be prompted to install it when you open the Codify Build Light solution.

VSTS Build Light - Addins for VS2015

Getting the software

I’m going to head over to https://github.com/Codify/build-light to download the software for the VSTS Build Light.  We’re going to choose fork the repository so that we have our own personal copy that we can use to maintain our own version of the code and/or submit pull requests with fixes and/or enhancements. I’m sure the Codify guys would absolutely love any updates and enhancements you’d like to contribute.

Folk Repository

Now we want to access the solution locally using Visual Studio. I already have the GitHub Extension for Visual Studio already installed in Visual Studio. Installing this extension provides the capability to connect to your GitHub account from the Connect Hub in Visual Studio.

1. Start Visual Studio
2. In the Team Explorer window, click the Manage Connections button in the toolbar.
3. In the GitHub section, click Clone
4. Sign into your GitHub account if prompted.
5. Select the fork from the list, optionally specify a path, then click Clone

You now have a copy of the repository locally.

6. At the top of the Connect hub you can click the hyperlink to Open an existing project or solution.
7. Locate the Codify.VisualStudioOnline.BuildLight.sln file and click Open.

At the time of writing, the solution contained two projects. This may change over time.
* The Codify.VisualStudioOnline.BuildLight project is “version 1” and can monitor a single build in VSTS.
* The Codify.Vsts.BuildLight project is a new WORK IN PROGRESS version of the project that can monitor multiple builds in VSTS.

For this project, I’m going to go ahead and install the Codify.VisualStudioOnline.BuildLight application onto the Raspberry Pi. Leave Visual Studio and the solution open for now and move onto the next section.

Getting the Raspberry Pi ready

1. Get your Raspberry Pi (with the Codify board) turned on and on the same network as the computer you’re running Visual Studio on.
2. On my laptop, I’m going to start the Windows 10 IoT Core Dashboard. This will allow us to find the Raspberry Pi device.
3. In the IoT Dashboard you should see your Raspberry Pi device. Take note of the IP address for your device.

VSTS Build Light - Shown in IoT Dashboard

Deploying the code from Visual Studio

1. Return to Visual Studio where you should still have the Codify solution open
2. In Solution Explorer, right-click the Codify.VisualStudioOnline.BuildLight project and click Properties from the context menu.
3. Click the Debug tab and look in the Start Options section.
4. Set the Target Device to Remote Machine
5. Enter the IP Address of your Raspberry Pi
6. Set the Authentication Mode to Universal.
7. Save the changes you have made.
8. In the standard toolbar, make sure Codify.VisualStudioOnline.BuildLight (Universal Windows)  is selected.

Deploy BuildLight software from VS

9. Click the Remote Machine button to build and deploy the application code to your device. You should notice that the deployment automatically downloads any missing frameworks that area required.


Once the application has been deployed to the Raspberry Pi, you can set it as the default application so that it starts every time you tur on your device.

Configuring security for the connection to VSTS

The first thing we need to do is setup Alternate authentication credentials in our VSTS account. Hopefully the application will be updated to use Personal Access Tokens (PATs) soon as the Alternate authentication credentials is being phased out.

1. Open your browser and navigate to your VSTS account. Eg. yourname.visualstudio.com
2. Log into your account if requested.
3. Click your username in the top right-corner of the window and choose My Security.

Click My Security in VSTS

4. Click Alternate authentication credentials in the panel on the left.
5. You will need to check the checkbox to enable alternate access credentials and then provide a username and password. This access will have your user rights so make sure you use a strong password.


6. Click Save

Now you’re ready to go back to your Raspberry Pi.  This next step requires you to plug in a USB mouse, Keyboard and monitor using the HDMI port.  If you’re using a Raspberry Pi 3 you could also use the remote desktop experience to do this remotely which is much more convenient.

Configuring application settings and starting to monitor

Now that we have the application on the Raspberry Pi and permissions configured we’re ready to configure the application to connect to Visual Studio Team Services and select the build we want to monitor.

When you boot up the RPi with an HDMI monitor, you’ll see the configuration settings screen. If you don’t see this you can click the 3-cogs icon in the top left corner to display the dialog you see below.

1. Enter your VSTS account alias. This is the URL you use without the .visualstudio.com on the end.
2. Enter the username and password you chose when you enabled alternate access credentials.
3. Enter the Team Project name and the name of the Build definition you want to monitor.
4. You should leave the pin values the same as you see them below in the screenshot. (Red:18, Green:22, Blue:24)
5. Click Save and then click the Start button on the right. (Not shown in screenshot)

VSTS Build Light - CodifyAppSettings

CONGRATULATIONS!  You should now have a working VSTS Build monitor.

Other post in this four part series include

More Posts