Skip to main content

Command Palette

Search for a command to run...

I Finally Rebuilt My Portfolio — And Made It Talk Back

Published
5 min read
I Finally Rebuilt My Portfolio — And Made It Talk Back

There's a particular kind of shame that lives rent-free in an engineer's head.

Not the shame of a failed deployment, or a botched database migration — those are acute, survivable. I'm talking about the slow, grinding shame of a decade-old skeleton website that hadn't been touched since you had a different job title, different hair, and possibly different opinions about tabs versus spaces.

That was my portfolio.

For ten years.


A Decade of Avoidance

I wrote my first lines of code in 2016, at the Firefox IoT Hackathon. I was eighteen with a laptop borrowed from my brother, and the unearned confidence that only first-time hackers possess. I had no idea what I was doing, and I loved every second of it.

But even then, even in those early, chaotic hours of cobbling together hardware and APIs, I noticed something. Everyone else seemed to get the frontend and UI Design. The CSS clicked for them. Margins made intuitive sense. They looked at a design and knew which Flexbox incantation would summon it into existence.

I did not have this gift.

I looked at a stylesheet and saw a list of suggestions that the browser would interpret however it pleased. I fought padding like it owed me money. I lost.

So I avoided it.

Over the years that followed, I pivoted. Full-stack development (Mostly just Backend) → blockchain → AI engineering. Each transition brought new complexity, new languages, new paradigms. But one constant threaded through all of it: I routed around frontend work whenever possible. I was the person who'd happily write a distributed systems component in Go but quietly, desperately hope someone else would handle the button alignment.

My portfolio reflected this perfectly. It existed. It had my name on it. It was, charitably, present.


Something Shifted

Somewhere in the last year or two, the equation changed.

Tools like Cursor and Claude Code arrived, and they changed what frontend development felt like. Not by making me a designer! I'm still not. But by collapsing the distance between intention and implementation. I could describe what I wanted in plain language and watch it materialize, iterate on it, break it apart and rebuild it, without spending three hours in the CSS cascade.

I started shipping frontend-heavy projects. Solo. Fast.

And then one day I looked at my portfolio, that ancient skeleton, still wearing the suit from its 2017 debut, and I thought: it's time.


The Build

The redesign had one constraint from the start: if I'm going to call myself an AI engineer, then AI has to be a core part of the experience. Not a gimmick. Not a chatbot bolted onto a resume. Something that actually makes the portfolio different.

The idea was simple: make it conversational. Let visitors explore my background through natural language. Ask it anything, what projects I've worked on, what tech stack I prefer, what I'm looking for in my next role. The portfolio would answer, in real time, like a very well-briefed assistant who happens to know everything about me.

Under the hood, I run:

  • Gemma 31B — the primary model, handling most conversations

  • GLM 4.7 — for when you need a different perspective

  • DeepSeek v3.2 — fast and surgical for technical questions

You can switch between them live with /model. The interface should look familiar if you've spent time in AI tooling.... That was intentional.

The whole thing is built on Next.js, deployed on Vercel, with an Ollama Cloud backend serving the models. The terminal-style UI draws on years of living in command lines and now, even more, with Claude Code; the design language is intentionally dim and focused — dark background, warm amber accents, a blinking cursor that never quite lets you forget you're talking to a machine.


The Irony

Here's what I find genuinely funny about all of this.

The portfolio exists to demonstrate my capabilities as an AI engineer. It uses AI to answer questions about me. And it was built with AI assistance —> Claude Code guiding the frontend work that would have cost me weeks of frustration two years ago.

I didn't become a frontend developer. I became someone who could ship frontend despite not being one, because the tools met me where I was.

That's the story of the last decade, actually. Not mastery of every layer of the stack, but the ability to move fast at any layer when it matters, with whatever tools the moment requires.


What I'd Tell Myself in 2016

That there are no permanent weaknesses in engineering, only current ones.

That the tools always get better, and the gap between what you can imagine and what you can build keeps closing. That the Firefox IoT Hackathon kid who lost a fight with CSS was not failing — he was just early.

And that one day, he would build something he's actually proud to put his name on.