Skip to content
James Dawson - Principal I

James is the personification of DevSecOps; part developer, with a long history of security, infrastructure and operations.

Meet James

James is an experienced consultant with a 20+ year history of working across such wide-ranging fields as infrastructure platform design, internet security, application lifecycle management and DevOps consulting - both technical and in a coaching capacity. He enjoys solving problems, particularly those that reduce friction for others or otherwise makes them more effective.

View Blogs
Using Cloud CI/CD in Zero Trust Environments

Using Cloud CI/CD in Zero Trust Environments

James Dawson

Performing certain deployment operations from a cloud-based CI/CD agent against resources that are only accessible via private networking are problematic. The often-cited solution is to use your own hosted agents that are also connected to the same private networks, however, this introduces additional costs and maintenance overhead. This post discusses an approach that combines the use of cloud-based CI/CD agents with 'just-in-time' allow-listing as an alternative to operating your own private agents.
How to setup Python, PyEnv & Poetry on Windows

How to setup Python, PyEnv & Poetry on Windows

James Dawson

Explore using Python virtual environments & Poetry on Windows for smoother workflows, with a script & guide to enhance your dependency management experience.
Adventures in GitHub Actions: Episode 1 - Goodbye Azure DevOps, Hello GitHub Actions

Adventures in GitHub Actions: Episode 1 - Goodbye Azure DevOps, Hello GitHub Actions

James Dawson

This series will follow our ongoing journey of migrating the CI/CD pipelines for our many Open Source repositories, from Azure DevOps to GitHub Actions.
Adventures in Dapr: Episode 5 - Debugging Containers with Visual Studio

Adventures in Dapr: Episode 5 - Debugging Containers with Visual Studio

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, we use the container tools in Visual Studio to debug why a newly-containerised service is not working.
Adventures in Dapr: Episode 4 - Containerising with Visual Studio

Adventures in Dapr: Episode 4 - Containerising with Visual Studio

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, we continue working with the excellent Dapr Traffic Control sample application to adopt a containerised dev inner-loop using Visual Studio.
Publishing Scripts to the PowerShell Gallery

Publishing Scripts to the PowerShell Gallery

James Dawson

Publishing individual scripts to the PowerShell Gallery can be an effective way to share pervasive functionality without the overhead of maintaining a full-blown PowerShell module. In this post we'll look at how we can take a function that is already published as part of a module and also make it available as a standalone script, without having to maintain two versions of the code.
Using Azure CLI Authentication within Local Containers

Using Azure CLI Authentication within Local Containers

James Dawson

Fix broken dev loop with containerized apps on Azure CLI for Windows. Learn a workaround to avoid using outdated Azure CLI versions.
Adventures in Dapr: Episode 3 - Azure Storage Queues

Adventures in Dapr: Episode 3 - Azure Storage Queues

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, we continue modifying the excellent Dapr Traffic Control sample application by swapping the MQTT-based messaging with Azure Storage Queues. We will also look at how you can use the Dapr programming model as an alternative to cloud-provider SDKs.
Adventures in Dapr: Episode 2 - Azure Key Vault

Adventures in Dapr: Episode 2 - Azure Key Vault

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, we continue modifying the excellent Dapr Traffic Control sample application by adding Azure Key Vault integration for its secrets management.
Adventures in Dapr: Episode 1 - Azure Service Bus

Adventures in Dapr: Episode 1 - Azure Service Bus

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. In this post, taking the excellent Dapr Traffic Control sample application as our starting point, we look at enabling PaaS Pub-Sub using Azure Service Bus.
Adventures in Dapr: Episode 0 - Introduction

Adventures in Dapr: Episode 0 - Introduction

James Dawson

If you're interested in the Distributed Application Runtime (Dapr) and how it can simplify migrating existing workloads to use cloud platform services, then this series might be for you. Taking the excellent Dapr Traffic Control sample application as our starting point, we will iteratively migrate components to use Azure cloud platform services.
Does your GitHub Repo need 'Code Operations'?

Does your GitHub Repo need 'Code Operations'?

James Dawson

CodeOps enables you to layer standards, automation, and governance to your source control repositories, decreasing manual effort and increasing productivity.
GitOps: Not Just For Kubernetes!

GitOps: Not Just For Kubernetes!

James Dawson

GitOps (sometimes known as 'operations by pull request') is most often discussed as being an approach for managing your Kubernetes platform, but in this post I will make the case for how it can benefit a much wider audience.
DevOps: Build Bridges not Silver Bullets

DevOps: Build Bridges not Silver Bullets

James Dawson

Building a system that solves even just 10% of a problem is a worthwhile endeavour, not just because of the value the 10% delivers but because its mere existence will lower the barrier-to-entry for your colleagues to collaboratively iterate on it - not so much 'Build it and they will come' as 'Build a road and they will come'
Streamline .NET Dependency Management with NuGet Meta Packages

Streamline .NET Dependency Management with NuGet Meta Packages

James Dawson

Creating meta/virtual NuGet packages to encapsulate frequently used collections of dependencies can be an effective way to both simplify their consumption as well as streamline the process of integrating and testing new versions using tools like Dependabot.
Using multiple azure-cli credentials within automation

Using multiple azure-cli credentials within automation

James Dawson

Have you ever needed an automated process to use alternative credentials for a subset of tasks? This post will demonstrate a technique that allows you setup multiple, concurrent authenticated sessions when using the azure-cli and switch freely between them.