DC.

Hello, world.

This is the first post on this site, so it seems fair to explain what it is.

I wanted a single place to point people at — something that says who I am, shows what I've built, and gives me a low-friction spot to write. Social profiles scatter that across five platforms, each with someone else's layout and someone else's ads. A personal site keeps it in one place, under my control, for free.

How it's built

The whole thing is static: Next.js with the App Router, Tailwind for styling, and MDX files like this one for posts. There's no database and no backend — projects and the reading list are JSON files in the repo, and publishing a post means committing a Markdown file and pushing.

export function getPosts(): PostMeta[] {
  return fs
    .readdirSync(blogDir)
    .filter((file) => file.endsWith(".mdx"))
    .map(parseFrontmatter)
    .sort((a, b) => b.date.localeCompare(a.date));
}

Everything is pre-rendered at build time and served from a CDN, which means the hosting bill is exactly zero dollars.

What I'll write about

Mostly software and AI — things I build, things I read, and the occasional opinion I can't keep to myself. If any of that sounds interesting, check back, or just look at the projects page.

← All posts