The embarrassing bit first
For nearly two years I had a portfolio site that I knew was bad and kept linking anyway.
When I first bought the domain I was a CS student who figured having a site was the checkbox that mattered. I stood one up in about 30 minutes, basically a template, and told myself I'd improve it later. Later never came.
I'd include the link in job applications while a small voice in the back of my head went: if a developer doesn't care enough to build a competent portfolio site, why would anyone believe they'll care about the actual product they're hired to build? I'd shamelessly pride myself on being creative while having nothing to show for it. The site was bloat at best and actively working against me at worst.
Eventually that voice got loud enough that I actually did something about it.
16 hours
I gave myself a constraint: 16 hours total, design and code combined. Not an open-ended project, a real number with a real end.
The stack wasn't adventurous. Next.js App Router, Tailwind CSS v4, Framer Motion for scroll-linked animations, MDX files for articles (including the one you're reading now). Push a file to GitHub and it's live in about 30 seconds. Zero database, zero CMS, zero fuss.
What I didn't expect was how much of those 16 hours would happen outside the IDE.
Photoshop and doodles
The hero section needed a background photo. Simple enough. But I wanted dark mode to actually feel like night time rather than just flipping some text colors. So I opened Photoshop for the first time in probably two years and manually color-graded a night version of my DisneySea photo. Cooler tones, darker sky, shifted exposure. Work I used to do for fun in high school and had somehow completely stopped doing.
It was good to be back.
Then there's the projects page. I wanted something other than a card grid. The idea I landed on: large hand-drawn doodle buttons for each category, overlapping so the last-hovered one comes to the front. So I drew them. Tablet out, three separate illustrations with light and dark variants each. Not what I pictured when I started the project.
The doodling was genuinely fun. I want to do more of it.
The stuff that took the actual time
The polish.
Getting scroll-linked animations to feel right without being distracting took longer than building them. The mobile layout for the projects page went through about six iterations because absolutely-positioned doodle buttons inside a fixed-height viewport container are not a forgiving combination. The transparent header that adapts between the hero, the projects page, and everything else has more conditional logic than it has any right to.
None of this is glamorous. But it is the difference between a site that looks fine and a site that feels considered.
Worth it?
Yes. 16 hours for something I'll use for the next few years, actually feel comfortable linking, and maybe even be a little proud of, is a good trade.
More than that, it reminded me I enjoy this kind of work when I'm doing it properly. The Photoshop session, the drawing, obsessively tuning spring physics on a button animation, none of that felt like obligation.
This is the site I should have built two years ago. Better late than never. Looking forward to filling it with actual write-ups, and working on new projects worth putting here. Thanks for reading this one first.