Andrew Wilson's Blog

{ ... Plan - Architect - Develop - Reflect - Improve - Repeat ... }

The Requirements Ambiguity Paradox

The Requirements Ambiguity Paradox With the context of software requirements, I regularly encounter an understood but often ignored scenario: the less detailed the initial requirements, the more expansive the client’s expectations become as the project progresses. It’s a phenomenon I …


Automating Semantic Versioning in Azure DevOps CI/CD Pipelines with GitVersion

Overview Versioning is the unsung hero of software development—often overlooked but absolutely essential. Imagine trying to manage a project without a clear way to track changes, communicate updates, or ensure compatibility. Chaos, right? That’s where versioning steps in, providing structure and …


Bicep | Existing Resource Dependencies

Background The Bicep existing keyword is a powerful capability that allows us to reference a resource that wasn’t deployed as part of the current Bicep file. One of the typical use cases that I often see is where a resource is deployed as part of a module called by the parent template, the …


Logic App | Access Key Revocation and Regeneration

Overview In previous articles I have subtly referenced risks and best practices regarding HTTP triggered workflows and their use of Access Keys for security, such as: Some Potential Risks: If a Key is leaked, it can be used by anyone who obtains it to call your Logic App Workflow. If a Key has …


Logic App | Try-Catch Pattern, Nested Scopes, And Compensating Transaction Pattern

The Try-Catch Pattern Following the idea of defensive programming or as I like to call it for Logic Apps (being low code): defensive processing, it is considered good practice to wrap your workflows in a try-catch pattern to handle the unexpected. The pattern makes use of a mixture of Run After …