Azure tools and practical guides. Feedback on LinkedIn.

Articles

Practical guides on Azure, infrastructure and DevOps.

RSS Feed
Start a series

Loading catalogue controls. Article links are available below.

Articles

FeaturedAzureGovernanceAzure Policy

Azure Policy, Part 1: What Is an Azure Policy?

Part 1 of a seven-part series on Azure Policy: what a policy definition actually is, how the if/then rule works, aliases, the full list of effects and the order they run in, modes, versioning, and the limits that bite in production.

September 4, 2026 · 14 min read
AzureGovernanceAzure Policy

Azure Policy, Part 2: What Is an Initiative (Policy Set)?

Part 2 of the Azure Policy series: policy set definitions explained - grouping definitions, policyDefinitionReferenceId, passing parameters down, definition groups and regulatory compliance, version pinning, and the initiative parameter you can never change.

September 4, 2026 · 9 min read
AzureGovernanceAzure Policy

Azure Policy, Part 3: What Is a Policy Assignment?

Part 3 of the Azure Policy series: assignments are where governance becomes real. Scope and inheritance, enforcementMode, managed identities and remediation permissions, resourceSelectors and overrides for safe rollout, and non-compliance messages.

September 4, 2026 · 11 min read
AzureGovernanceAzure Policy

Azure Policy, Part 4: What Is an Exclusion (notScopes)?

Part 4 of the Azure Policy series: exclusions explained. How notScopes carves a hole in an assignment scope, why excluded resources vanish from compliance entirely, the governance debt it creates, and when an exclusion is genuinely the right answer.

September 4, 2026 · 9 min read
AzureGovernanceAzure Policy

Azure Policy, Part 5: What Is a Policy Exemption?

Part 5 of the Azure Policy series: exemptions explained. Waiver versus Mitigated, expiresOn, exempting a single initiative member, identity-based exemptions, compliance substate, the RBAC you need, and how to stop exemptions becoming permanent.

September 4, 2026 · 10 min read
AzureGovernanceAzure Policy

Azure Policy, Part 6: Azure Policy as Code

Part 6 of the Azure Policy series: why the portal stops working at scale, Microsoft's create-test-deploy workflow, the deployment ordering problem, drift and desired state, the managed identity permission gap, and what to put in your repository.

September 4, 2026 · 12 min read
FeaturedAzureGovernanceAzure Policy

Azure Policy, Part 7: EPAC and the Alternatives

Part 7 of the Azure Policy series: Enterprise Azure Policy as Code (EPAC) explained end to end - folder structure, global-settings.jsonc, pacEnvironments, desired state strategies, the three-stage pipeline, ALZ integration - plus an honest comparison with ALZ, Terraform, AzOps and doing nothing.

September 4, 2026 · 16 min read
FeaturedAzureGovernance

Azure Lighthouse: Choose a Cross-Tenant Management Pattern

Choose between application maintenance, multi-tenant operations and ISV delegation, then review Lighthouse scope, role limitations, rollout and revocation.

September 3, 2026 · 14 min read
FeaturedAzureDNS

DNS in Azure, Part 3: Azure DNS Private Resolver

Part 3 of the DNS in Azure series: inbound and outbound endpoints, forwarding rulesets, the query evaluation order, the centralized and distributed architectures, and how to log DNS queries without running your own servers.

September 3, 2026 · 15 min read
FeaturedAzureDNS

DNS in Azure, Part 4: Private Link and Private Endpoints

Part 4 of the DNS in Azure series: what a Private Endpoint really is, sub-resources, the approval workflow, routing and NSG behaviour, Private Link Service, and why turning off public network access is a separate job.

September 3, 2026 · 13 min read
FeaturedAzureDNS

DNS in Azure, Part 5: Private Endpoints and Private DNS

Part 5 of the DNS in Azure series: the privatelink CNAME chain, the exact zone name for every service, private DNS zone groups, running zones at scale with Azure Policy, and making Private Endpoints resolve from on-premises.

September 3, 2026 · 10 min read
FeaturedAzureDNS

DNS in Azure, Part 6: Private DNS Fallback to Internet

Part 6 of the DNS in Azure series: why a privatelink zone returns NXDOMAIN for names you do not own, how the NxDomainRedirect resolution policy fixes cross-tenant Private Link, and when you should deliberately leave it off.

