Welcome to my blog

Join me on my journey as I share my insights and experiences on all things Apple, Business and Entrepreneurship!

Scripts

2026

Automating JAMF Pro Email Notifications with SendGrid (Smart Group Driven Workflows)

Modern device management isn't just about enforcing policies—it's about communicating effectively with users at the right time. In JAMF Pro, Smart Groups give you powerful visibility into device state, but they don't natively solve the problem of proactive, automated user communication. Whether you're trying to prompt users to restart their machines, complete updates, or take action on compliance issues, bridging that gap requires a flexible and scalable notification system.

Leaving Flickr: Migrating 20,000+ Photos to Synology and Taking Back Control

There’s a certain kind of friction you start to notice when you’ve been using a service for a long time. Not enough to make you leave immediately, but enough to make you pause. Flickr had been that kind of service for me. It quietly held years of photos, uploads from old phones, albums I hadn’t looked at in ages, and a massive "Auto Upload" collection that had grown into something I didn’t fully understand anymore.

2025

Exploring the Apple Business Manager API: A Hands-On Playground

If you’ve ever tried to talk directly to the **Apple Business Manager (ABM) API**, you already know the process can feel like deciphering a secret code. Between private keys, encrypted certificates, ES256 signatures, and OAuth2 flows... there’s a lot going on under the hood. This complexity is what makes direct communication with ABM so challenging, requiring a deep understanding of its intricacies to navigate successfully.

Updating Safari on macOS with Jamf Pro: Three Practical Strategies

Keeping Safari updated is one of the simplest ways to harden a macOS fleet. Apple ships security fixes for Safari frequently, and those patches often land before a full macOS point release. This means that by keeping Safari up-to-date, you can ensure your users have access to the latest security protections without having to wait for a major operating system update. If Safari is lagging behind, your users are browsing the web with a larger attack surface than necessary.

Hunting Down Jamf Profile Payloads with Python

If you've spent enough time living inside Jamf Pro, you eventually run into the same problem: someone set a configuration somewhere, sometime, and nobody remembers where. It might be something obscure – a certificate payload, a conditional SSO predicate, or that one security preference quietly misbehaving on three machines in accounting. And when you have dozens of configuration profiles, each with multiple payloads, nested keys, and XML-wrapped values, finding that setting can feel like forensic archaeology.

Keeping Jamf Security Cloud Current for Microsoft 365: Updated Routing Policies

When I first wrote about troubleshooting Standard Routing Policies in Jamf Security Cloud, the goal was simple: help admins keep Microsoft Teams and Microsoft 365 traffic flowing smoothly through Jamf Trust + App-Based VPN. This straightforward objective remains unchanged, as the complexities of network configurations can often lead to frustrating issues that hinder productivity.

Ensuring Jamf Trust VPN Stays Connected with Jamf Pro

Keeping your organization's VPN always connected is crucial—especially with Zero Trust Network Access (ZTNA) frameworks like **Jamf Trust**. One of the challenges with **Jamf Trust** is that it does *not* automatically open or reconnect on startup or login by default. However, with a combination of Jamf Pro policies, a custom script, and an extension attribute, you can ensure your users stay securely connected at all times, even when their devices are restarted or logged out. This setup helps maintain continuous access to network resources while adhering to the security standards...

Troubleshooting Standard Routing Policies in JAMF Security Cloud

As a fairly new administrator of JAMF Security Cloud, it was the ease of which its administration that admittedly drew me in. Quite an elegant solution for securing the various apps on business workstations with premade app-based VPN routing rules built right in, I was hooked. The concept is simple: turn on the policies, create your enrollment, and deploy – and you're done. This straightforward approach has made it easy to integrate into our existing workflow, allowing us to focus on more critical tasks.

Enrolling M1-M4 Devices into Automox with JAMF with secure tokens

Managing Secure Tokens on macOS has long been a challenge for administrators using JAMF and Automox. In my previous post, Managing the macOS Secure Token with JAMF Pro, I discussed a script-based approach to grant Secure Tokens to additional users. However, this method required administrators to manually pass usernames and passwords into the JAMF configuration—an approach that, while effective, was not ideal from a security or usability perspective. This manual process introduced unnecessary risks and added complexity to the overall management of Secure Tokens.

Modified JAMF Compliance Editor Extension: List failed items NOT in exemption list

As promised I am continuing to look for ways to build out my JAMF Github Repo. One of the items that I have been working heavily with in my role is the macOS Compliance Project and as I am a JAMF administrator that means leveraging the JAMF Compliance Editor. The JAMF Compliance Editor gives you the ability to rapidly configure, tailor and deploy a custom baseline with the macOS Compliance Project.

How to setup exemptions with JAMF Compliance Editor

If you are new to either the macOS Compliance Project or JAMF Compliance Editor, I would recommend watching and reading the following videos and blog posts on the topic. Familiarizing yourself with these resources will help ensure a smoother understanding of the project's requirements and functionality. This will also enable you to better navigate the tools and make informed decisions about your compliance setup.

BYOD Restrictions & Strategies for 2025

As organizations continue to embrace Bring Your Own Device (BYOD) strategies, ensuring security without compromising user experience remains a challenge. This post outlines a minimum baseline for BYOD restrictions across iOS, Android, macOS, and Windows devices—providing a foundation for companies to secure personal devices while allowing employees the flexibility to work from their own hardware. While these recommendations represent best practices, they are not a one-size-fits-all solution. Each company has unique security needs, regulatory requirements, and risk tolerances, meaning these restrictions can be improved upon, debated, or modified to better...

A few helpful JAMF extension attributes for Computers

As I continue to build out my JAMF Github Repo, it was no surprise that JAMF Extensions are one of the key and fundamental elements and features that gives JAMF its edge as an MDM. Scoping is a crucial part of what makes an MDM effective, allowing for granular control over device management. The ability to group, report, and then scope to specific custom values is what sets it apart from other MDM solutions, providing a level of precision that's essential for large-scale deployments.

Some of my favorite iOS and macOS App Configurations in JAMF

As I work on building out my JAMF Github Repo, I am constantly looking at sharing some of the configurations that have worked for me and saved me time and effort. Many of these came from the JAMF Library, but some I wrote specifically due to tools and workflows that I had to tackle in my very own ecosystem. In fact, a significant portion of these custom scripts were born out of necessity, addressing specific pain points or requirements that weren't covered by existing solutions.

Automox Secure Token with modern macOS deployments

Its been a while since I have used Automox, but the premise of the tool is that it automatically patches your macOS, Linux and Windows workstations. for macOS it does this using a service account created with username _automoxserviceaccount and this account needs a secure token. The issue here is that when the package is deployed the secure token is not transferred to that account which means that it most cases it can't apply macOS updates.

Developer Strategies: How to commit to multiple git repositories with multiple unique SSH keys

One of the key challenges with git and GitHub is wanting to commit code when you have multiple repositories on your local desktop. There are lots of ways to accomplish the task of committing code with git to GitHub, the strategy that I want to discuss in this tutorial is the process of using deploy-keys defined at the repo level and a configuration file defined to call the right key depending on which repository you happen to be working in.