Engineering Practices

When faced with the huge number of technologies and services that are now shipping under the Azure banner, it can be pretty daunting. How do you identify the choices that will be right for your solution? And are you making the right price/performance trade-offs? And what is the difference between a web role and a […]


This blog explains how you can use the Git client SmartGit to follow the GitFlow model, which Howard described in his series a step by Step Guide to using GitFlow with TeamCity. GitFlow GitFlow specifies a standard branch structure and workflow for moving changes between branches, which standardise the way a team uses Git, and […]


Elasticsearch gotchas and tips – part 2

by Richard Kerslake

It has been some time since my last post giving tips on the hardware and software requirements for installing and running Elasticsearch on Azure. This post is a further series of gotchas and tips that I’ve picked up on during my journey using Elasticsearch. It is split into 3 broad categories covering various configuration items, […]


There’s a lot of documentation available around NuGet and how to create/publish packages, etc. But when I looked for a simple step-by-step guide on how to test a package locally, I couldn’t find any […]


Getting started with semantic logging

by Richard Kerslake

Semantic Logging A more traditional style of logging is to write a line of text for any significant event deemed worthy of recording. If there is an issue with the application which requires analysis of the logs, it largely requires someone to scan through the log files (of which there could be many) line by […]


If you’ve been using TeamCity for a number of years, there will come a time where the server it’s running on will reach its end of life and your TeamCity instance will need to be moved to a fresh server. As part of this migration process, you may decide to change OS from Linux to […]


We’ve just pushed out version 2.0 of our open-source, component composition framework. This is the framework we use internally day-in, day-out for our dependency injection. The previous version had a dependency on Castle Windsor, but in this new version we have implemented our own container. There are a few reasons we decided to take this […]


Part 1 of the series talked about Different Branching Models. Part 2 covered GitFlow – a Branching Model for a Release Cycle and part 3 covered all the GitFlow Commands. In this final part of this series about adopting GitFlow, we’re going to cover how we can use the exciting new feature branching abilities of TeamCity 7.1 to allow […]


In part 1 of the series I talked about the difference in branching models inherent with the different types of version control system. In part 2 I talked about the problems inherent in the software development, release and support cycle and how GitFlow was designed as a workflow to try and solve or at the […]


In Part 1 – I covered off a brief overview of the branching model differences between TFS and Git. One of the most interesting developments to happen in the Git ecosystem (apart from its growing adoption rate) is the creation of the Git Flow branching model and its embodiment as an plugin extension to the core Git client libraries. […]