28 May 2026 · 6 min read · — reads
The Ugly, The Boring, and The Performative
Reading
There's basically one developer portfolio on the internet. It just has different names on it.
You know the one. Dark background, purple-to-blue gradient, a hero that says "Hi, i'm [name], i build beautiful experiences," three project cards that lift up on hover, contact form nobody fills out. The other half went the opposite way: parallax WebGL heroes that take four seconds to spell a name, custom cursors with abandonment issues, page transitions ripped straight out of an Apple keynote. One hides behind a template, the other behind a tech demo. Neither is actually saying anything.
So when i rebuilt mine, i made one rule: it had to be ugly on purpose. It had to look like something. A real thing with real constraints. I landed on an old e-ink display, the kind that flashes every time it turns a page.
What the old one was
My old portfolio lived at minimal-portfolio, and it was never meant to be a Serious Thing. I just wanted to see how dumb i could get with Markdown. Blog, projects, tags, a "now playing" widget, comments... could all of that run off plain .md files and nothing else? Yeah, mostly. Comments lived in a Google Sheet of all things, which i still can't believe worked. The whole thing ran on Eleventy and Netlify, ugly in its own quiet way.
And it worked. Which is sort of exactly why it had to go. It had answered its question, so i started asking a new one.
This one is an experiment too
Don't get me wrong, this site is just as much an experiment. It just asks a scarier question.
The old one was "how far can i push Markdown for fun." This one is "if i had to put myself on the internet exactly the way i want to be seen, what would it look like?" Took me a while to even sit with that one.
I've been deep in UI lately, mostly being insufferable about details. You can see some of it on welabs.in, the company site i work on. And i made thisdesign.space as a public dumping ground for my taste: palettes, animations, the references i'd otherwise just hoard on a Pinterest board.
So this portfolio is the next step. It's intentionally retro, more cheap paperback than glassy gradient. A creative landscape, not a CV. If you land here and go "huh, what is this," then it's working.
What it is now
The new one runs on Next.js 15 (App Router), React 19, TypeScript, Tailwind v4, deployed to Vercel. Comments and view counts moved to Supabase, which is a real database, not a Google Sheet held together with hope.
But here's the part i actually care about: almost the entire site is still static HTML. Every page prerenders at build time. The only thing that runs live is /creative, which asks Spotify what i'm listening to and Discord whether i'm online.
So why a whole React framework for what is, 95% of the time, plain HTML? Because the interactive 5% is the actual point. A morphing image lightbox. A focus-reader that flashes one word at a time. A hidden Snake game. Try cramming any of those into a pile of .md files and tell me how that goes.
Okay, so why "ugly by design"?
Here's the design brief i wrote for myself. I'm quoting it because it's basically the soul of the whole thing:
A paperback for an old e-ink display. Warm grey-white paper, deep warm-black ink, no accent colour by rule. Motion only where the medium would have it. Nothing glides.
Every line in that is a rule that locks something out, and that's kind of the point. If you don't lock anything out, you end up reaching for everything.
So: no accent colour. I know, every design blog tells you to pick one. I banned it instead. The palette is paper (#e8e4dc), ink (#1a1814), some greys, and exactly one other shade allowed: a dried-stamp red, used at most twice on the whole site. Right now it's used once, as a tiny dot next to my role. That's the whole budget. Take colour away and suddenly the spacing and the typography have to actually pull weight, which honestly is what should've been happening from the start.
Two fonts, and each has a day job. Source Serif 4 reads, IBM Plex Mono labels. Serif says "you're reading something," mono says "you can click this." There's no decorative third font for hero text, because an old e-reader doesn't have one and i'm pretending to be one.
And nothing glides. This is the rule i love most. Real e-paper physically can't ease. It flashes and snaps in hard steps. So on this site, nothing eases. Every transition is steps(), not a curve. The cursor doesn't blink smoothly, it snaps on and off. Click to another page and the whole screen does a stepped redraw flash, like an e-reader turning over. The steppy-ness isn't decoration, it's the joke. The site is pretending to be a physical thing, and physical things are pretty bad at smooth.
The part where it gets unhinged
There's a toggle in the corner that turns on full E-Ink mode, and this is where i stopped pretending to be reasonable.
Flip it on. Your scroll stops scrolling and starts page-turning, snapping a whole screen at a time like the next-page button on an old reader. Leave a page and a faint, dithered imprint of it hangs around for a beat and then burns off in hard steps, the exact ghosting artifact real e-readers leave behind on a partial refresh. Highlight some text and instead of a normal selection you get a textured, dithered marker over the passage, like somebody took a stylus to the screen. Essays set themselves justified with hyphenation, so the right edge goes flat like a printed page.
None of this makes the site better in any way a Lighthouse score would measure. It just makes it memorable, which is the only metric a portfolio is actually graded on. Nobody is going to hire me because my contact form has nice focus states. They might remember the guy whose site pretended to be an old e-ink display and hid a game of Snake in it.
Anyway
I don't really have a Big Takeaway here. The boring portfolios aren't boring because their owners lack taste. They just gave themselves zero rules, and zero rules averages out to whatever the rest of the internet already looks like.
So make some rules. Ideally stupid ones. Mine was "what if this was an e-reader from 2009" and somehow we ended up here.
My site is ugly. It's slow-feeling on purpose, it's the colour of a cheap napkin, and it won't let you scroll smoothly. But it's fucking mine and i can do whatever i want with it.
"Less is only more where more is no good." Frank Lloyd Wright
Note: This essay represents my personal thoughts. AI assistance was used to refine grammar and spelling, but all opinions and arguments are entirely my own.
← All writing