Business Software Gamification Part 1 – Introduction

I’ve been writing about the gamification of software for over a decade on various blogs, forums and newsgroups. In this time I have seen a massive uptake of the principles of game development in the learning/education industry, with many online learning providers now doing some kind of rewards/points system to motivate users. Any time you see points, achievements or levels on a professional development or education web site, you are seeing gamification at work.

Gamfication is defined as ‘the application of typical elements of game playing (e.g. point scoring, competition with others, rules of play) to other areas of activity’.

Recently, in one of the projects I’m working on, a situation arose where we needed to remove features from the product due to the amount of complexity these feature introduced. This resulted in a ‘lite’ version of the software, with many features disabled.

After making these changes, I considered why it was that the features we added (which were all asked for) needed to be removed.

The following scenario is how I think the situation arose.

Imagine you are providing word processing application for an experienced typist, who has never seen a word processor, and who has always done their work on a manual type writer.

You replace their typewriter with a a PC running an application that was heavily inspired by Word 2013. Never having seen a computer, or a word processor, they are immediately confused and intimidated by the number of features available. Buttons labelled ‘Insert Table’, ‘Format’, ‘Revisions’ and ‘Mail Merge’ are just far beyond where this particular user’s comfort zone ends.

‘I just want to be be able to type up letters, change some words to bold, or underline them, and print my work.” they exclaim. You can see where they are coming from, since you do all your word processing in notepad.

So you spend some time removing all the features you added to make your word processor ‘cutting edge’. ‘Insert Table’ – gone. ‘Styles’ – gone. ‘Insert Image’ – gone. What you end up with is a glorified notepad application – you feel a little disappointed removing all those features you worked hard for, but at the end of the day – it’s the user that matters.

Fast forward 2 weeks.

Your user comes up to you and says – ‘You know, I really like this new version of the word processor you developed. There’s one problem though. I’m a bit tired of using under-scores and dashes to display tabular data. It’s a nightmare if you need to add a column or another row. What I’d really like is to be able to automatically insert a table with specified number of rows and columns, so I can just focus on entering the data, and not having to re-format my document  all the time. It would also be really cool if I could just add columns and rows as needed’.

‘What??’ you exclaim. ‘I just removed that feature 2 weeks ago!’.

‘Well, add it back, please.’ you hear.

If this scenario sounds familiar, you know that users are not able to accept rapid changes to their way of working.

I’ve been a proponent of the gamification of business software for a long time, and I think the time is right for software developers to look at the the principles and elements of game software to improve the usability and engagement of business applications by applying the principles that make games, and more recently, learning software, more engaging, interesting, and user-friendly.


Visual Studio 2015 released, Azure MSDN credit increased and new pricing for VM instances

It’s been a busy couple of weeks since the last post.

First up, we were pleasantly surprised that Visual Studio Pro edition with MSDN now gives you $70 in monthly credits. At the same time, the pricing of VM’s was decreased. What this mean is that I can hopefully keep a small VM up and running for more than half the month without running out of credit.

Oh! And Visual Studio 2015 has been released! Aside from a few small issues, existing projects in VS 2013 should work just fine in VS 2015.

The only issues we encountered were related to installation and the Nuget package manager GUI. The latter issue was addressed in a hotfix, and has now been patched properly in an update. For information about the issue, follow this link:

A separate, much more serious issue was found in .NET 4.6, which can result in variables having incorrect values due to an optimization bug in the new .NET compiler (RyuJit). A detailed synopsis of the issue is documented here:

Overall, the release brings heaps of new features, better support for modern web development, and cross platform support, features I’ll be keen on trying out in the coming weeks.

Building it in the Cloud – Part 3


Now that we have a web app in azure, and have connected it to Visual Studio Online in the earlier posts (part 1 and part 2), it’s time to finish up this little project by checking out how the build and deployment pipeline works.

 Continuous Integration

Log into the Visual Studio Online account linked to you Azure subscription, and go to to our project, which should be available from the dashboard. Once you click on the project name, go to the ‘BUILD’ tab.


You can see the build definition created for you when the web app was linked to Visual Studio Online. You can also go to the ‘CODE’ tab to confirm that all your project files have been committed to Visual Studio Online’s Git repository.

