Skip to content

Fenming 6.0

// Every year, I feel the same pain when my hosting subscription renews.
Why am I still maintaining my portfolio on WordPress?
I update it maybe once a year, and yet it’s been such a painful experience. Constant security issues. Malware attacks almost every week. Ongoing server costs just to keep the site alive. It felt wildly disproportionate to what I actually needed.
AI is already deeply embedded in my work. It shapes how I think, how I design systems, how I prototype, and how I reason through complexity. But outside of work, I realized I wasn’t really leveraging it in the same way.
So I decided to change that.
toolkit: Antigravity | Gemini (Code) | Claude (Code) | ChatGPT (Image, Audit) | Gimp (Image cleanup)

Finding the right platform

I asked Antigravity whether it made sense to move my WordPress site to Notion or Coda. After exploring both, I landed on Coda for one main reason: its APIs and structured data model felt like something I could actually grow with.
At the beginning, my goal was intentionally modest. I didn’t want to do anything fancy. I just wanted a copy of my content somewhere safer, easier, and cheaper to maintain. I used my existing portfolio as a visual reference and started rebuilding it piece by piece. The first draft looked close, but of course, it took a lot of prompting to get it to feel right.

Moving the content

For content, I exported my WordPress site to XML and used Gemini to analyze and import everything into Coda. From there, I connected the portfolio pages directly to Coda tables. I still remember how excited I felt when I saw the content load locally for the first time. The styling was completely broken, but it worked. That alone felt like a small win.
This was where something interesting happened. My familiarity with structured content suddenly became a real advantage. I started working with AI to define how different Coda blocks should be used to display content the way I had in mind. It wasn’t just about copying text anymore. It was about shaping structure.
It took a while to get all the tables and blocks properly set up and rendered. At one point, I had Gemini and Claude fighting each other with regex back and forth. That part was an experience. Slightly chaotic, slightly hilarious, but productive.

Building interactions

Once the content was in place, I moved on to interaction. I started with the before-and-after slider. My assumption was that anything should be possible, so I just asked. Surprisingly, the slider itself took almost no time compared to everything that came before it. The tricky part was making sure the images loaded correctly, especially with block translation.
After that, I added galleries, which felt much more straightforward by comparison.
Then came the logs. It’s kind of wild how quickly some older AI-related content starts to feel irrelevant. Rebuilding the case studies gave me a chance to reflect and refine, and once that foundation was there, rebuilding the logs went much faster than I expected.

Editing and maintaining

After all of that, I started auditing and updating the content more seriously. This was when tools like Atlas (Coda’s AI assistant) and Dia (an AI editing interface) really clicked for me. Editing content through an AI chatbot, then updating it with a single button, is so much easier. It removes just enough friction that keeping things up to date no longer feels like a chore.
And finally, the About page. The simplest page to recreate.

Making it interesting

At that point, I had a working copy of my portfolio. Which raised the next question: now what?
Having a copy is useful, but it’s not very interesting. So I started thinking about what I could do that I couldn’t easily do before.
The first thing I added was an interactive filter for the logs. It was simple, fun, and actually useful. That small interaction immediately made the site feel more alive.
From there, more ideas started to pop up. The About page, in particular, felt like a good playground. I didn’t want to overthink it, so I decided to start with something small.
I replaced the old contact form with an interactive postcard.
Honestly, who uses contact forms anymore? I wanted something more personal, a little unexpected. I tested the idea in Gemini first to sanity-check how complex it might be. Then I sketched out what I wanted and handed it to ChatGPT to clean up.
I wasn’t sure how long image generation would take, but I figured I could start building and testing in parallel. That part took a couple of late nights, but the result was fun. The hardest part turned out to be styling the madlib form, the screenshot flow, and the email step. Seeing AI handle so much of that end-to-end flow left me in quiet awe.

What I learned

It sounds cliché, but I mean it sincerely.
At this point, the limitation isn’t the tools anymore. It’s our imagination.
For me, that means thinking less about maintenance and more about play. Less about what’s “professional enough” and more about what feels true to how I actually want to show up online. The postcard was just the start. Now I’m thinking about seasonal themes, hidden easter eggs, maybe even generative case study covers.
The question isn’t “can I build this?” anymore. It’s “what do I actually want to make?”
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.