▌│█║▌║▌║ about me ║▌║▌║█│▌
What I’ve been up to
- Jan 2024 ⇉⇉⇉ … Lead Software Developer at Mountain Warehouse
- Jan 2022 ⇉⇉⇉ Jan 2024 Principal Software Developer at a gov.uk
- 2019 ⇉⇉⇉ … Technical Specialist & Author for ContentLab.io
- 2018 ⇉⇉⇉ 2022 Technical Lead Engineer for C# .NET at a gov.uk
- 2016 ⇉⇉⇉ 2018 Software Engineer at a gov.uk
- 2008 ⇉⇉⇉ 2016 School Teacher 11-18 Computer Science ☆ Head of Year ☆ Head of Department.
Things I write about for other people
Most of what I do is 👻 ghostwritten but I do get authorship credit sometimes:
Microsoft-commissioned 3-Part Blog Series on GitOps with Terraform plans, GitHub, GitHub Actions, and Azure
- Part 1: Introduction to GitOps
- Part 2: GitOps with Terraform and GitHub
- Part 3: GitOps Provisioning with GitHub Actions
Microsoft-commissioned 3-Part Blog Series on Azure Arc
- Part 1: Deploying to Azure Arc via Azure Application Services Part 1: Getting Started with Azure Application Services
- Part 2: Deploying to Azure Arc via Azure Application Services Part 2: Running Azure Functions Anywhere
- Part 3: Deploying to Azure Arc via Azure Application Services Part 3: Deploying a Multi-cloud Azure App Service Web App
Docker
Guest post on Docker blog: Deciding Between Docker Desktop and a DIY Solution
Mattermost (2 Blog Articles)
Mattermost is the leading open source collaboration platform. I was asked to write 2 articles.
- Article 1: Mattermost Installation: The Important Details for Sysadmins
- Article 2: Getting started with Mattermost integrations
Microsoft-commissioned 3-Part Blog Series on Teams and PowerApps
- Part 1: Build a Teams Power App for Manufacturing 1: Get Started with Dataverse
- Part 2: Build a Teams Power App for Manufacturing 2: Create the Customer UI
- Part 3: Build a Teams Power App for Manufacturing 3: Create the Manufacturer UI
Some other topics I’ve ghostwritten on recently
- A white paper on secure supply chains
- Best Practices For Secure Development From Home
- Distributed systems tracing with OpenTelemetry in .NET Core (with example dockerised services)
- Caching in ASP.NET Core
- Distributed caching (example .NET application written)
- Breaking up monolithic applications into microservices
- Python Flask authentication with OpenID Connect (including example application)
- Technical debt
- Continuous Integration and Deployment pipelines
- Developer workspaces and ‘Flow’
- Outsourcing testing
- Testing low-code/no-code applications
- Documentation for a PDF .NET library (including example application)
- Identity Management (a paper comparing customer-facing and internal systems)
- Integrating a leading open source collaboration platform with Jenkins and other examples
Talks and Conferences
- Contributor, Government Transformation Summit, May 2023.
- Guest appearance on Day Two Cloud, a Packet Pushers podcast, to talk about OpenTelemetry. Listen to it here or on your favourite podcast platform via pod.link.
- Talk: The Modern Observability Problem and OpenTelemetry. February 2023, DevOps North East.
- Talk: The Modern Observability Problem and OpenTelemetry. October 2022, Homes England Software Community.
- Contributor, Government Transformation Summit, September 2022.
- Lightning talk: Introducing Azure App Configuration. January 2020, UK Hydrographic Office
Awards
- 1 Jan 2019 - CodeProject MVP 2019 MVA Most Valuable Author Award - ‘We recognize and value your exceptional contributions and commitment to the technical communities worldwide. By sharing your real world expertise and technical skills, you demonstrate outstanding technical community leadership.’
- 15 Nov 2018 - First Prize: Best Article of October 2018 with A Re-Introduction to C# References Post C# 7
- 24 Aug 2018 First Prize: Best Article of July 2018 with A Super-Simplified Explanation of .NET Garbage Collection
- 18 May 2018 First Prize: Best C# Article of April 2018 with C# Debug vs. Release Builds and Debugging in Visual Studio – from Novice to Expert in One Blog Article
- 23 Mar 2018 - First Prize: Best C# Article of February 2018 with Addressing a Simple Yet Common C# Async/Await Misconception