Welcome to the log. This first post doubles as documentation: everything you're
reading is rendered from an .mdx file that lives in the site's git repo.
The stack
The whole site is intentionally boring under the hood:
- Next.js 14 (App Router) — the bio page, this blog, and
~/toolsare just routes - MDX — posts are Markdown files in
content/posts/, parsed withgray-matter - shiki — code highlighting with a custom terminal-green theme
- Vercel —
git push→ live in ~30 seconds
No CMS, no database. Publishing a post is:
git add content/posts/new-post.mdx
git commit -m "Post: something worth reading"
git push # Vercel does the restWhy MDX
Plain Markdown covers 95% of writing, but MDX means a post can embed real React components when it matters — interactive demos, custom callouts, maybe even the pixel pet from the home page.
export function Greeting({ name }: { name: string }) {
const hour = new Date().getHours()
const salute = hour < 7 ? 'zzz...' : `hello, ${name}`
return <span className="glow">{salute}</span>
}The rule for this blog: if a diagram or demo explains it better than prose, ship the demo inside the post.
What's next
~/toolswill grow into a set of small utilities — first up, an academic paper revision skill- RSS feed, tags filter, maybe search — when there are enough posts to need them
That's it. exit 0.