Moving Four Hugo Sites from Netlify to Cloudflare Pages
Four Hugo sites moved from Netlify to Cloudflare Pages in one week, with a written baseline, a preview check before any DNS change, and a small Pages Function to replace a Netlify rewrite.
Four Hugo sites moved from Netlify to Cloudflare Pages in one week, with a written baseline, a preview check before any DNS change, and a small Pages Function to replace a Netlify rewrite.
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.
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.
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.
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.
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.
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.
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.
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.
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.