September 3, 2026 · 8 min read
FeaturedAzureDNSSecurity

DNS in Azure, Part 7: DNS Security Policies

Part 7 of the DNS in Azure series: DNS resolver policies, traffic rules and domain lists, the Microsoft threat intelligence feed, full query logging in Log Analytics, and a rollout plan that will not take your platform down.

September 3, 2026 · 10 min read
FeaturedAzureDNS

DNS in Azure, Part 8: The Resolution Decision Tree

Part 8 of the DNS in Azure series: an interactive decision tree that takes you from a client asking for a name to the exact Azure architecture that answers it - Azure DNS, private zones, privatelink, forwarding rulesets, or on-premises.

September 3, 2026 · 5 min read
FeaturedAzureDNS

DNS in Azure, Part 2: Private DNS Zones

Part 2 of the DNS in Azure series: how private DNS zones and virtual network links really work, what autoregistration does to your records, the privatelink zones behind Private Endpoints, and how to design zones you will not regret.

September 2, 2026 · 13 min read
FeaturedAzureDNS

DNS in Azure, Part 1: Fundamentals and Azure-Provided Name Resolution

Part 1 of an eight-part series on private DNS in Azure: the vocabulary, the 168.63.129.16 platform IP, where a VM actually gets its resolver from, and why the default internal.cloudapp.net namespace runs out of road.

September 1, 2026 · 12 min read
Documentation

Contributing an Article to This Site

Everything you can use when writing a new article for /articles: frontmatter fields, headings, lists, callouts, code blocks, tables, images, and links.

August 19, 2026 · 4 min read
AzureGitHub

Connect GitHub and Azure for Deployment Using OIDC

Stop storing long-lived Azure credentials in GitHub secrets. Set up OpenID Connect federation so GitHub Actions can authenticate to Azure with short-lived tokens.

August 14, 2026 · 3 min read
AzureGovernance

What Is an Azure Landing Zone?

A practical introduction to Azure landing zones: what they are, why they matter, and the building blocks every platform team should know.

August 10, 2026 · 4 min read
AzureBastion

Native RDP Through Azure Bastion

Step-by-step guide to connecting to an Azure VM with your native RDP client through Azure Bastion's native client support, including how to open the tunnel with the Azure CLI.

March 6, 2026 · 3 min read
Azure

How to Delegate a Domain to Azure DNS

Prepare an Azure public DNS zone and its records before changing registrar name servers, using OVH as the example, then verify delegation and plan rollback.

December 16, 2025 · 6 min read
Git

Display Latest Commits with Git Graph

A stylish one-liner to showcase the latest commits from a repository directly in the terminal.

February 26, 2025 · 1 min read
GitHub

GitHub Contribution Workflow

The end-to-end workflow for contributing to a GitHub project: fork, branch, commit, push, pull request, code review, and merge.

February 26, 2025 · 5 min read
Azure

Connect PHP App Service to Azure SQL Without a Password

Connect a PHP app running on Azure App Service to Azure SQL Database using a system-assigned managed identity, with no stored username or password.

February 12, 2025 · 2 min read
Azure

Allow ICMP (Ping) on an Azure VM

Allow an ICMPv4 echo request in a Windows VM's guest firewall, then separately verify the Azure network path and test the response.

January 31, 2025 · 1 min read
Azure

Network Security Perimeter (NSP)

Compare controls for PaaS public access and private connectivity, understand Network Security Perimeter objects, and prepare a scoped validation plan.

January 31, 2025 · 3 min read
Azure

Restrict Web App Access with Entra ID Authentication

How to restrict access to an Azure Web App to specific users or security groups using Microsoft Entra ID, instead of allowing every user in the tenant.

December 17, 2024 · 2 min read
Azure

Terraform vs Bicep: Choose by Team and Workload

Compare Terraform and Bicep by scope, state, review workflow and operating cost, then choose a fit for your team instead of a universal winner.

December 6, 2024 · 2 min read
GitHub

Debug GitHub Actions Secret Configuration Without Revealing Values

Check whether a GitHub Actions secret is available without printing it, review repository and environment scope, and use OIDC for Azure instead of long-lived credentials.

December 2, 2024 · 1 min read
Azure

