abusing.technology

Sep 18, 2026

A site you update with git push

The previous version of this site was a TinaCMS starter. It shipped with demo llamas and a post about voting for Pedro, and three years on it still had them. The problem was never Tina. The problem was that publishing required remembering a workflow I used twice a year.

So the new one is built around the workflow I use every day: edit a file, commit, push.

How it works

There is no CMS and no database. Posts are markdown files in src/content/blog/. Astro reads them at build time through a content collection, which also means the frontmatter is schema-checked, so a post with a missing description fails the build instead of rendering a blank tag.

Adding this post took one file:

$EDITOR src/content/blog/hello-again.md
git commit -am "new post"
git push

GitHub Actions builds the site and runs wrangler deploy. About forty seconds later it is live.

No server, on purpose

Cloudflare Workers Static Assets serves the site from an assets-only Worker: wrangler.jsonc declares a directory of files and no main entry point. Two things follow from that.

  • There is no script to invoke, so there is no request handler, and nothing that can hold state or grow a security surface.
  • Static asset requests are unmetered on both the free and paid plans, so the bill does not move with traffic.

The result is boring on purpose. A personal site should be the least interesting infrastructure you own.

What is here

The projects page covers the mesh radio work, the keyboards, the locks and the bird-listening hardware. There are also two explainers running as apps on this domain, one for how a GPU cluster serves a token and one for what the model does with it. The photos page is empty for now; it will fill up with trees and birds, some of them identified by a Raspberry Pi sitting in a window.

Many computers were hurt in this production.