Welcome to the blog. I've been meaning to set this up for a while, and it's finally here. This first post covers what's under the hood, because the infrastructure is more interesting than a generic introduction.

How it's built

The site runs on 11ty (Eleventy), a static site generator. I write posts in Markdown, push to a GitHub repo, and Netlify builds and deploys automatically. No CMS, no database, no JavaScript frameworks. Just static HTML and CSS served from a CDN.

The blog supports tags for filtering by topic, reading time estimates, and an RSS feed if that's your thing.

11ty was the right choice here because it does one thing well: turn Markdown files into HTML pages. I didn't want to maintain a build system more complicated than the content it produces. The entire config is about 60 lines of JavaScript.

Quality gates

One thing I wanted from the start was a way to enforce content standards automatically. Not just "does it build," but "is this actually worth publishing." So before any post reaches the live site, it runs through a validation pipeline.

A Node.js script checks every post against a set of targets: word count, internal and external link counts, summary length, heading structure, tag hygiene, anchor text quality, paragraph length, and a few other things. Each check gets a pass, warn, or fail. Any failure blocks the deploy.

This runs in two places. GitHub Actions runs the validator on every push, so I can see failures in the commit checks before I even think about merging. Then Netlify runs the same validator as part of the build command. If a post has failures, the build exits before 11ty even starts. Nothing gets deployed.

There's an override ([skip-validate] in the commit message) for cases where I've reviewed the output and decided a warning is acceptable. But the default is: if it fails, it doesn't ship.

The workflow

Posts start on a development branch. I push, the validator runs, I see what needs fixing. Once everything passes (or the warnings are intentional), I merge to main and Netlify deploys. The whole loop is usually a few minutes.

I also have link checking set up through lychee, which scans every page on the built site for dead links. That runs on every push and on a weekly schedule so links that rot over time get caught too.

What to expect

I plan to write about technology, tools, projects, and whatever else I find interesting enough to put into words. Networking, self-hosting, security, Linux, hardware, AI, reviews, project updates. No schedule. Posts go up when they're ready.

The site will keep evolving alongside the content. There's a list of improvements I'm working through: syntax highlighting for code blocks, per-post sharing images, pagination, and eventually a Substack integration for email subscribers.

If you're here, thanks for reading.