RSSAmplifier

Blog

Angels && Daemons - https://petersouter.xyz

Recent content on Angels && Daemons - https://petersouter.xyz

petersouter.xyzRSS feed ↗97 posts

Latest posts

Ergonomic 4000

Microsoft doesn't get enough credit for hardware, and the Ergo 4000 is a timeless classic.

Output Styles

Two lesser-known Claude Code output styles that turn the agent from autopilot coder into a teacher.

1Password Signing

Setting up SSH-based git commit signing when 1Password is already running your SSH agent.

Tech Bloggers I Enjoy Reading

A running list of tech bloggers whose writing I actively look forward to.

Earth Projection

Map projections, the Dymaxion map, and how the framing you choose determines what you can see.

Ma (間)

The Japanese concept of intentional negative space - and why it stuck with me since film studies.

Terrance Gore

On Terrance Gore, the one-tool king.

Conciseness

Quotes about brevity and why I struggle with it.

April Update: Gardens, Grass, and Big Fish

A quick April check-in: digital gardens, AI-assisted editing, and rediscovering the joy of reading.

Cap

On baseball caps.

Catching the Big Fish

On David Lynch's Catching the Big Fish.

Coffee

My coffee journey and preferences.

Cold Brew

Making cold brew coffee at home.

Commits

My opinions on writing good git commit messages.

Dishoom

The best restaurant chain in the UK.

Dodgers

Notes on the Dodgers.

Foursquare

Still checking in, long after the war was over.

How?

How a Brit became a baseball fan

Inspiration

Where the idea for this garden came from.

Italian Penicillin

The soup that fixes everything.

macOS Code Signing

Trying to get Apple Developer code signing working on macOS.

NocFree

The split keyboard I use and love.

Pile of Shame

The ever-growing reading list.

Podcasts

Podcasts I listen to and recommend.

Windows Code Signing

Figuring out code signing certificates for Windows EXE installers.

Why A Garden?

A short note about why this section exists.

I Failed, But I Feel Good: GenAI, Blogging For Fun and Touching Grass

I missed my self-imposed blogging deadline, but it worked out ok...

CfgMgmtCamp 2026 Trip Report

A trip report from CfgMgmtCamp 2026 in Ghent, Belgium.

My 2026 Blogging Plans

My content roadmap for 2026: conference speaking, GenAI topics, blog infrastructure updates, and personal goals.

Back on the Horse: Refocusing on What Matters in 2026

A post about avoiding burnout and building external accountability for blogging in 2026.

Peter Souter Conference Talks

Filter by Year: Clear All 2026 2025 2020 2019 2018 2017 2016 2014 Filter by Conference: Config Management Camp Continuous Lifecycle London DevOps.lt DevOpsDays Amsterdam EPAM SEC FOSDEM HashiConf US HashiCorp London User Group HashiCorp Webinar HumanOps London Infracoders PuppetConf TestCon Europe Showing 22 of 22 talks Untaggling Strings: Getting CI Visibility for Vox Pupuli Tests 2026 Config…

Site Information

Odds are if you have ended up on this site you found something interesting or helpful. The following information gives insight on the tools and technologies used on this site. Nerd facts Why Static? I really dislike CMS websites. When I see blogs that have code snippets that are a pain to view I cry a little. Sure Hugo and Jekyll are harder to get the way you want. Customizing it can be very time…

Testing CLI apps with Aruba (Ruby or Not)

CLI Acceptance Testing One of my hobbies is writing little CLI apps to create workflows, automate and solve issues I’m having. The one I’ve probably tinkered with the most is gitsweeper . Gitsweeper is a golang re-write of git-sweep , a python CLI tool I’d been using for a while to clean up branches that had been merged into the master branch. Because these apps are very small…

Bootstrapping a new OSX device: A Brief History and Current Approach

Bootstrapping I’ve had to setup 3 different macbooks from scratch recently, and it made me think of the whole process of Macbook bootstrapping. It’s something I’ve done a fair few times over the years, either because I’ve change jobs, get a new personal Macbook or, as is the case recently, had to nuke a work laptop back to factory settings and start again after a buyback program. It lead me…