Once that’s confirmed, we need to test the integration with our development environment. For that, let’s go back to Visual Studio 2013, open the project, and make a change. I’ve added an extra value to the Values Controller class.


Now we need to commit our changes to the local repository, and sync to Visual Studio Online.


If everything worked correctly, we should shortly see our changes on the production site, and our source code in Visual Studio Online. Let’s log back into Visual Studio Online, and check to see what has occurred after committing our changes.


First, in the ‘CODE’ tab, we can see that our changes were synced to the remote repository – the “value3” change is visible in the code explorer view.


Next, let’s check the ‘BUILD’ tab. Sure enough, there’s a new build there created a minute ago – it has a green tick, so the code was successfully compiled on the hosted build server.

Great, just a couple more things – let’s check the build logs, by right-clicking the build, and selecting ‘Open’.


And finally, we need to open our web site, go to the values API, and confirm that the changes are successfully deployed to production.



This series of articles has barely scratched the surface of the capabilities in Visual Studio Online. The next step is to schedule automated tests, set up deployment slots, and customize the build process.

However, I hope this brief look at Visual Studio Online’s features is enough to encourage you to look further.

Building it in the Cloud with Visual Studio Online – Part 2


Last week, I wrote about some of the reasons why you might want to use Visual Studio Online’s hosted build controller to build and deploy your Azure web apps. For small teams, or individuals, you can get all the benefits of a robust build server and continuous integration for your project, without the hassle of maintenance and administration. This week, I’ll build a simple MVC app, and configure it for source control and continuous integration using Visual Studio Online.

This guide is aimed at people who are somewhat familiar with Visual Studio and the basics of source control, but have not used Visual Studio Online or Team Foundation Server before.


You will need Visual Studio 2013 (any version), as well as an Azure subscription to complete this walkthrough.

Creating the project

I’m going to switch things around from the usual scenario for Visual Studio Online source control, where you are forced to start with a blank project and open it in Visual Studio – if you need to know how to do that, there are plenty of excellent tutorials, like this one at:

In many scenarios you will have an existing solution that you want to add to a new Visual Studio Online repository, and this is quite simple,  but not well documented.

First, let’s create a basic MVC web app in Visual Studio, and call the app VSOWebDeploy.


We will use the Web API template, and configure it to be hosted in on Azure, like so.


Once you click OK, you will be prompted to create the Azure Web App. The app name needs to be unique, and you will need to specify a resource group, or create a new one. For the region, choose one that is near to you, and you can leave the database option as ‘No Database’. After clicking ‘OK’ the web app will be created and ready to use.

Once finished, you should be able to run the application with Ctrl-F5, using the local IIS Express server.

Configuring the web app for Visual Studio Online

Now that we have an existing application, let’s create the Visual Studio Online account that will allow us to build the solution online.

