Guides
Problems I’ve solved on real servers and real projects, written up in enough detail that you can solve them too. Each one explains the why as well as the how, and says plainly where your setup might differ from mine.
PHP2Shell on PHP you can’t upgrade
October 23, 2026
Two remote-code-execution bugs, no patch for an old PHP, and no time to upgrade it. The small, testable layers that take away what PHP2Shell needs, including a kernel memory limit that turns its out-of-memory trigger into a clean kill.
Home server email, by way of Gmail
July 1, 2026
My ISP won’t let a home server send mail, and fair enough. How my sites’ contact forms still get through: msmtp hands every message to Gmail with an app password, and PHP never knows the difference.
Make the PDF, don’t keep it
April 21, 2026
Four hundred thousand saved certificates, and learners still got the wrong ones. Why building a PDF on request and streaming it beats writing it to disk, with a template that fits any paper size and the Dompdf quirks to watch for.