Shane Hartman


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