First, log into the Azure Management Portal (, and create a new Visual Studio Online Subscription if yo don’t already have one. Go to “App Services\Visual Studio Online\Quick Create” to do this.

Select the URL (needs to be unique, e.g. <yourname>, the Azure Active Directory service and the Region closest to you, and click ‘Create Account’.

Linking the project to Visual Studio Online

For a brand new solution you can just click the ‘Open in Visual Studio’ link, and you’re ready to go. But there’s one extra step to link an existing solution to Visual Studio Online.

Basically, what I will be doing is using a local Git repository for the solution’s source control, and then pushing the master branch up to Visual Studio Online.

Go back into Visual Studio, right click the solution, and choose ‘Add to Source Control’. When prompted, choose Git as the source control provider.Choose Source Control

Next, you will see the Team Explorer – choose to see the ‘Changes’ screen, type a commit message, and click ‘Commit’ to commit the project files to local source control. At this point, your code is being tracked for changes, and the history is stored on your local drive, so let’s go one better and push those changes up to Visual Studio Online.

Click the icon in Team Explorer that looks like a power plug, and either select an empty team project, or choose to create a new team project. If doing the latter, you will be asked to supply a project name – type VSOWebDeploy  and click Create.

In a short while, the new project should be available for use. At this point, you will see a hint in the Team Explorer that you need to clone your repository to get started. This is pretty much what we need, so let’s click that link and clone our repository.

Here, it can get a bit messy, so you need to make sure you do things in the right order, or you’ll get error messages about merge ref not found, which basically means it can’t find anything to merge with.

You can resolve this in a number of ways, and if you are used to command line git, you can just force a push to the remote repository.

A simper way, though, is to go to ‘Unsynced Commits’, enter the remote repository URL, and click ‘Publish’. Your remote repository URL is in the form of https://{Your Account Name}{Your Team Project Name>} You can also find the URL by visiting your Visual Studio Online account, and going to the ‘Code’ link, if you have not yet synced to Visual Studio.

Linking the Web App to Visual Studio Online

Next, go to the web apps list, and find VSOWebDeploy in the list of Web Apps. On the dashboard, you will see a link to ‘Set up deployment from source control’.


You will be prompted to choose location of your source code – choose Visual Studio Online, to connect the project to a Visual Studio Online account.


After this, you will be asked to confirm the link, and that’s pretty much it – once linked, you can start using Git and Visual Studio Online builds publish your app directly from Azure, using the Hosted Build Controller.

When working on the code, make sure you remember to commit your changes regularly to the remote repository. By signing in to the Visual Studio Online account, you can explore the code, see a history of the commits, and perform various administrative tasks.

In the next post, I will finish up by setting up an automated build and continuous integration.

Azure Web Apps – Edit in Visual Studio

The ‘Edit in Visual Studio’ feature in the Azure Portal allows you to edit files on the live site, without needing to deploy or publish your app. It also contains some really useful tools for when you need to troubleshoot or configure your web app, and only have access to a web browser.

Follow these steps to enable the feature:

  1. Log into
  2. Select the Web App, and go to the ‘Configure’ tab
  3. Scroll down to the ‘EDIT IN VISUAL STUDIO’ setting and enable it
  4. Save the changes

Now you can go the DASHBOARD link of the Web App, and find the ‘Edit in Visual Studio Online’ option in the ‘Quick Glance’ section on the right.

Apart from being able to edit files directly on the live site, you can access the following tools:

  • Git – for pushing and pulling to a local repository, or VSO
  • Output Console – for reading debug messages as the site is running
  • Console – a basic shell with some command line tools

The list of command line tools available in the console can be retrieved by typing “help”. Notable ones include the Node Package Manager (npm), Git, Powershell (ps) and msbuild, along with the usual file and directory manipulation tools.

Building it in the Cloud with Visual Studio Online


So we recently started a new project at work, hosted on Azure. As part of the initial investigation, I stared poking around in the Azure Portal to see what new toys we might be able to play with.

One of the items under review is our source control, build and deployment tool-chain, which, frankly, is a bit outdated. Since Microsoft recently released an updated Build module for Visual Studio Online, I took the time for some further investigation.

With that in mind, let’s have a look at some of the new features, and how it can be leveraged to improve the build and deployment process.

This week, I’m looking at the Hosted Pool Build Controller

Hosted Build Controller

In the past, we have deployed and maintained our own VM’s for builds and deployment. The advantage of this is that all our source code lives on the internal network, and we are in full control of the entire build process.

Visual Studio Online can provide all that for you in a user friendly portal, where you can define your build process, set up continuous integration or a build schedule, and then receive alerts, or just review logs as needed.

The combination of Hosted Builds, Unit Testing, Web App Deployment Slots and Continuous Integration presents a powerful argument to move your builds into the cloud, but it does come with some risks and downsides.

When would you choose to use Visual Studio Online Hosted Builds?

  • You are already using VSO for source control (TFS or GIT)
  • Your application is fully hosted on Azure
  • Maintaining a separate build server is difficult or too time consuming

Downsides to Hosted  Builds:

  • You are storing your source code in the cloud, which poses a security risk
  • Limited amount of customised build steps are available
  • Support for languages, compilers and source control systems is limited
  • No administrator access to the build controller

In summary, VSO Hosted Builds are a great way to get going quickly, provided you are willing to stay ‘in the box’ with regard to compilers, build and deployment tools. There are also limitations on the size of the application (10Gb as of writing), and the list of installed applications.

The list of features is really great, and growing, so it’s well worth checking it out.

For detailed information about VSO, visit Microsoft’s Visual Studio Online page.

Part 2 of this blog post is a walkthrough on setting up a new web app and using Visual Studio Online for source control.

Part 3 describes how to implement continuous integration in the Visual Studio Online environment.