Endjin - Home

Engineering Practices

I guarantee that any of you who have ever worked as, or with, a software engineer will have heard the phrase “it works on my machine!” before. This statement is so infamous that there’s even a certificate for it, that can be handed out to those who have defiantly claimed that the feature that they’ve […]


Automating R Unit Tests With VSTS

by Jess Panni

I recently demonstrated how it was possible to automate the deployment of R models to Azure Machine Learning through VSTS. Of course, this is only part of the story; what about testing? It is important to ensure that all production code is adequately tested, and R is no different. Writing unit tests for R models is straight-forward […]


Azure Resource Manager Azure Resource Manager (ARM) is a set of APIs that enable interacting with Azure for creating and managing resources. ARM Templates create a simpler way of automating deployment to Azure, by allowing all the parts of your infrastructure to be declared in the template. Azure itself then handles how that infrastructure gets created […]


What is Azure Machine Learning? Azure Machine Learning (Azure ML) is a fully managed cloud service that enables you to easily build, deploy and share predictive analytics solutions. Azure ML allows you to create a predictive analytic experiment and then directly publish that as a web service. The web service API can be used in […]


We’re currently working on a project to migrate a customer from AWS to Azure. As always, we like to put a Continuous Delivery pipeline at the heart of the project to ensure there is zero friction pushing out changes across all dev, test and production environments. Two years ago I wrote about the process we […]


In February 2016, I completed my second year of endjin’s three year custom apprenticeship scheme. This blog is a chance for me to reflect on what was learnt over the year – hopefully others will find it useful too. Year one had involved a very steep learning curve as I transitioned from student to graduate […]


Like many other developers I’m sure, I spend quite a bit of time in command line applications (Windows CMD, PowerShell, etc.). Unfortunately, these applications don’t offer a lot in terms of customization. So I use ConEmu – a highly customizable, tabbed console emulator that lets you run any shell you want. This post describes how to setup ConEmu, and how […]


SpecFlow 2.0, NUnit3, Visual Studio and TeamCity

by Matthew Adams

We have recently upgraded our build environment to use SpecFlow 2.0, and NUnit3. NUnit3 is supported by the latest build of TeamCity, and there is an NUnit3 Test Adapter for Visual Studio, but there are a few gotchas. The first is to do with the base directory set by the NUnit Test Adapter in Visual […]


ILMerge Meta-Runner for TeamCity

by Howard van Rooijen

At the start of every year we do a spot of spring cleaning; we tidy up all of our core intellectual property, harvest any useful code that we’ve written in the previous year, then give it all a thoroughly good refactoring; to ensure that the code is self-referencing all the new patterns and concepts. This has […]


What is Azure Resource Manager? The infrastructure that makes up your application is often composed of various different components. For instance, you might simply be running a web site, but behind the scenes you have an Azure web site deployed, a Storage account for tables, blobs, and queues, a couple of VMs running a database […]


Chaos with a rhythm – controlling innovation

by Matthew Adams

Running a start-up or bootstrapping a new product within an established business can feel pretty chaotic. Ideas develop, explode, or fade into silence. You are pulled in different directions by investors (present and future), customers, regulators, your team, the competition. It seems that everything needs to be done yesterday, but nothing is ever finished. Our […]


At endjin, we love using Gherkin, from “unit”-style tests, all the way through to Integration and User Acceptance testing. In the .NET world, we make use of SpecFlow which has great integration with Visual Studio. With Visual Studio 2015 and its new support for npm/grunt, setting up CucumberJS for gherkin-style testing of JavaScript is pretty […]


The Problem If you use Git (and GitFlow) with Visual Studio (which seems like it is going to become a much more popular combination), I’m sure you are well aware of the pain that is the “merge conflict” you often encounter when trying to merge (or rebase) a branch. There are three file types that […]


SpecFlow Extensions for Azure Storage Emulator

by Howard van Rooijen

In most cases, when writing an integration specifications against Azure Storage, you want to use the real thing rather than the Storage Emulator as the performance profile and behaviours are noticeably different. One exception is if you’ve hosted your code in a public repo; in this case you really don’t want to commit your real […]


One of the great benefits of using SpecFlow is that it allows you to write your specifications in a human readable format. You write your specifications as a series of free-text steps and use step definitions to make the connection between the free-text and your code that executes the step. The step definition contains a […]


Hiring developers is hard. Really hard. I mean, you might think it’s hard trying to hire, say, a commis chef for a restaurant… Actually, that’s much harder. For a start, the working environment is unappealing. It is hot, physically stressful and actively dangerous. The commis is probably about 17 years old, and has to do […]


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 is an addendum to Richard’s recent post about using Azure Automation to run VMs during office hours only. As Richard explains, you can use Azure Automation to create runbooks which contain PowerShell Workflows with the functionality you want to implement (e.g. starting and stopping a virtual machine or cloud service), and link those […]


This blog describes two tools I used last year to take some of the work out of a repetitive refactor. The tools were Visual Studio’s Find tool, with a regex, and Resharper’s Search by Pattern feature – I compare my experiences with the two here. The refactor – adding a class to certain html elements […]


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 […]