Blog
-
Building an AI Agent Layer for E2E Test Automation
How I structured a knowledge-driven AI agent setup using Cline that lets any developer generate, debug, and maintain E2E tests with minimal domain knowledge — by encoding team patterns into machine-readable files.
-
Fixing 40+ WCAG Contrast Violations with axe-core and Property-Based Testing
How I found, verified, and permanently prevented color contrast accessibility failures on this portfolio using axe-core, fast-check, and a CI pipeline that blocks regressions automatically.
-
Local AI Code Reviews on GitHub PRs with LM Studio and GitHub Actions
How I set up automated PR code reviews using a locally running Qwen2.5 Coder model via LM Studio, Tailscale, and a self-hosted GitHub Actions runner — with a graceful fallback when the PC is off.
-
Zero-Exposure CI/CD: GitHub Actions, Self-Hosted Runner, and SSH over Cloudflare Tunnel
How I deploy this portfolio from a GitHub push to a home server in my living room — using a self-hosted runner and SSH tunnelled through Cloudflare, with no open ports anywhere.
-
Self-Hosting Without Opening Ports: Cloudflare Tunnel + Traefik
How I serve this portfolio and other services from a Lenovo mini PC in my living room — no open ports, no static IP, with automatic HTTPS and Cloudflare's DDoS protection.
-
Email Forwarding to Gmail with AWS SES, S3, and Lambda
How I set up a serverless email forwarding pipeline on AWS to keep my real Gmail address private while still receiving mail at [email protected].