Endjin - Home

Engineering Practices

In the world of DevOps, cloud and platform services, how does a developer’s “definition of done” need to change? This post argues that as the silos of development and operations are broken down, the responsibility of understanding the whole solution increases meaning, to truly take advantage of the cloud, the need for quality and professionalism is critical for success.


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


Machine Learning – the process is the science

by James Broome

What do machine learning and data science actually mean? This post digs into the detail behind the endjin approach to structured experimentation, arguing that the “science” is really all about following the process, allowing you to iterate to insights quickly when there are no guarantees of success.


Mike Larah shares his tips for how to best customize ConEmu to improve your terminal experience for Windows Command Prompy and PowerShell


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


CucumberJS Visual Studio Test Runner

by Matthew Adams

We've built and open-sourced a Visual Studio Extension that provides basic support for discovering and running CucumberJS tests with Node.JS, in the Visual Studio Test Environment.


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. We talk about strategies for managing the time of a team, and ensuring that you become predictable.


This is a quick guide to setting up cucumber JS in Visual Studio with grunt.


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. Learn how you can create reusable step argument transformations to apply custom transformations to your parameters, so that you can keep your specifications easy to read.


Hiring developers is hard. Really hard. Here are some tips on how to make it easier on yourself.


To help guide the client through the selection process (and to act as an aide memoire when we come to try and remember why particular choices were made), we created a handy flow-chart to take you through the technology landscape, and suggest some recommended-practice solutions.


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