It’s been a while since I wrote my last article, so apologies for that. I’m sure like many of you, it’s been a very busy time. Since writing my last article, I’ve changed jobs (which I alluded to in my last article[^]

The last few months have been like a whirlwind. I made the tough decision to leave my last job and have been busy settling into my new job. I’ve been here for a couple of months now and thoroughly enjoying it. They’re a software house who create a fully customisable web based Customer Relationship Management (CRM) application. …


Throughout my 20+ year career within the software development industry, I have moved jobs for a whole variety of reasons. Often I have moved jobs for several reasons at once. There are many reasons why I have moved, and these will be different from one person to the next. This article will describe a few of the reasons that have played a part in my own personal decisions to move during those 20+ years.

To protect the identity of the companies in question, I will not mention any company names or people. That would be unprofessional and is not the…


I recently began using Octopus to deploy our ASP.NET Core line-of-business web application. Previously I had configured Team Foundation Services (TFS) to do this. The web application was already being built using TFS as part of our Continuous Integration (CI) pipeline, so I had configured TFS to also take care of the Continuous Deployments (CD) too.

I had three deployments configured. One for Development (which was triggered automatically by the build) and one each for our Staging and Production environments. The former deployment was to an on-premise server and was to give the developers an environment where they could test…


There seem to be plenty of articles relating to the creation of a DevOps process, or the creation of a Continuous Integration and / or Continuous Delivery (CI / CD) pipeline. But there seem to be very few that relate to what makes for a good DevOps process. Or in other words, what makes for a good CI / CD pipeline? If you’re creating a DevOps process, what makes for a good one? What makes for a good CI / CD pipeline? In this article I will try to describe what makes for a good DevOps process, and what doesn’t.


Whilst developing the journey logging functionality for our Xamarin mobile app, we needed to give the user the ability to start and stop the app from recording their journey. The functionality was designed to give drivers the ability to record their business journeys so that they could reclaim business mileage expenses. So when they set off on their business journey, they would open the app and set it to begin recording their journey. When they arrived at their destination they would stop the app from recording their journey. …


It’s taken me a few weeks but I’ve finally completed the Advanced Distributed Systems Design course from Particular Software. It was run by the renowned Udi Dahan who is the founder and CEO of NServiceBus. Feeling really pleased to have completed it. It’s an amazing course and I highly recommend anyone with an interest in software architecture to take the course. It covers the following topics (not exhaustive)

  • Service-oriented architecture (SOA)
  • Message bus
  • Publish / Subscribe pattern
  • Command Query Responsibility Segregation (CQRS)
  • Eventual Consistency

Plus many other topics.


To get the most out of this article, you will need a good understanding of creating Expressions with the .NET Framework. If you don’t already, then check out this article[^] before going any further.

During the development of our current ASP.NET Core web application, I had a particular set of forms where the client needed to dynamically query one particular dataset. The data being returned related to permission data. The data could be queried in a number of different ways e.g. the permissions for a particular user or the permissions for a particular service. …


I recently had a need to start / stop our Azure web application from our deployment pipeline. As part of our deployment process I have written a script that uploads the latest changes to our Azure web hosting via FTP (using the excellent WinSCP). In testing this however I was finding that sometimes not all the files were getting uploaded, in particular the application’s main assembly would often fail to upload as it was in use. I therfore decided that I would stop / start the web application as part of the deployment.

- stop the web application - upload…


As part of my research into technologies to support the new web application that I am helping to build, I have been looking into Azure Cognitive Search (ACS). I came across this technology by accident while reading through an issue of Code magazine[^]. In that article, the author explains how the technology can be used to perform powerful queries across your data, even leveraging fuzzy logic and AI capabilities.

Quote:

Azure Cognitive Search is the only cloud search service with built-in AI capabilities that enrich all types of information to easily identify and explore relevant content at scale.

The article…


As part of our build process, I needed to version the assembly with the latest build number. This is the first step in the build pipeline. Initially, I investigated doing this using the dotnet command as below.

Hide Copy Code

dotnet build MyProject.csproj --configuration Release /p:Version=%1

The %1 parameter is the latest build number and is passed into the script via a build step. This command will build the project using the arguments that have been specified and create the build articles in the bin folder. The built assembly that the command has created in the bin folder will correctly…

Dominic Burford

A father, cyclist, vegetarian, atheist, geek and multiple award winning technical author. Loves real ale, fine wine and good music. All round decent chap.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store