Notes on building things that last.
Essays on architecture, secure engineering, and doing honest work in regulated industries, including how, and how openly, we use AI.
Building to Be Forgotten
For building software you are happy to walk away from. For making yourself, deliberately and as a matter of craft, dispensable.
Read the essay →Controls Your Agent Cannot Rewrite
Three kinds of control shape what an agent can do, and they are not equally strong. One is advice the model may ignore, one is enforced by the tool, and one is enforced somewhere the agent cannot reach. Knowing which you have written is the whole game.
AI Security, Made Simple: Defence in Depth for Agents
Treat an AI agent like an eager developer: capable, fast, well-meaning, and guaranteed to occasionally overreach. Give it its own machine, its own accounts, and the least privilege it needs.
Transparent Use of AI
Using AI is not cheating. Using it and pretending you did not is. A practical scale for being honest about what the tool did.
The Panic Dividend of AI Security
Mythos did not create a new cybersecurity risk. It exposed one that has been building for years. Be sceptical of anyone now selling you a solution to the panic.
Software Delivery for a Changing System
A practical guide to separating developer concerns, CI, Continuous Delivery, and Deployment, how release manifests work as a master SBOM, and why domain-driven library design holds it all together.
Securing Your JavaScript Dependencies: What Every Organisation Needs to Know
In November 2025, attackers compromised popular npm packages. The attack didn't exploit a bug. It exploited trust. What happened, why traditional defences fall short, and what you can do.
Enterprise Security Tools Without Breaking The Bank
When building a new security tool, we faced a problem. How do you convince security-conscious users to install software that requires system-level permissions?
Transforming Developer Experience: Attracting and Keeping Talent
I read and discussed the Shift Magazine article "Developers experience burnout, but 70% of them code on weekends" over the holidays. Contrary to popular belief, it is not the complexities of coding that most frequently overwhelm developers; rather, it is the administrative and organisational challen
Liquid Transformations with Live Preview
Using the Live Preview console application, we can set a file watcher that automatically renders the output as any changes occur to the source data or Liquid template.
Unit Tests for Liquid Templates
We can ensure that Liquid templates produce the correct result using a programmatic unit test. I have created an open source library that give Liquid unit test support.
Data Transformations in Azure with Liquid
As data or file contents need to be mapped from a source to target format, we can use Azure services to process and map the data. This post is the first in a series about the Liquid language.
From Independent Contractor to Family Consultancy Company
I am now proudly welcoming Rachel to the team, who will join as Marketing Manager. She will leverage her expertise and vast experience for our new Digital Marketing Services and manage our partnerships.
Deploying Logic App Standard Workflows
Standard mode Logic Apps behave quite differently when deploying resources. It took much research to find a stable way to deploy workflows and, especially, workflow connections. Here is a walkthrough of the deployment steps.
Azure Hybrid Cloud Design: VPN vs ServiceBus
Most companies have systems on on-premises servers that need to interact with the cloud components. Let's look at some options and their design implications.
Securing Secrets in Application Settings using .NET
Storing secrets inside configuration files is bad practice. In this example, we encrypt these values using the server machine key.
Digital Nomads: Pandemic and work/life balance
As a consultant, I have spent most of my time over the last 10 years on the road. However, the COVID pandemic changed my work situation overnight. Maybe my travel routine was wrong all these years? Maybe the digital nomad lifestyle could be the norm for a larger part of the year.
From Proof-of-Concept to Controlled Deployment of Azure Resources using Pulumi
Previously, we looked into deploying Azure resources uing infrastructure-as-code using Pulumi. In this post, I am walking you through creating the C# (or TypeScript etc) code from manual prototyping and proof-of-concept deployments in Azure to making them using Pulumi.
Automating Deployments using Infrastructure as Code with Pulumi
To handle Infrastructure-as-Code workflows, I use a product called Pulumi. It is built on top of the open-source platform Terraform. Pulumi handles versioning and recreation of cloud resources, handles state and shows a preview of what changes will occur.
Grouping XML Data using Altova and Logic Apps
Example using Altova MapForce to generate an XLST 2.0 mapping function and deploying this into an Azure logic app for use in an integration service.
Transform XML using Altova MapForce in Azure Logic Apps
Azure Logic apps has powerful capabilities when joined with an integration account. This allows us to do advanced data mapping transformations. In this example, I will use Altova MapForce to design the mapping between the two file formats.