Review Expired Azure Resources by TTL Tags Before Cleanup

Build a scoped, read-only TTL inventory before approving resource deletion, and separately investigate creator attribution without treating the last writer as the creator.

November 13, 2024 · 2 min read
Azure

Search Azure Policy Aliases and Send Output to an Interactive Table

A PowerShell script that lets you interactively search Azure Policy aliases by namespace using Out-GridView.

November 13, 2024 · 1 min read
Azure

Azure REST APIs, Versions, and Lifecycle

How Azure REST API versions work, how to find them with PowerShell, and why the api-version parameter matters.

November 6, 2024 · 1 min read
Azure

Call Azure API with PowerShell

Make a read-only Azure Resource Manager GET for a storage account using Azure PowerShell, with explicit context, replaceable parameters and response checks.

November 6, 2024 · 1 min read
Azure

Review RBAC Assignments with 'Identity Not Found'

Inventory unresolved Azure RBAC principals at an explicit scope, verify deletion independently, and preview removal before approving a change.

November 6, 2024 · 1 min read
Azure

Don't Build Your Cloud Home on Shaky Foundations

A grouped Azure foundations checklist: decide ownership first, then governance, platform connectivity and ongoing operations before onboarding workloads.

November 6, 2024 · 2 min read
Azure

KQL Query Library for Azure Resource Graph

A growing collection of Kusto Query Language (KQL) queries for Azure Resource Graph, covering AKS, disks, networking, policies, RBAC, subscriptions, and tags.

November 6, 2024 · 2 min read
Azure

Azure Subscription Switcher

A PowerShell script to quickly switch between Azure subscriptions by index, with an optional Out-GridView interface.

November 5, 2024 · 1 min read
Tools

Edit and Version Draw.io Diagrams in VS Code

Install the unofficial Draw.io integration, choose an editable file format and create your first diagram alongside source code in desktop VS Code.

November 5, 2024 · 2 min read
Tools

Cyber Attacks Live Maps

A directory of vendor threat visualisations, with their different scopes and limits: useful for exploration, not an exhaustive map of attacks or attribution.

November 3, 2024 · 1 min read
Hugo

Host a Hugo Site on GitHub Pages with Actions

Prepare a Hugo source repository, select GitHub Actions as the Pages source, build a pinned Hugo version and verify the deployed site.

November 3, 2024 · 3 min read
Hugo

From WordPress to Hugo: Choosing a Publishing Workflow

A decision-focused comparison of WordPress and Hugo: editing workflow, dynamic features, hosting and maintenance trade-offs, without unrecorded migration claims.

October 16, 2024 · 2 min read
GitHub

Publish a Versioned GitHub Script Snapshot in an Article

Distinguish a source link from build-time inclusion and browser fetching, and publish a readable static script snapshot with honest provenance.

October 16, 2024 · 2 min read
Azure

Terraform and Entra ID Authentication

How to disable storage account key-based authentication and use Entra ID authentication for the Terraform azurerm remote backend.

September 11, 2024 · 1 min read
Azure

Optimize and Reduce Costs in Azure

Prioritise Azure cost work by effort, reversibility and commitment: establish a baseline, review usage, improve governance, then evaluate financial commitments.

September 11, 2024 · 3 min read
AzureTools

Set Up Your First Terraform Environment on Windows

Step-by-step guide to setting up your first Terraform environment on Windows: install the CLI, configure a remote state backend in Azure Storage, and run your first plan and apply.

September 11, 2024 · 2 min read
Git

Git Basics: A Task-Based Command Cheat Sheet

Find Git commands by task: setup, cloning, the daily change cycle, synchronisation, branches and diagnosis. Each example explains its effect.

February 28, 2024 · 2 min read
GitHub

GitHub Branch Naming Convention

A suggested team convention, not a GitHub requirement: readable branch names with a purpose, ticket identifier and short description.

February 26, 2024 · 2 min read
GitHub

GitHub Commit Naming Convention

A practical commit message convention for GitHub projects, based on Conventional Commits: format, common types, and writing clear messages.

February 26, 2024 · 2 min read

Start a series

Azure Policy

7 parts — from definitions and assignments to policy as code.

Start with part 1

DNS in Azure

8 parts — from name resolution to Private Endpoints and the decision tree.

Start with part 1