<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>punkcake</title><description>Engineering documentation &amp; proofs of concept.</description><link>https://punkcake.net</link><item><title>Rebuilding punkcake.net: from Lovable and headless WordPress to Astro on Cloudflare</title><link>https://punkcake.net/blog/rebuilding-punkcake-astro-cloudflare</link><guid isPermaLink="true">https://punkcake.net/blog/rebuilding-punkcake-astro-cloudflare</guid><description>How this site went from a Lovable app on a Node server, reading posts from WordPress on every request, to static pages on Cloudflare with a git-based editor, perfect Lighthouse scores and almost nothing to maintain.</description><pubDate>Tue, 27 Oct 2026 12:00:00 GMT</pubDate><category>Astro</category><category>Cloudflare</category><category>Sveltia CMS</category><category>Performance</category></item><item><title>VPN port forwarding without opening my router: gluetun, Proton and slskd</title><link>https://punkcake.net/blog/vpn-port-forwarding-gluetun</link><guid isPermaLink="true">https://punkcake.net/blog/vpn-port-forwarding-gluetun</guid><description>How I gave a peer-to-peer client an open port through ProtonVPN, then replaced my first working version because of a security setting I didn&apos;t like.</description><pubDate>Sun, 25 Oct 2026 12:00:00 GMT</pubDate><category>WireGuard</category><category>ProtonVPN</category><category>Docker</category><category>Networking</category></item><item><title>A private music server: from a 15-tool plan to five containers</title><link>https://punkcake.net/blog/private-music-server</link><guid isPermaLink="true">https://punkcake.net/blog/private-music-server</guid><description>How I built a self-hosted music server on a tiny ThinkStation: Navidrome, automated tagging, Cloudflare Zero Trust for remote access, and nothing open on my router.</description><pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate><category>Docker</category><category>Navidrome</category><category>Cloudflare Zero Trust</category><category>Self-hosting</category></item><item><title>My desktop in a git repo: reusable dotfiles, and the road to NixOS</title><link>https://punkcake.net/blog/niri-noctalia-dotfiles-in-git</link><guid isPermaLink="true">https://punkcake.net/blog/niri-noctalia-dotfiles-in-git</guid><description>I moved my hand-built niri and Noctalia desktop into a private git repo, so any new machine can look and feel like mine. Next step: the whole system as code.</description><pubDate>Wed, 21 Oct 2026 12:00:00 GMT</pubDate><category>Niri</category><category>Noctalia</category><category>Linux</category><category>Dotfiles</category></item><item><title>From a self-hosted AI lab to one sandboxed Claude Code</title><link>https://punkcake.net/blog/from-ai-lab-to-sandboxed-claude-code</link><guid isPermaLink="true">https://punkcake.net/blog/from-ai-lab-to-sandboxed-claude-code</guid><description>I built a self-hosted AI lab in rootless Podman, with OpenRouter models and my own Noctalia plugins. Then I right-sized it to one AI coding assistant in a sandbox designed around a threat model: my machine stays mine, and nothing goes live without my yes.</description><pubDate>Tue, 20 Oct 2026 13:00:00 GMT</pubDate><category>Claude Code</category><category>Podman</category><category>Self-hosting</category><category>Security</category></item><item><title>Cloudflare: Edge Markdown for AI Bots</title><link>https://punkcake.net/notes/cloudflare-edge-markdown-for-ai-bots</link><guid isPermaLink="true">https://punkcake.net/notes/cloudflare-edge-markdown-for-ai-bots</guid><description>AI crawlers fetch full HTML pages and load the origin for content they turn into text anyway. I built a Cloudflare Worker that serves them pre-rendered Markdown from KV storage at the edge, with zero origin load.</description><pubDate>Tue, 15 Sep 2026 11:45:00 GMT</pubDate><category>AI</category><category>Cloudflare</category><category>Markdown</category><category>WordPress</category></item><item><title>Replit: Deploying Replit Agent Sites to WP Engine Headless</title><link>https://punkcake.net/notes/replit-deploying-replit-agent-sites-to-wp-engine-headless</link><guid isPermaLink="true">https://punkcake.net/notes/replit-deploying-replit-agent-sites-to-wp-engine-headless</guid><description>How I took a site built by the Replit AI Agent, reworked its strict pnpm monorepo for a plain Node host, and set up automated deploys to WP Engine&apos;s Headless Platform.</description><pubDate>Thu, 25 Jun 2026 11:39:00 GMT</pubDate><category>AI</category><category>Headless</category><category>Replit</category><category>WP Engine</category></item><item><title>Lovable: Deploying Lovable Sites to WP Engine Headless</title><link>https://punkcake.net/notes/lovable-deploying-lovable-sites-to-wp-engine-headless</link><guid isPermaLink="true">https://punkcake.net/notes/lovable-deploying-lovable-sites-to-wp-engine-headless</guid><description>AI site builders like Lovable target serverless hosts by default. How I got a Lovable app (Vite, TanStack Start, Nitro) running as a Node server on WP Engine&apos;s Headless Platform, with auto-deploys from GitHub.</description><pubDate>Tue, 23 Jun 2026 12:04:00 GMT</pubDate><category>AI</category><category>GitHub</category><category>Lovable</category><category>WordPress</category></item><item><title>GitHub: CI/CD Deployment Workflow for minimising downtime</title><link>https://punkcake.net/notes/github-ci-cd-deployment-workflow</link><guid isPermaLink="true">https://punkcake.net/notes/github-ci-cd-deployment-workflow</guid><description>A CI/CD pipeline I designed for a sensitive WordPress site: every push deploys to staging automatically, and production only changes through a manual, configurable copy via the WP Engine API.</description><pubDate>Thu, 22 Jan 2026 11:24:00 GMT</pubDate><category>API</category><category>Ci/CD</category><category>GitHub</category><category>WP Engine</category></item><item><title>New Relic: Suppressing New Relic PHP Warnings</title><link>https://punkcake.net/notes/new-relic-suppressing-new-relic-php-warnings</link><guid isPermaLink="true">https://punkcake.net/notes/new-relic-suppressing-new-relic-php-warnings</guid><description>How I kept the New Relic error rate meaningful on managed WordPress hosting, where the agent&apos;s settings are locked: a small MU-plugin that logs PHP warnings locally instead of reporting them.</description><pubDate>Thu, 08 Jan 2026 11:51:00 GMT</pubDate><category>Logs</category><category>New Relic</category><category>Plugin</category><category>WordPress</category></item><item><title>GitHub: Semi-Failover</title><link>https://punkcake.net/notes/github-semi-failover</link><guid isPermaLink="true">https://punkcake.net/notes/github-semi-failover</guid><description>A failover plan for a managed WordPress site with no built-in failover: GitHub Actions and the WP Engine API keep a backup environment in sync daily and move the domain to it in one click.</description><pubDate>Mon, 05 Jan 2026 11:15:00 GMT</pubDate><category>Failover</category><category>GitHub</category><category>WordPress</category><category>WP Engine</category></item><item><title>GitHub: Executing Scheduled Actions (Cron)</title><link>https://punkcake.net/notes/github-executing-scheduled-actions-cron</link><guid isPermaLink="true">https://punkcake.net/notes/github-executing-scheduled-actions-cron</guid><description>WP-Cron only runs when someone visits the site, and managed WordPress hosting often has no real cron. How I ran scheduled server commands from GitHub Actions over SSH instead, with no extra server.</description><pubDate>Mon, 22 Dec 2025 11:06:00 GMT</pubDate><category>Cron</category><category>GitHub</category><category>Scripts</category><category>WordPress</category></item><item><title>Cloudflare: Workers Cache Segmentation</title><link>https://punkcake.net/notes/cloudflare-workers-cache-segmentation</link><guid isPermaLink="true">https://punkcake.net/notes/cloudflare-workers-cache-segmentation</guid><description>How I served a cached bot version of pages to crawlers and the normal version to people, on managed WordPress hosting where the cache sits in front of PHP: a Cloudflare Worker that tags bot requests at the edge.</description><pubDate>Thu, 18 Dec 2025 10:57:00 GMT</pubDate><category>Caching</category><category>Cloudflare</category><category>WordPress</category><category>Worker</category></item><item><title>Cloudflare: Workers Failover</title><link>https://punkcake.net/notes/cloudflare-workers-failover</link><guid isPermaLink="true">https://punkcake.net/notes/cloudflare-workers-failover</guid><description>When the origin server goes down, the site usually goes with it. A Cloudflare Worker I built reroutes visitors to a failover origin on server errors or timeouts, while the address in their browser stays the same.</description><pubDate>Wed, 10 Dec 2025 10:50:00 GMT</pubDate><category>Cloudflare</category><category>Failover</category><category>WordPress</category><category>Worker</category></item><item><title>GoAccess: Automatic Daily Log Offload and Dashboard</title><link>https://punkcake.net/notes/goaccess-automatic-daily-log-offload-and-dashboard</link><guid isPermaLink="true">https://punkcake.net/notes/goaccess-automatic-daily-log-offload-and-dashboard</guid><description>A proof of concept I built to offload a site&apos;s access logs every day without an S3 bucket, and turn them into a GoAccess dashboard. The same approach works with other log tools and servers.</description><pubDate>Thu, 01 May 2025 10:41:00 GMT</pubDate><category>GoAccess</category><category>Logs</category><category>Observability</category><category>WordPress</category></item></channel></rss>