I have rebuilt my personal site three times. Not because any version was broken, but because each one stopped feeling honest.
Modern Portfolio
The first version was called Modern Portfolio. It was everything a portfolio was supposed to be: OAuth login, a Firebase-powered signature wall where visitors could leave their mark, a cmdk command palette, theme switching, a blog, a detailed uses page. The stack was Next.js, NextAuth, Firebase, SCSS. It looked good. It did a lot.
But it felt like a product demo, not a place. Every feature was there to signal capability. The signatures were charming, the command palette was clever — but nothing was quiet. Nothing breathed.
Canvas Portfolio
The second attempt went the other direction. An Infinite Canvas Portfolio — every page was a panel in one shared coordinate space, connected by a live dot grid. You didn't navigate, you flew. The node graph, the graffiti wall, the wireflow graph — it was all one surface.
It was genuinely interesting to build. The infinity canvas runs at 60 FPS, the pan and zoom are smooth, the collaborative graffiti wall writes to Firebase in real time. But it was hard to use. The navigation was a performance. Visitors spent more time orienting themselves than reading anything.
I kept the crafts — they live at crafts now, each one its own page. The canvas work was worth doing. It just wasn't worth living in.
This site
ASCII Portfolio is what I wanted all along: a quiet place. Light home, dark pages. Geist Mono throughout. No animations except the one that matters — a full-screen ASCII reveal on every route change, rendered on a canvas with no libraries.
The transition runs as a single canvas across the entire navigation: fill phase covers the screen with glyphs, the new page loads underneath, clear phase removes them. One canvas, one seed, no jump between outgoing and incoming frame.
Content is JSON. Projects, crafts, books, uses — all data files. Adding something new is one entry, not a new component. The whole thing deploys to Vercel in under a minute.
Three portfolios, three different answers to the same question: what does it mean to show up on the internet as a developer? I think I finally have one I believe.
