This whole site — the resume and this blog — cost less than $1 in LLM tokens to build. It used to take me a weekend to build, generate, deploy and verify.

It's a small Python pipeline that just dumps out static files.

What's in it

In the past, I'd usually try a static site generator, then adapt it heavily, and ultimately write a DIY setup.

It was always more fun to generate the build of the blog/resume/whatever than it was to write the actual content, which I'd eventually give up every few years.

The usual static-site generator stuff

The whole thing is just a few small files:

resume.json           # resume data
posts/                # one markdown file per post
templates/            # jinja2 templates
scripts/              # the build pipeline
public/               # css, logos, favicon
.github/workflows/    # ci: build + deploy

Push to main, and GitHub Actions builds everything into dist/, then deploys it to Cloudflare Pages.

There's the usual Markdown support, plus syntax highlighting. Python:

def cost_per_page(total_cents: float, pages: int) -> float:
    return total_cents / pages

Rust:

fn cost_per_page(total_cents: f64, pages: usize) -> f64 {
    total_cents / pages as f64
}

Even Markdown gets highlighted — like this post itself:

**Bold**, `inline code`, and ~~strikethrough~~ all work.

Mixed feelings

A weekend of a fun side project, now handled for the price of a can of soda. I have very mixed feelings about this, because it takes away the reward I get from building things — the dopamine hit of the reward loop that side projects give me.

In some areas, it's even done a better job than I ever could have in the same time. Maybe I should find new side projects.

Maybe this will make me focus on the content of the writing rather than building the thing that presents the writing itself?