Introducing naman.md

Every writing platform I've used has let me down. It pivoted, got acquired, or quietly rotted until the export button was the only feature I still cared about. So I wanted to answer one question: where does your writing live when the company hosting it goes away?

naman.md is my answer. Every post is a file in a git repo, nothing more. The look is deliberately technical: monospace labels and a strict grayscale palette.

None of this is finished, and that's the point. A blog you can't keep editing is just a database with better marketing.

Files over apps

A blog should outlive its stack. Every post is a single .md file with YAML frontmatter, committed to git. Publishing is git push. No draft state that isn't a branch, no edit history that isn't a commit log, no backup strategy that isn't already solved by having the repo cloned in three places. No CMS, no database, no admin panel. Just files that still open in a text editor in twenty years.

The best storage format is the one you can cat. Everything else is a migration waiting to happen.

What you give up:

  • A WYSIWYG editor. You write wherever you already do.
  • Scheduled publishing. You push when it's ready.
  • Analytics dashboards baked into an admin panel.

What you get back:

  • Portability. The content layer has zero dependencies on the rendering layer.
  • Reviewability. A post can get a pull request, comments and all.
  • Longevity. Markdown from 2004 still renders. Database dumps from 2004 mostly don't.

The trade is lopsided once you notice everything in the first list is a feature for the platform, and everything in the second is a feature for you.

The pipeline

The rendering side is small on purpose:

  1. gray-matter splits frontmatter from the body
  2. remark parses markdown with GFM extensions
  3. rehype renders HTML, with Shiki highlighting code at build time
  4. Next.js statically generates every page, so nothing parses markdown in the browser

Every route is static. Per-post Open Graph images, RSS, sitemap, robots, and JSON-LD all render at build time.

The artifact

Each post's hero is a raymarched liquid blob with a chromatic mirror finish, drawn by a single WebGL fragment shader. It's also a small physical object: hover dents it, scroll rolls it, click splits it. The canvas respects prefers-reduced-motion.

What's next

This is where I write things down: technical learnings and the projects I'm building, but also travel and hiking stories from exploring different parts of the world. Subscribe via RSS, or don't. The files aren't going anywhere.