Steve Kennaird

Technical Director at Purple Cubed

Read this first

Having different VM sizes per environment for Azure Cloud Service roles

I’m working on a project running on Azure, with the project being deployed as a Cloud Service.

In this cloud service is:

  • Two web roles
  • One worker role

One little annoyance I’ve had with Azure Cloud Services for a while was the lack of a(n easy) way to run different VM sizes for the roles for different environments, as I want to save money when my test environments are running.

In production, I want a more beefy VM to handle a higher number of concurrent users than in test environments. Sure you can scale the number of instances per role, but I wanted to change instance size.

I wanted to have the following VM sizes for the roles…


  • Web Role 1 = Extra Large
  • Web Role 2 = Medium
  • Worker Role = Small

Test Environments (e.g. UAT, RC etc):

  • Web Role 1 = Medium
  • Web Role 2 = Small
  • Worker Role = ExtraSmall

I found this page after some Googling, and there was clearly some

Continue reading →

Using Trello for team L&D

As a leader, ensuring your team learn and progress is a fundamental part of your role. You don’t really want a bunch of developers building/maintaining your products who don’t suggest improvements based on the latest tools and theories, do you?

Plus, if they’re not given the chance to improve their skills, or see that there’s no opportunity to apply new skills, there’s more chance they’ll become demotivated (and less productive), and some will end up leaving to find that opportunity elsewhere. And they’ll take their knowledge of your company and projects with them.

Taking time out of the schedule to allow people to do their own development should pay for itself in the long run. Ok, so looking just at the decreased amount of time available, the net amount of work produced by each person every month should decrease. But you could quite easily argue that this is outweighed by:

  • Happier

Continue reading →

My web development toolbox

We do a lot of client-side work at Purple Cubed, all from within Visual Studio as most of the server-side stuff we do is ASP.Net.

Over the years I’ve built up a list of useful tools - each item on the list below could potentially make your life easier, so it’s worth a look.

 Visual Studio

A great IDE that keeps getting better - whether you’re creating an ASP.Net website in Web Forms or whatever JavaScript MV* framework you prefer, a NodeJS app, or something for iOS, Android etc in C#, VS has got you covered. Looking forward to the release of the latest version, VS2015 on 20th July.


Awesome tool that helps you write better code, quicker. Great ROI for the licence fee. Once you’ve used it, you won’t be able to live without it. That said, apparently VS2015 will come with some of ReSharper’s best features already built in.


Error logging done right, lovely UI and

Continue reading →

Tips on leading technical people

It’s a lot easier to lead technical people when you are one yourself, and are the kind of person that likes to think about the things that you need to do your job to the highest possible level.

You need to understand the types of challenges they face, the frustrations they feel when poor decisions are taken (especially if they don’t know why those decisions were made), and let them have their say. Give them great tools, ideally let them choose their own.

Place a focus on technical development, lead the way and ensure you help them improve their skills. Set up a learning plan with them (we do ours on Trello), using your experience to help them plot in learning around missing skills, or skills that will help them take their career to the next level. This will also help you retain their respect, even when their skills surpass your own (and if this happens, you’ve done a great job!)

Continue reading →

Dynamic Variables in SASS (SCSS) with ASP.Net

 The Problem

At work we’re in the process of building a new SAAS product which needs to be
themed/skinned per customer (where the customer is a company, each with many

The designer we’re working with sold me on the merits of using Compass with
SCSS. The variables used in SASS are perfect for writing minimal maintainable
css with the ability to apply colour changes (and more) in many places without a manual
find'n'replace process through multiple css files. The challenge for me and my
team is to popuplate the SASS variables in ASP.Net from the server side. This
wasn’t as easy as I expected.

I checked out Nuget and StackOverflow in the hope of finding some assistance.
After looking into a few options that come up through Nuget, I couldn’t find
something that made this easy. And on StackOverflow, there wasn’t really any
help. So it was time to get my hands dirty!

One Nuget

Continue reading →

Creating Layers CMS

 Building an(other) ASP.Net C# CMS

A little while ago, I was asked to build a website for a family member who only needed a basic Content Management System for the time being, but had ambitious
plans for 6 months - 1 year down the line. Not having a lot of time on my hands, I wanted to find an open source ASP.Net C# CMS that was simple, succint, well built,
employed the latest tech (MVC4, ASP.Net 4.5, Razor), and wasn’t overkill or so complicated that building on top of it would be difficult and involve a steep learning curve.

 Wait, are you sure we really need another CMS?

Well, I looked into a range of ASP.Net open source CMSs and found a lot of them were overkill or used some slightly older tech (Umbraco, DotNetNuke, n2cms),
and some were well built but were more complicated than I needed (Orchard CMS) so extending them would involve a fair deal of learning and investigating the

Continue reading →

Getting yourself out of a jam once you’ve built on top of the ASP.Net Empty Project Template

With the launch of ASP.Net v4.5 and MVC4/WebAPI etc, the ASP.Net team took the admirable step to making a “single ASP.Net”. The theory being that
the different project types available to users in Visual Studio rail-roaded the user to making big choices about the application they were building
before they’d even really started. Whilst the different template types were great in terms of saving the user some initial configuration work to do
when creating a project (e.g. referncing the relevant DLLs, setting up handlers in the web.config file), it became difficult to mix project types.

By creating a single ASP.Net, Visual Studio could offer users the ability to have a “plain” ASP.Net website project, but they could then add (amongst other things) MVC4 capabilities
by installing the MVC Nuget package. When tasked with a new website build, I thought I could put this to the test,
as initially

Continue reading →

Handling database-managed redirects for a website running in IIS7

So you’ve got a website that you’ve got hundreds of redirects for. Maybe you’re replacing an old site that had a poor url structure,
but don’t want to lose any SEO juice attributed to the old pages, and you don’t want everyone who comes to your site from a search engine seeing a 404.

As with coding in general, there are many ways to get to the same end result. My first thoughts were to use either a HttpModule (or if you’re only fussed about requests for files with a
file extension, e.g. .html, then a HttpHandler) or to try and hack in to IIS7’s UrlRewrite feature.

There’ll be other options depending on how your website is built, but this is what first came to mind for my scenario. I needed to be able to easily add new redirects and their http redirect type
from an admin area, so that anybody with access to the admin area could add a redirect, they wouldn’t have to get a developer to

Continue reading →

Musings on Polyglot Programming

Looking from the outside, I’m verging on being a Microsoft fan boy (* ducks and hides), though I constantly fight the battle to only use what I’m comfortable with. .NET makes development easy (in my view), and it can be difficult to venture outside once you get comfortable with the Visual Studio IDE and how the Microsoft products (tend to) link up seamlessly, with code samples readily available. But if you’re blinkered to only one way of doing things, you’ll quickly find yourself left behind, in some cases waiting for the Microsoft products to catch up with open source tools implemented in other languages.

My main piece of wisdom I try and pass on is to not be blinkered by one way of doing things or get comfortable with how you develop; you’ll find yourself slipping behind your peers in terms of productivity, knowledge and ultimately happiness. There are certainly cases of where working

Continue reading →