I let Codex loose on my UI
The CSS got better and my brain felt worse
In college, I built a social network for stadium travelers. I’d recently learned that by using PHP + MySQL, the forms on my websites would actually work instead of just sit there looking inviting.
I hacked together some queries, used my own photos as the visuals, and hosted it on some combination of university servers and a friend’s FatCow account.
We peaked at around 150 users. The most engagement was when I added the Facebook ‘Like’ button and a friend went through every page hitting Like, giving me a small visibility boost and making my friend’s Facebook profile look weirdly obsessed with stadiums for one day.
The server code and SQL queries weren’t good by any means, but the UI was horrible. This was before I knew there was a difference between frontend and backend (I’m looking at you, PHP), but I already knew UIs and CSS were not my forte. And it wasn’t just that I couldn’t style the divs correctly, I didn’t even have ideas for what users would want to see.
I experienced a brief UI renaissance during my first job in NYC, where we actually had designers and they’d give us either Figma CSS or a nudge in a visually pleasing direction. When I started my own business, ChatGPT helped enough, I kept things simple, and fromscratchcode.com looks not-awful.
This week I entered a new era: I let Codex update the Ozark UI. Full-on vibe coding.
Ozark is my browser-based tool for exploring how Python code is tokenized, parsed, and compiled by Memphis, the Python interpreter I've been building from scratch.
I’d already decided to keep Codex out of Memphis. Getting advice from ChatGPT in the browser had already gotten me far enough, and I relished the sense of ownership I felt making every interface appeal to my sense of craft.
UIs are a different beast. Just making functions pretty isn’t enough. The actual thing needs to be pretty.
I tasked Codex with a few improvements:
- add a few Python examples the user can pick from, to help discovery
- add a “Share Example” feature, to help share-ability
- improve dark mode
- make all this look sane when deployed either standalone or embedded
We did all of this in about 2 hours!
It was…intoxicating. I added the Python examples and the share button and a fallback for older browsers because why not. I unified the colors and borders and the dark mode scroll bar because why not. Each small improvement led to another small improvement. I could only barely visualize the code, and my brain was racing.
While I was pleased we’d improved the UI so quickly, the difference in my brain compared to a 2-hour session on Memphis was stark. I leave a Memphis session feeling calm, playfully rearranging blocks in my head. With Codex, what blocks remained were scurrying around smashing into each other, begging me to pull the slot machine handle of “just one more feature.”
This isn’t a pro-AI or anti-AI reflection. If the tool can unblock me as a solo engineer where I was historically blocked, that’s worth it to me. But this exercise reminded me not all coding sessions feel the same.
Some sessions leave me feeling calm and curious. Other sessions feel like another pull of the “Want me to add that?” lever.
Now I just have to remember which is which.
-Tyler