Giving Scripts a Capability Instead of a Secret: Testing Apple's ManagedApp Framework

A proof of concept for delivering an API credential through Declarative Device Management and letting a signed broker use it, so MDM scripts can trigger an authenticated request without ever holding the secret. Includes the signing, install-behavior, and asset-hosting problems that cost me most of two days.

October 1, 2026 · 7 min · Matt Parker

Backing Up Departing Employees' Macs: A Bash Imaging Pipeline

How a SwiftDialog-driven backup script grew into a resumable, self-healing pipeline: rsync with stall recovery, encrypted DMG archives, a launchd-driven NAS queue with checksum verification, and a signed package built over a hundred times.

September 27, 2026 · 7 min · Matt Parker

Forking App Auto-Patch to Stop the Infinite Patching Loop

How I forked App Auto-Patch to fix users being re-prompted for weeks: an accumulating discovery cache that locks on install day, a cadence gate, a cache-only Self Service workflow, and a pile of lessons about 1Password’s background processes.

September 15, 2026 · 8 min · Matt Parker

Jamf App Baseline Manager: From a Python CLI to a Native SwiftUI App

How a one-off cleanup of Jamf Pro mobile app records turned into a preview-first audit and remediation tool, and then into a native macOS app so nobody has to touch a CSV or a terminal.

September 8, 2026 · 8 min · Matt Parker

LocalAdmin: Time-Boxed Admin Elevation That Actually Expires

A one-day security review changed this self-service admin tool from a timer and user-writable state into a root-owned record with multiple revocation backstops.

August 31, 2026 · 7 min · Matt Parker

A Homebrew Dashboard in Jamf Self Service

A Self Service tool that shows users their pinned packages, IT policy, available updates and known vulnerabilities for Homebrew, then lets them update on their own. Most of the design came down to deciding which data to trust locally and which to ask the Workbrew API for.

August 26, 2026 · 7 min · Matt Parker

A Fleet GitOps Repo: Layout, CI, and Dry Runs

A walkthrough of a Fleet device management GitOps repo: how the YAML is organized by platform, how labels, policies, and software are scoped, and how CI dry-runs every pull request before anything is applied.

August 21, 2026 · 6 min · Matt Parker

Keeping Snipe-IT Honest: Syncing Jamf Pro and Apple Business Manager

Two small Python tools that feed Snipe-IT from both ends of a Mac’s life: abm2snipe creates pre-deployment assets from Apple Business Manager orders, and jamf2snipe keeps enrolled devices current. Notes on pagination bugs, a BYOD filter that silently didn’t work, and signing an ES256 client assertion for Apple’s newer API.

August 12, 2026 · 7 min · Matt Parker

Load & Form: A Custom Ghost Membership Site for a Video Course

Building a paid-membership Ghost theme for a structural engineering video library, deploying it from GitHub Actions, and cleaning up 200 posts of live content with careful scripts.

July 30, 2026 · 5 min · Matt Parker

Spectrapress: A Native Ghost Editor for Mac, iPhone, and iPad

What started as an offline drafting app for a travel blog became a native Ghost editor with careful sync, local and server comparison, and a review handoff. Notes on what’s built, what blocks a beta, and how I’m thinking about whether to sell it.

July 22, 2026 · 6 min · Matt Parker