The blog
Writing
37 posts on cloud, automation, AI agents, and the homelab.
Build a Self-Healing AI Content Agent with Claude Agent SDK
I got tired of the content grind. Write a post, format it for X, reformat for Bluesky, render a video, upload to YouTube, cross-post to Instagram — repeat daily. It was eating 2-3 hours every day. So I built a self-healing AI content agent that does all of it. It runs 24/7 on a Mac…
Run a Claude Agent on a Schedule: Cron Jobs, Persistent Memory, and Error Recovery
Building an AI agent is the easy part. Making it run a Claude agent on a schedule reliably every day without babysitting — that’s where most tutorials stop. I run an autonomous Claude agent called Koda. It executes 15+ scheduled tasks daily: pulling analytics from YouTube, Google Search Console, and Instagram, scanning X for viral…
Automate Your Blog Publishing in 2026: From Draft to Live in One Command
Blog automation saved me 15-20 minutes per post. That’s the manual workflow: write in your editor, open WordPress, paste and reformat, upload a featured image, configure SEO metadata, hit publish. Multiply that by 3-4 posts per week and you’re losing hours to busywork that adds zero value. I built a system that takes a markdown…
Docker Containers with Unraid NFS: Fix Stale File Handle Errors
If you’re running Docker containers with Unraid NFS shares, or any server serving NFS shares, you’ve probably encountered the “stale file handle” problem. I’m running Proxmox as my hypervisor with multiple VMs: one running Unraid as my NAS, and another running my media stack (Plex, Radarr, Sonarr, etc.) in Docker containers. The Docker VM pulls…
How I Deploy n8n to Hetzner Cloud with OpenTofu
I wanted to deploy n8n to Hetzner Cloud with OpenTofu with proper security, SSL certificates, and infrastructure-as-code—because the manual process was eating hours of my time. Spinning up a new self-hosted n8n instance used to take me about an hour of clicking through interfaces and running commands. Now I do it in under 5 minutes…
Adding Bluesky Rich Link Preview cards to Postiz
Rich link preview cards make a real difference on Bluesky—the clickable previews that show a title, description, and image when you share a URL. Same thing Twitter does with Open Graph cards. They get more engagement than plain text links. The problem? Postiz doesn’t support this yet for Bluesky. Hillary Torn has a pull request…
Automate WordPress Blog Publishing with Airtable and n8n
I wanted to automate WordPress blog publishing because the manual process was killing my productivity. Between writing content, make featured images, uploading to WordPress, configuring SEO settings, and double-checking everything looks right—publishing a single post used to take me 15-20 minutes of clicking through different interfaces. Now I do it in 30 seconds with 5…
How I Automatically Sync My Skool Members to Airtable Every Day
Keeping a daily list of my Skool members in Airtable has become a cornerstone of how I run automations, track subscriptions, and trigger workflows based on real membership state. Skool doesn’t currently offer a public API for member exports, and manual CSV downloads don’t scale. So I built a daily automated sync that: Exports my…
Automate Blog Image using Python and n8n
A while back I wrote about how I automate blog image creation using Python. It worked, but I had to open a CSV file, type in the title, and then open the terminal to run the script. Now using Airtable or nocoDB, I’ve automated the process completely. Here’s how to automate blog image using Python…
Automate Proxmox VMs with Cloud-Init
In my previous post, I showed how to provision VMs with NoCloud. That works great, but there’s an even faster approach: storing your cloud-init config directly in Proxmox’s snippets folder and referencing it with –cicustom. Automate Proxmox VMs with Cloud-Init method is cleaner, more manageable, and scales better when you’re provisioning multiple VMs with similar…
Docker Compose NFS Bind Mount: Fix .env Conflicts & Permissions
Recently while setting up a Docker Compose-based media stack, I ran into a tricky issue. It looked like everything was working, the containers were up, the mounts were in place, and the files were visible, yet I couldn’t write to my NFS share from inside the containers. Here’s what happened, and how I fixed it….
Build a Voice-Enabled AI Agent in n8n
When I started playing with AI Agents inside n8n, I wanted to go beyond just asking questions. I wanted a real assistant—something I could talk to (literally), that could respond, take action, and help automate everyday tasks like sending emails or booking meetings. The result was a self-hosted AI Agent that works entirely through Telegram….
How to Deploy Fonts on macOS Using Microsoft Intune
Microsoft Intune allows IT admins to remotely deploy fonts without requiring manual installation. In this post, I’ll walk through how to install fonts on macOS via Intune using a Bash script. Why Deploy Fonts via Intune Prerequisites Before proceeding, ensure you have: Step 1: Prepare the Deployment Script This guide can be used to deploy…
Automate Blog Image Creation Using Python
Creating a featured image for every blog post used to be the most tedious part of publishing for me. I wanted consistent, branded visuals — but manually designing them in Canva, copying over titles, tweaking layouts, and exporting each one quickly became a chore. So I automated the entire process. Now I generate 1200×628px featured…