The CI/CD Pipeline Behind This Jekyll Blog
Three GitHub Actions workflows, Dependabot, and a Lighthouse config — here's the full CI/CD pipeline that builds, deploys, secures, and monitors this Jekyll blog. Including the bugs I shipped along the way.
Building a Custom Tag and Category Generator Plugin for Jekyll
GitHub Pages doesn't support tag or category pages out of the box. Here's how I built a custom Jekyll generator plugin that creates them automatically — and the SEO lessons learned along the way.
Jekyll Content Plumbing: Permalinks, Reading Time, Excerpts, and Redirects
The invisible infrastructure behind a Jekyll blog — how permalink structure, reading time estimates, custom excerpt separators, pagination, and redirect handling all work together. These aren't glamorous features, but getting them wrong breaks SEO, confuses readers, and creates maintenance headaches.
How the Sausage Is Made: Every Feature Powering This Jekyll Blog
After 130+ posts and two years of Jekyll customization, here's the complete feature set behind this blog — from Mermaid diagrams and KaTeX math to GDPR compliance, Pandoc exports, and the SEO pipeline. A look behind the curtain at what it takes to run a technical blog on GitHub Pages.
Building This Blog: Jekyll on GitHub Pages from Zero to 130+ Posts
I've been writing about technology since 2004. This blog has lived on WordPress, Blogger, and now Jekyll on GitHub Pages. Here's how I set it up, what I added along the way, and what I'd do differently if I started over.
Managing Multiple Jekyll Sites Under One Domain: Sitemap Challenges
How to handle sitemap.xml generation when running multiple Jekyll sites under a single custom domain on GitHub Pages — and why it matters for AdSense approval.
Your Jekyll Theme Is Probably Missing head and body Tags
Many Jekyll themes — especially minimal forks — ship without proper head and body tags. Browsers don't care. Bots do. Here's how to check and fix it in five minutes.
Your Jekyll Sitemap Is 60% Garbage
I audited my Jekyll sitemap and found that 262 of 434 URLs were auto-generated tag pages, category pages, and pagination — most with a single post. Here's how to clean it up without losing anything.
Fixing AdSense Verification Without Breaking GDPR: The Script Loading Mistake
My GDPR implementation was too aggressive — it hid the AdSense script from Google's verification bot. Here's how I separated verification from ad serving while keeping GDPR compliance intact.
Improving E-E-A-T Signals for Google AdSense Approval on Jekyll
After another AdSense rejection, I shifted focus from technical fixes to E-E-A-T — Experience, Expertise, Authoritativeness, and Trustworthiness. Here's what I changed and why.
Google AdSense Approval Failure: Debugging the 'Site Isn't Ready' Rejection
Another AdSense rejection with no specific details. Documenting the debugging process, fixes implemented, and the frustration of opaque rejection messages.
Advanced Jekyll SEO Health Checks: Comprehensive Automation and Monitoring
Building a comprehensive SEO health check system for Jekyll sites with GitHub Actions, Lighthouse CI, and automated link validation - Part 2 of the Jekyll SEO series.
Jekyll SEO: Fixing Canonical URLs and Google Search Console Issues
How to resolve Google Search Console redirect warnings and canonical URL conflicts in Jekyll sites hosted on GitHub Pages.
Jekyll Website Optimization for GitHub Pages - Part 1
Foundational optimizations for a Jekyll blog on GitHub Pages — the changes that made the biggest difference across 100+ posts over two years.