Hello, world
Welcome to the new acox.me. This site is a small “desktop” — a faux menu bar, a draggable terminal window, and now a place to write.
Why a blog
A landing page says who you are. A blog shows how you think. I want somewhere to keep notes on what I’m building — the home lab, Cloudflare experiments, and the occasional rabbit hole.
How it’s built
Posts are Markdown/MDX files in src/content/blog/, validated by a typed schema
and rendered to static HTML at build time:
const blog = defineCollection({
loader: glob({ pattern: "**/*.{md,mdx}", base: "./src/content/blog" }),
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
draft: z.boolean().default(false),
}),
});
Code blocks get syntax highlighting via Shiki, the whole thing builds to static files, and it deploys to Cloudflare Workers like the rest of the site.
What’s next
More posts. Maybe more “apps” on the desktop. We’ll see.