skip to content

cat ~/blog/hello-world.mdx

hello, world

#meta

This is the rebuilt sudovinh.com. The old page was a Django app that mostly served a list of links. This one is a static export: Next.js renders everything at build time, nginx serves the files from a tiny container on DigitalOcean App Platform, and DNS and infra live in Terraform and octoDNS.

Why static

No runtime means nothing to patch, nothing to scale, and nothing to wake me up. A post is a file in content/posts/. Push to main and it's live in about two minutes.

Code blocks work

lib/posts.ts
const files = (await fs.readdir(DIR)).filter((f) => f.endsWith(".mdx"));
const posts = await Promise.all(files.map(read));
return posts.sort((a, b) => +new Date(b.date) - +new Date(a.date));
kubectl get nodes -o wide

More soon on the homelab, the pipelines behind this site, and whatever breaks next.


cd ..