Blog
Hello World
This is the first blog post. It exists to validate the pipeline.
Here is a short list:
- One small step
- One small page
- One tiny site
export const greeting = "hello";
Why this site exists
I wanted a small, fast, readable corner on the web. The focus is on clarity: short pages, durable links, and a layout that stays out of the way. A static pipeline keeps things simple and makes the content easy to move or archive.
The most useful sites feel calm. That is the goal here, so the design leans minimal with high contrast and generous whitespace. The typography carries the tone, and the rest is just structure.
How the pipeline thinks
Each page starts as markdown plus frontmatter. The generator collects entries, sorts by date, and renders templates. The data model is intentionally boring, which makes it easier to reason about. For a rough estimate of build time, the dominant work is parsing and rendering, which behaves like $O(n)$ across $n$ files once caching is warmed.
If you want an intuition: with 120 posts at 2000 words each, the render step can still land under a second on a modern machine. That is not a proof, just an observation from building small sites.
type Post = {
title: string;
date: string;
tags: string[];
draft?: boolean;
};
export function isPublished(post: Post, mode: "dev" | "prod"): boolean {
if (mode === "dev") return true;
return !post.draft;
}
A note on typography
The type scale is small but deliberate. Large headings, calm body text, and compact metadata keep the eye moving in a predictable rhythm. For readability, I try to keep the line length near 70 to 80 characters. The comfortable range is often described by the simple heuristic:
$$ 60 \le L \le 80 $$
Where $L$ is the average line length in characters.
:root {
--content-width: 78ch;
--font-serif: "Iowan Old Style", "Charter", serif;
}
What to expect next
This space will hold essays, notes, and experiments. Some posts will be short and practical, others will be longer and more reflective. The only rule is that each piece should be worth keeping.
The best layout is the one you do not notice. The best content is the one you would copy into a notebook.
If you are reading this far, thank you. The next posts will show more real content and a few concrete experiments.