How this blog is built
When I decided to start learning in public, I wanted the tooling to disappear. Writing a post should feel like sticking a note on a board, not like operating a CMS. Here’s the whole setup.
The stack
The site is built with Astro 7 and deployed on Cloudflare Pages. There is no client-side framework — the only JavaScript that ships to readers is the few lines that power the theme toggle. Everything else is static HTML, generated at build time.
- Astro content collections hold the posts as plain markdown files.
- Two kinds of written notes — TILs and blog posts — plus photo posts, with note colors dealt randomly (a hash of the slug), like a real pin-board.
- Zero JS by default — pages load fast even on conference wifi.
Two lines of frontmatter
Every post starts with the smallest possible header. A TIL needs a title and a date; the type defaults to blog if you leave it out:
---
title: The Finnish keyboard hides the backtick
date: 2026-06-30
type: til
---
Optional fields — description for the note preview, tags, and pinned: true to tape a post to the top of the home page — are there when a post earns them.
The best blogging setup is the one where publishing a thought costs less effort than keeping it to yourself.
Publishing from anywhere
There’s a /write page where I paste markdown, and an /upload page that resizes photos in the browser and drops them into an R2 bucket. Both commit straight to the GitHub repo, and Cloudflare rebuilds the site in about a minute. No laptop required.
Why sticky notes?
Because a pin-board is honest about what this site is: a collection of small, colorful, imperfect things I picked up — some of which grow into longer write-ups. The design borrows its spirit from digital gardens, just with more glue.