Endjin - Home

Engineering Practices

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


Last month I wrote a guest blog post for JetBrains; a detailed step by step guide for creating a custom TeamCity MetaRunner to notify NewRelic that a new deployment has occurred based on a case study I wrote earlier in the year called “From Chaos, Through Fear, To Confidence” which details an ALM and DevOps […]


Following on from the previous post in this series which dealt with branching and pushing your changes, this post looks at how you can deal with merge conflicts. I’ll describe when conflicts occur and how they can be dealt with using Visual Studio, and third party Git client SmartGit. The next post in the series […]


Understanding dependency injection

by Alice Waddicor

Dependency Injection (DI) was one of the areas I had to get to grips with when I began my apprenticeship with endjin. Because DI deals with something as fundamental as the creation of new objects, it has been used by all of the applications I’ve encountered here. This blog post sums up what I’ve learnt […]


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


This is part three of a set of blogs I’m writing as I learn about Git. In part one, I talked about Git’s distributed architecture, its approach to version management, and its support for frequent branching and merging. In part two, I looked at some of the tools we use to work with Git at […]


This is part two of a series of blogs which I’m writing as I learn about Git, an open source distributed version control system, and find out how it can be used for .NET development. In part one I talked about Git’s distributed architecture, its approach to version management, and its support for frequent branching […]


Using Git for .NET development part 1 – what’s Git?

by Alice Waddicor

The first few weeks of my apprenticeship involved a crash course on source control with Git. I’ll be sharing what I learned in a series of blogs, looking at Visual Studio’s Git extension, and the Git client SmartGit. In this blog, I start off with a tour of the fundamentals of version control with Git. […]


After an whirlwind start in Week 1, week 2 gave me a welcome chance to find out more about the ideas that had gone flying past, wrangle with Git, and get more hands on experience working with Endjin’s codebase. Alongside this was a dive into the deep end of client virtualisation project, as I sat […]


A Step by Step Guide to Automating TeamCity Backups

by Howard van Rooijen

Now that you’ve set-up your TeamCity environment, or migrated it from one machine to another, you probably want to make sure that if anything happens to the hardware you’ve installed it on, you can get back up and running quickly. Step 1: Configure Execute-TeamCityBackup.ps1 Execute-TeamCityBackup.ps1 (by Ivan Leonenko) is a great little script for calling the […]


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


When we setup endjin in 2010, there were five activities we did on day one: set up a business bank account, set up a FreeAgent account, for all our accounting needs signed up for Office 365 (or BPOS as it was then), registered the endjin GitHub account built a virtualised Continuous Integration Environment using TeamCity. […]


Integration testing with Web API

by Mike Larah

I recently had do a project where I wanted to run integration tests on some Web API controllers, so this post is to describe the method for doing so. The way to do it is to mock an HttpServer and HttpClient class, but first you have to change some of the config to get them […]


Day 1: PowerShell, BDD and Git

by Mike Larah

  So the first real work started yesterday afternoon with an introduction to PowerShell. Since all new employees are required to sign up to variety of web services (Office 365, YouTrack, GitHub, WordPress, TeamCity, IPCop), it would save time to write a script to automate this on-boarding process. Starting with YouTrack, by using the web […]


TeamCity PowerShell

by Howard van Rooijen

Last week I was formally invited to become a member of the JetBrains Development Academy Board – to celebrate, I decided to give something back to the community that has a JetBrains flavour. As I mentioned in my last post – we’ve been doing a lot of ALM / DevOps work in the last year […]