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