1 min read
Rebuilding this site, quietly
Why I replaced a terminal-themed portfolio with something plain, and started writing.
This site used to look like a terminal. Every section sat inside fake window
chrome, the background had scanlines, and there was a whole tiling window
manager hidden behind a [ tty ] button in the corner.
It was fun to build. It was also the wrong shape for the thing I actually wanted, which was somewhere to write.
What changed
- The terminal aesthetic is gone, along with about 1,400 lines of desktop island code.
- There are light and dark themes now, and they follow your system until you say otherwise.
- Posts are Markdown files in this repo. No database, no CMS, no admin panel.
How posts work
A post is one file in src/content/blog/. Astro reads the frontmatter against
a schema at build time, so a typo in a field name fails the build instead of
rendering an empty page:
const blog = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
schema: z.object({
title: z.string(),
date: z.coerce.date(),
}),
});
The whole publishing pipeline is
git commit. That is the entire point.
More soon — including notes on the Model Context Protocol server I have been building.