Use AutoPkg to package GitHub repositories with no binary assets
How to package GitHub repositories with AutoPkg, even when no binary assets are present.


Manage and enforce custom Login and Background items in macOS Ventura
How to enable and enforce your custom scripts in macOS Ventura using the new service management Configuration Profile payload.
How to sign scripts and other custom code
Instructions on code signing the scripts, LaunchAgents, LaunchDaemons and other custom code you deploy to your endpoints.
How to examine the network traffic of MDM enrollment during Setup Assistant
Advice on enabling the root account and running tcpdump during macOS Setup Assistant to record network traffic during initial MDM enrollment.
Slides and video for the 'Solving problems with custom AutoPkg processors' session at the University of Utah Mac Admin Meeting
I gave a presentation about my DatetimeOutputter and AppIconExtractor processors at the May 2022 session of the University of Utah Mac Admin Meeting.
Output the Date and Time in AutoPkg Recipes
An AutoPkg processor to utput the current date and time, and optionally output future or past dates and times for use in other processors.
Dynamically Add Dock Items with the Jamf Binary
A quick trick to programmatically add an icon to a user's Dock.
Automatically Export and Generate App Icons in AutoPkg Recipes
AppIconExtractor examines an app and exports its icon as a PNG image file (reading the CFBundleIconFile property from an app's Info.plist and saving that image as a PNG file. Additionally, AppIconExtractor can create icon variations by compositing a secondary image on top of the app's icon.


Stopping an AutoPkg Recipe if VirusTotal Detects Malware
How to stop an AutoPkg run – and avoid uploading a potentially compromised package to your infrastructure – if VirusTotal detects malware.
Using JXA in Jamf Pro Scripts and Extension Attributes
Quick advice on using JavaScript for Automation (JXA) in both Scripts and Extension Attributes within Jamf Pro.
How to Parse JSON on the macOS Command Line Without External Tools Using JavaScript for Automation
One way to parse JSON on the macOS command line, using only native tooling without external dependencies like jq or similar.
How to Disable iCloud Private Relay in macOS Monterey
Learn how to disable iCloud Private Relay in macOS using a Configuration Profile.
Getting the currently logged-in user's ID (UID) for launchctl
A reliable method to determine the logged-in user's user ID (UID) for use with launchctl.
Renaming Computers via Snipe-IT using Jamf Pro
How to integrate Jamf Pro with Snipe-IT to set the computer hostname to match your inventory management system.


Don't disable accessibility options during Setup Assistant
You really shouldn't skip the new 'Accessibility' pane in macOS Setup Assistant.


Sending Autopkg and JSSImporter Notifications to Google Hangouts Chat
Two AutoPkg processors to send you the results of an AutoPkg run in Google Chat.


Helping Your Users Reset TCC Privacy Policy Decisions
How to set up a Self Service utility to help your users reset their Privacy decisions.
Signing Configuration Profiles
The definitive guide – I think? – to signing your Configuration Profiles.
Express Setup, Location Services, Time Zone, and High Sierra
Explaining the correct combination of Setup Assistant screens to skip for an optimal user experience.
Automatically Renaming Computers from a Google Sheet with Jamf Pro
How to automatically rename computers based on values in a Google Sheet.
Wait, is my Mac Up to Date?
Methods to help your users self serve their macOS update needs.


Integrating DetectX Swift with Jamf Pro for Scheduled Malware Scanning
Automatically run DetectX Swift and report the results to your Jamf Pro instance.
Creating a Naming Scheme for Jamf Pro
Name items in your Jamf Pro instance consistenty as a favor to your colleagues and your future self.
How to Manage Only FileVault Recovery Key Escrow with Jamf Pro
How to properly create a Configuration Profile to manage FileVault Recovery Key Escrow for Mac OS X 10.13 and above.