Getting Serious about Powershell

Powershell is what I would describe as a ‘stackoverflow language’. Its the kind of language that, as long as you’ve got some previous experience developing on Windows, you can just get started with by reading a few stackoverflow posts and copying and pasting a few code snippets here and there.

Very few developers out there take their Powershell skills and knowledge seriously and simply use it as a means to an end. This often results in messy, sprawling, untestable and unextensible collections of scripts which end up impeding rather than enabling development.

I have seen this in many teams I’ve worked in and I’ve been that Powershell stackoverflow developer. I experienced first hand the impeding nature this had on the development and release cycle but thankfully a while ago I started taking Powershell development much more seriously and started using lots of new and emerging technologies and frameworks to treat Powershell as a first class language. Here are my top tips of things you should be doing to if you want to start taking Powershell development seriously

Continue reading Getting Serious about Powershell


TFS Build 2015 (vNext) – Gated Builds

This post is part of a series of articles on the new TFS Build vNext System.

Using the old xaml builds we had the ability to perform gated checkins. This is only available for TFVC projects and not for GIT projects, mainly because this concept of gated builds uses shelvesets which are not applicable when using GIT.

With the new vNext build definitions, the concept of gated builds is gone from the triggers tab for both GIT and TFVC based builds.So what about gated checkins for vNext builds?

In TFS 2015 and Visual Studio Online we now have the ability to gate commits made to GIT and much more using a feature called branch polices. This functionality is only available for GIT projects currently, it will be interesting to see if and how Microsoft supports this for TFVC. I want to take a closer look at these new features.

Continue reading TFS Build 2015 (vNext) – Gated Builds

TFS Build 2015 (vNext) – Custom Tasks

This post is part of a series of articles on the new TFS Build vNext System.

So I’ve talked before about how the new cross platform build system in TFS 2015 and Visual Studio Online is fully extensible and allows you to create your own custom build tasks but it isn’t immediately obvious how to do it.

I’ll would like to walk through an end to end example creating a custom vnext build task to run a SQL script as part of the build

The tasks for build vNext are open source and Microsoft is accepting contributions so if you write a really nice and useful task it could be included in every Visual Studio Online account.

Continue reading TFS Build 2015 (vNext) – Custom Tasks

Visual Studio Online is now truly cross platform

Microsoft is doing a great job of embracing open source, cross platform technologies. Just look at the release of Visual Studio 2015, we’ve got first class support for python, node, android, iOS, cordova, the list is endless. The days of using Microsoft developer tools to develop code that only runs on Windows servers is over.

More than that, updates to Visual Studio Online made over the last few years, starting with support for GIT and now the new cross platform build system, have finally made the Visual Studio Online platform a real choice for non Microsoft developers.

Don’t believe me, well let me walk through an example how you can use Microsoft tools to create the full development infrastructure, from source control to build, test, deployment and hosting, to support a node.js project (or any other non Microsoft language actually) without ever coming across, using or interacting with a Windows Server or Windows operating system.

Continue reading Visual Studio Online is now truly cross platform

Arkanoid: Learning Javascript and Node

Its been long long overdue but recently I have been learning javascript. I’ve always thought the best way to learn a new language is just to dive in and start writing something and getting the code working, so that’s that i’ve done. With the help of these tutorials, I’ve written a version of the classic Atari arcade game, Arkanoid. Its written entirely in javascript and html5, no third party libraries or frameworks.

Play the live game at or check out the source code on github,


Continue reading Arkanoid: Learning Javascript and Node

TFS Build 2015 (vNext) – Pools, Agents and Queues

This post is part of a series of articles on the new TFS Build vNext System.

The old build controllers and agents have been replaced by a completely new system. The old xaml system of controllers and agents is still there but it sits side by side with the newer system. Lets see what is new in the new system and talk about how to set up a Windows agent and a Linux or OSX agent.


Build agents are the things that actually execute your builds. The big news about build agents in 2015 is that they now come in two flavors, a Windows build agent for Windows machines and a cross platform agent (written in node.js) that can run on Linux and Mac OSX. That’s huge it means for the first time we can use TFS to build xcode on OSX or Java on a Linux box using Maven or Android code etc etc, thats huge.

Continue reading TFS Build 2015 (vNext) – Pools, Agents and Queues

TFS Build 2015 (vNext) – Scripts and Variables

This post is part of a series of articles on the new TFS Build vNext System.

So as I talked about before it looks like the main way we will be able to customise our builds is to simply add a powershell script task to the build. We can create custom tasks if we like but for most build activities it will be enough to just add a powershell script. So lets say we have a set of unit tests that run against a database and we need to drop and recreate the database before the unit tests run. Here’s a simple example of how to wire in a script that does just that. Continue reading TFS Build 2015 (vNext) – Scripts and Variables