Hello, World — and How This Blog Works

A tour of a minimal, dark-mode Astro blog you can read in your browser or straight from your terminal.

This is the first post on a blog built to be quiet, fast, and a little bit hacker-friendly. No pop-ups, no tracking, no newsletter guilt-trips — just text on a dark page, set in Geist with room to breathe.

If you’re reading this in a browser, lovely. But you can also read it without one.

Read any post with curl#

Every post here speaks two languages. Browsers get HTML; terminals get raw Markdown. The same URL serves both — no flags, no headers to remember:

curl https://example.com/posts/hello-world

You’ll get the Markdown source back, ready to pipe into a pretty-printer:

curl https://example.com/posts/hello-world | glow -

Prefer to be explicit? Append .md to any post URL and you’ll get the same thing from any client:

curl https://example.com/posts/hello-world.md

How it’s put together#

The whole thing is a static Astro build. There’s exactly one server-side flourish: a tiny Bun process that inspects each request and decides whether you want HTML or Markdown back. Everything else is pre-rendered files.

The stack, briefly#

  • Astro for the static site and content collections.
  • React islands for the search palette, the reading-progress bar, and the copy-code buttons — and nothing else ships JavaScript.
  • Bun as the runtime: package manager, build tool, and production server.
  • Docker to ship it to a DigitalOcean droplet.

Things you might notice#

There’s a reading-time estimate up top, a table of contents that follows along as you scroll, and tags you can sort by. Hover a heading and a # anchor appears. Hover a code block and a copy button slides in. Press / anywhere to search.

The goal was restraint: every feature has to earn its place, and nothing should get between you and the words.

What’s next#

More writing, mostly. If you want to follow along, there’s an RSS feed. And if you ever want the source of a post, you already know the trick.

Thanks for reading.