Adding my Provider to the Terraform Provider Registry

I’ve blogged previously about my tinkering with my own Terraform provider for fetching external IPs One of the more fiddly parts I found when using a custom provider is how to use it with the rest of your Terraform code. You could either bundle it with terraform-bundle , or add it as git submodules to the repo you run your code in . Neither are particularly ideal, as you’re either…

Making Käsespätzle

Making Käsespätzle

Vault Caching with Auto-Auth and Puppet

Vault Caching with Auto-Auth and Puppet So I’ve done a lot of work with Vault and Puppet and how they integrate with each other. I was recenlty posed the question: How would these Puppet runs calling out for secrets affect the performance of Vault, and if it was possible to cache the results? So I did a little digging and the answer is Yes, it’s possible! Vault Caching In the 1.1.0…

S3 Download Progress Bar in Golang

S3 Download Progress Bar in Golang Through a series of yak-shaves, I ended up needing to be able to do an S3 download on a machine without python on it, so I couldn’t install the AWS CLI. However, it could run a pre-compiled binary of something, which is easy to generate in Golang. I was still tinkering around with Cobra and CLI apps, so I thought… how hard can it be?

Testing and mocking stdin in Golang

Testing and mocking stdin in Golang I’ve been playing around with cobra recently, as it’s an awesome library for CLI applications. I always like CLI apps for learning a language, so I’ve been tinkering with a CLI app to interact with Terraform Enterprise’s API, which will force me to talking to external APIs, interpret the result and displaying it to the user. Testing,…

Fixing common spelling errors with misspell

Fixing common spelling errors with misspell I’ve been writing a lot of documentation recently, so I’ve been looking at ways of detecting spelling mistakes. The main spelling tool you’ll find is Aspell , and it works fine. With a little bit of shell scripting, you can generally point it at some text and it’ll find mispellings: find ./content/source/ -maxdepth 5 -name "*.md"…

Demonstrating the GCE Auth method for Vault

Demonstrating the GCE Auth method for Vault

Writing and playing with custom Terraform Providers

Writing and playing with custom Terraform Providers I’ve been digging deeper on Terraform. It’s something I’ve tinkered with in the past, but I’ve not really sat down to really use it in anger and try and tie a large project together. So, I picked something that I recently was doing manually: the configuration of a demo of Vault with the GCP backend. Right now I was doing most of the steps for…

How to use Vault with Hiera 5 for secret management with Puppet

How to use Vault with Hiera 5 for secret management with Puppet

Migrating my blog from Ghost to Hugo

Moving from Ghost to Hugo

An End of an Era and New Opportunities

Old jobs and new jobs

About

I’m a developer turned operations person, turned consultant, turned pre-sales engineer turned Technical Account Manager. I’ve previously worked at HashiCorp, Puppet, Kainos and Simply Business, wearing a variety of hats: developer, operations engineer, pro services engineer. I’ve worn a lot of hats, but I’m a big fan of Customer Success type roles, helping out customers,…

An Eventful 2017

Wow, I didn't blog at all in 2017

License

The MIT License (MIT) Copyright (c) 2026 Peter Souter Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and…

Day 30 vdm30in30 is over!

Well, here it is, Day 30 of the #vdm30in30 . Here’s some stats on the last 30 days of posts: 23,343 Words 213,374 Characters 238 Sentences 29 Paragraphs 1 hr 25 mins Reading Time 2 hrs 10 mins Speaking Time Most used words: puppet 264 (4%) provider 116 (2%) puppetlabs 93 (1%) package 90 (1%) should 87 (1%) code 85 (1%) cockpit 85 (1%) opt 84 (1%) executed 80 (1%) run 79 (1%) Not sure how…

A Puppet pattern for version specific config settings

Day 29 in the #vDM30in30 Image from https://flic.kr/p/sqiJKP Let’s talk about the lifecycle of a Puppet run. The Puppet agent process collects information about the host it is running on including facts, which it passes to the server. The parser uses that system information and Puppet modules on local disk to compile a configuration for that particular host and returns it to the agent. The…