Image for post
Image for post

Using a Static Website in Azure Storage to host your single page application (SPA) can be a very cost effective option. We are increasingly using this option to host our Blazor Web Assembly applications to provide very low hosting costs to our clients. Lower cost often means fewer features, and in this case static website hosting in Blob storage doesn’t provide the ability to set custom HTTP headers, such as for Content Security Policy. Fortunately, you can use Azure CDN to set these headers without incurring too much extra expense. …


Image for post
Image for post

I was setting up a new Azure Pipeline today to deploy a Blazor Web Assembly application to a Static Website in Azure Storage. Despite authorising the service connection in Azure Pipelines to have access to the target storage account, I was encountering a AuthorizationPermissionMismatch error when the task executed. I suspected there was an issue with the Service Principal in Azure AD, but it took a little digging around to find the solution. Hopefully this saves some of you some time in the future.

The problem

The Azure File Copy task was reporting the following.

INFO: Authentication failed, it is either not…


Image for post
Image for post

I’ve been increasingly using the Azure CLI for most of my day to day tasks in Azure. Whilst the portal is good for working things out, I find it painfully slow when I know what I want to do. The Azure CLI lets me get things done faster, but it is very extensive and can be intimidating to learn. After updating the CLI and seeing, once again, that bash completion was available, I decided to finally get it setup.

At the time of writing, my setup is as follows:

  • macOS Catalina 10.15.5
  • Z Shell (zsh) bundled with macOS (version 5.7.1)

Image for post
Image for post

It is increasingly common to use an external service to handle the authentication of users for a modern application. In most cases this makes a lot of sense. Why roll your own authentication when you can use a specialised service with more experts focussing on security than you will ever likely have in your team? One of the services in this field is provided by Auth0. In this post I will walk through from beginning to end the steps needed to integrate Auth0 into a React App that is communicating with an ASP.NET …


Image for post
Image for post

Azure Resource Manager (ARM) templates are JSON files that allow you to define the infrastructure and configuration of your project. This means that your Azure resources can be deployed repeatedly and reliably, with the templates living with your code under version control. I recently needed to create a template that provisioned resources across two different resource groups and hit a few “gotchas”, which I will document below.

The Scenario

When you are provisioning resources for your application in Azure, they usually reside in the same resource group. But there are times when it makes sense to deploy across resource groups. …


I’ve successfully moved my entire development environment on to my Mac (after many years of impatience waiting for the last of my .NET Framework projects to die or be ported to .NET Core). I try to make as much use of CLIs where they make sense and have come to enjoy using some of the features of the old Visual Studio Team Services CLI (VSTS CLI).

As part of setting up my Mac development environment, I wanted to make sure I kept my local system as clean as possible, so I decided to run the Azure CLI, Powershell Core and…


Image for post
Image for post
Photo by Mateusz Kapciak from FreeImages

We all know that focus matters and attempting to multitask is a productivity killer. In a perfect world you would be able to focus on a single task until it is completed and then move onto the next one. I don’t know about you, but this utopia is still a little way off for me. On any single day I may have the following types of task on my plate:

  • Communications with staff, suppliers, clients and potential clients;
  • Working on marketing material for DataDIGEST;
  • Writing for my personal or DataDIGEST blog;
  • Writing code for a client project (could be one…


As the last days of the year slip by, I find myself in a contemplative frame of mind. What have I achieved this year? What have i learnt? How can I make myself a better developer in 2020? Do you, dear reader, find yourself in the same asking the same questions? One of the exciting, tiring, stimulating, frustrating (I could go on) parts of being a developer is that there are always so many new things we can learn: a new language, framework, should I deep dive into native apps, but what about PWAs, web components and all the stuff…


Image for post
Image for post

ASP.NET Core provides tools to help avoid storing sensitive data used during development in source code. Personally, I’m not a big fan of environment variables for storing development secrets, so I have started using the Secret Manager. The Secret Manager is a tool that allows you to store app secrets in a JSON file that lives outside the project tree, but access them through the Configuration API. You should always remember that this JSON file is not encrypted, so never use it for test or production environments. …


Image for post
Image for post

As I talk to managers and employees of businesses, I am often amazed at the amount of menial, repetitive work that is still being undertaken. Managers and small business owners often identify this as a problem, but explain to me that they can’t afford to implement a custom software solution or rollout an ERP. But they are often overlooking the tools that they already have access to if they are subscribing to Office 365.

I want to share some tips for getting more from your Office 365 or Microsoft 365 subscription. In this post, I will share two very simple…

Alastair Christian

Aussie in South Africa. COO at DataDIGEST. Occasional writer. General observer.

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