Shane Hartman


voicemail-transcriber: Whisper-Powered Voicemail Transcription via IMAP

A Docker service that monitors IMAP mailboxes, transcribes voicemail audio attachments with OpenAI Whisper, and forwards you the email with the transcription at the top instead of an audio file.

saslfail: Escalating Fail2ban Bans for Postfix SASL Authentication Attacks

Standard fail2ban bans just get waited out. saslfail uses escalating bans — 48 hours, 8 days, 32 days — backed by a persistent SQLite database that survives restarts and remembers

WordPress Full Site Editing: Database vs Theme Files

FSE template edits can land in the database or in your theme files — they look identical in the editor. Understanding the difference matters the moment you try to deploy,

Hardening a WordPress Server in an Afternoon

Most WordPress hardening guides are bloated with solved problems. This is the version for self-hosters who want to spend an afternoon on what actually matters: permissions, auth, and server config.

Converting a WordPress Child Theme to Standalone

Once your child theme has its own templates, patterns, and functions, the parent is just dead weight with update risk. Here's when and how to cut the dependency and own

Parsing DMARC Reports with parsedmarc, Elasticsearch, and Kibana

Your domain is probably being spoofed right now. DMARC reports tell you exactly how — but they arrive as unreadable XML. parsedmarc, Elasticsearch, and Kibana turn them into something actionable.

Why Your Apache Cipher Suite Probably Has RC4 in It

If your Apache SSL config is a few years old, RC4 is probably still in it. Modern browsers skip it, but scanners flag it and it should go. Here's how

Managing WordPress with Git: What Actually Works

WordPress and git work fine together if you know what to version control. The trap nobody warns you about: FSE template edits that silently land in the database instead of

sonos-alexa-api: A Modern TypeScript Rewrite of the Sonos HTTP API

A ground-up TypeScript rewrite of node-sonos-http-api with Alexa skill support, sub-200ms response times, 96% test coverage, and minimal runtime dependencies. Built to run reliably on a home server.

Train spamassassin using amavis under Ubuntu

If you run amavis, sa-learn won't see live mail the way spamd would. Here's how to collect misclassified messages from your mail client and feed them to SpamAssassin's Bayes classifier