TLM: It’s a Trap (And I’m Still in It)
July 7, 2025
The Path to Staff Engineer and Beyond: Staying on the IC Train
June 12, 2025
Zero Trust for Mac Admins at MacAD.UK
May 14, 2025
Investigating unpatched CVEs with osquery and SOFA
May 3, 2024
Zero Trust is not Zero Effort: Planning your Zero Trust strategy at MacSysAdmin 2023
October 6, 2023
The risks of relying on Generative AI when writing scripts
June 27, 2023
Gone Phishing: Airbnb’s Journey to phishing resistant MFA at MacAD.UK 2023
May 31, 2023
What’s nagging you? Getting to the bottom of Managed Login Items
February 8, 2023
The Accomplishment Spreadsheet
December 7, 2021
A pragmatic approach to endpoint security at MacSysAdmin
October 11, 2021
Movember 2021
September 23, 2021
A pragmatic approach to endpoint security
January 14, 2021
Installing Rosetta 2 on Apple Silicon Macs
November 13, 2020
Apple Silicon in Enterprise
September 21, 2020
Making friends with your security team
August 26, 2020
Managing macOS Profiles with Configuration Management in 2020
July 16, 2020
Go for endpoint management
June 1, 2020
My Perfect VS Code Setup
May 28, 2020
Restricting access to the Crypt GUI in AWS
January 13, 2020
Introducing MDMDirector
December 19, 2019
Here’s the deal
November 27, 2019
Imaging is dead (RIP Imagr)
September 20, 2019
MacAD.UK 2019 Resources
March 27, 2019
MacAD.UK 2019
March 4, 2019
Deploying a Munki repo in five minutes with Terraform
October 31, 2018
Optimizing Postgres for Sal
August 29, 2018
Conference Talks (Summer 2018 Edition)
May 7, 2018
Google Chrome update notifications with Yo
March 14, 2018
MacAD.UK 2018: Curing operating system blindness
February 21, 2018
Custom DEP Packages
December 20, 2017
Enabling Kernel Extensions in High Sierra
September 11, 2017
Open sourcing Airbnb’s Puppet module for Munki
September 6, 2017
High Sierra and my open source tools
June 7, 2017
MacDevOps YVR
June 6, 2017
Using Python in Puppet Facts
April 21, 2017
Using Caddy to HTTPS all the things
April 4, 2017
Loading LaunchAgents as root
March 25, 2017
Something something commercial, something something opensource
February 8, 2017
Pocket Mac admin’s guide to London
January 19, 2017
Imagr with target disk mode
January 11, 2017
Enable SIP with Munki
December 15, 2016
Sal: an overview
December 7, 2016
MacAD.UK 2017
November 4, 2016
0 to Imagr-ing in 45 minutes
October 6, 2016
Return of the Yo notifications
September 5, 2016
More notifications with Yo: The Yo Strikes Back
August 29, 2016
Nicer notifications with Yo
August 23, 2016
Hands on with Imagr at MacDevOps:YVR
June 21, 2016
Conference Season 2016
May 11, 2016
Getting started as a Mac admin
May 5, 2016
Managing OS X Profiles with Puppet
March 30, 2016
MacAD.UK 2016: Puppet on OS X
February 10, 2016
Dynamic first boot scripts with Imagr and Flask: Part 4
January 20, 2016
Imagr 1.0.0 Released
January 14, 2016
Dynamic first boot scripts with Imagr and Flask: Part 3
January 13, 2016
Dynamic first boot scripts with Imagr and Flask: Part 2
January 7, 2016
Dynamic first boot scripts with Imagr and Flask
January 5, 2016
Imagr 0.0.5
December 15, 2015
Automated timed releases with Munki
December 13, 2015
Crypt 2 Alpha Release
December 3, 2015
Redirecting Munki Downloads
December 1, 2015
Releasing Changes With Sharding
November 23, 2015
MacTech 2015: Hands on with Imagr
November 12, 2015
Detecting when a Munki client is on the corporate network
October 15, 2015
Upgrading OS X using a package
September 28, 2015
Using a proxy container with Docker for virtualhosts
August 26, 2015
Mac Admin & Developer Conference UK
July 21, 2015
Running Puppet Server in Docker Part 3: Hiera
July 18, 2015
Using the Sal API
July 10, 2015
The future of Sal
June 26, 2015
Running Puppet Server in Docker Part 2: r10k
June 24, 2015
Running Puppet Server in Docker
June 22, 2015
Using munki-trello with Git
June 16, 2015
Introducing Imagr
May 8, 2015
Testing BSDPy in Vagrant
April 28, 2015
Getting started with BSDPy on Docker
April 22, 2015
More fun with AutoNBI
April 13, 2015
Building custom NetInstalls with AutoNBI
April 12, 2015
Managing Munki catalogs with Trello
February 11, 2015
Migrating scriptRunner to Outset
January 4, 2015
Creating Business Units and Groups in Sal using a CSV
December 8, 2014
Slides and notes from Twisting Munki
November 6, 2014
first-boot-pkg updated for Yosemite
October 21, 2014
London Apple Admins
August 24, 2014
Personal Automation: Munki (Part 2)
July 27, 2014
Personal Automation (Part 1)
July 26, 2014
Automate yourself out of a job
July 10, 2014
Multi tenanted Munki with Puppet and Sal
July 9, 2014
Making packages with AutoPkg
June 30, 2014
Deploying Sal on Heroku
May 19, 2014
first-boot-pkg
April 21, 2014
Updating Boxen
April 4, 2014
Binding to Active Directory with Munki
April 1, 2014
Writing Plugins for Sal: Part 3
February 17, 2014
Writing Plugins for Sal: Part 2
February 7, 2014
Writing plugins for Sal: Part 1
January 26, 2014
Sal: The Munki Puppet
January 17, 2014
Managing the Authorization Database with Munki
December 22, 2013
Crypt 0.5 released
November 19, 2013
AFP548 Podcast Episode 4: Don’t Stab Yourself in the Leg, Then
November 13, 2013
Setting a desktop picture in Mavericks
October 28, 2013
ZNC: An IRC Bouncer
October 13, 2013
Creating an OS X base box for Vagrant with Packer
August 23, 2013
The Luggage: Further automation
August 19, 2013
The Luggage: An Introduction
August 9, 2013
Using crankd to react to network events
July 12, 2013
Managing Macs with Puppet at PSU 2013
May 24, 2013
One bootstrap package to rule them all
April 7, 2013
Getting Started With Puppet on OS X (Part 4)
March 5, 2013
Getting Started With Puppet on OS X (Part 3)
February 24, 2013
Building a test Puppet Master with Vagrant
February 13, 2013
Getting started with Puppet on OS X (part 2)
January 27, 2013
Getting started with Puppet on OS X (part 1)
January 25, 2013
Crypt: A FileVault 2 escrow solution
January 18, 2013
Casper Vs Munki
January 13, 2013
Updating InstaDMG based NetRestore images
January 7, 2013
InstaDMG Tips
January 5, 2013
MacScripts
January 1, 2013
Casper versus DeployStudio
December 15, 2012
MacNamer
December 12, 2012
Meraki Systems Manager
November 12, 2012
Five reasons sysadmins should use Git
September 21, 2012
Location based printers with Puppet
August 18, 2012
Making a Mountain Lion Recovery HD
July 28, 2012
Google Directory?
July 1, 2012
Run munki at boot
May 7, 2012
Headless VirtualBox
April 21, 2012
Profile Manager Enrollment Package
April 6, 2012
Hello Octopress
April 3, 2012
The agony and ecstasy of 100meg broadband
March 24, 2012
Making a Lion Recovery HD revisited
February 23, 2012
Making a Lion Recovery HD
February 1, 2012
Web server on Linode part 1
January 1, 2012
Thoughts on Profile Manager
December 10, 2011
Backing up Postres in Lion Server
November 29, 2011
Kerio Connect vs Web Services in Lion Server
November 22, 2011