Since the launch of ChatGPT in 2022, I have been using it regularly. I have vibe coded small experimental apps, used local transcription models and experimented with AI image and video generation. I am a curious person, thanks to my mom who always stimulated that curiosity. I want to understand what AI will do to the workplace and society, but also what it will do to me.
After leaving the app development company I founded in 2013, I got bored and started to fear the irrelevance of all jobs done from behind a computer, and software development in particular. Something I did not think would ever happen a couple of years ago. So I decided then and there, let’s figure out a way to still have something to do in 2026 by learning all I can about AI.
To make this more real, I am starting with a daily AI experiment, where I do one expierment per day. All publicly documented. It will not be a polished breakdown, but just a short read with one key lesson I learned from the experiment. The lesson will not be only about the tool, but about my own insecurities and response to it. What AI does to my state, my perfectionism and my sense of relevance.
In the past I also struggled to maintain a personal website. While I enjoy building a website, once the novelty wears off, my interest drops and I forget about the project, so it slowly dies off. Then a couple of days ago I read a piece by Matt Shumer, about the accelerating pace of AI, and the rising uncertainty of what I should do with my career. So I decided to combine my curiosity about AI with a daily AI experiment that I write about. The website would not just be a blog, but the experiment itself.
So for the first experiment, I set out to build a clean, minimal personal website using the Hugo framework. The site would be hosted on my own domain via Netlify and created entirely with OpenAI Codex.
I started with a simple prompt that mentioned the URL of a website that I thought was esthetically pleasing and had Codex start questioning me in plan mode. It was just about the right level of technical depth I was able to answer. As in, I had to think, but not too hard or long about the answers.
It lead to a plan that I thought made sense generally speaking. It included things like deployment and analytics. After that it asked me whether to execute the plan right away. And of course I said: “Yes, go for it!”.
Attached Document
Execution Plan: Portfolio v1 + GitHub-First Workflow
Execution Plan: Portfolio v1 + GitHub-First Workflow
Summary
Create a GitHub repository first, then build v1 on a dedicated feature branch with small regular commits.
v1 scope:
- Pages:
Home,Blog,About,Now - No projects section/routes/content yet
- Hudovich-inspired minimalist look and spacing
Geist+Geist Monotypography- Hero intro with temporary avatar slot (later replaced)
- No hero CTA, footer contact only
- Plausible enabled, Giscus deferred
- Light default + dark toggle
- Netlify-ready
Repository and Commit Workflow
- Initialize local repository in the project directory.
- Configure local git author (use a non-identifying identity if desired).
- Create initial commit on
mainwith repo bootstrap files. - Create GitHub repo (name TBD), set
origin, pushmain. - Create working branch
codex/portfolio-v1(prefix requirement satisfied). - Implement in small commits (one logical unit per commit), pushing regularly to
origin/codex/portfolio-v1. - Final integration is merged back to
mainafter validation.
Planned Commit Checkpoints
chore: initialize hugo site and base repository filesfeat: add base layout, metadata partials, and top navigationfeat: implement home page structure and hero avatar slotfeat: add blog list and blog single templatesfeat: add tags taxonomy pages and blog paginationfeat: add about and now pagesfeat: implement hudovich-inspired typography and base visual systemfeat: add light/dark mode toggle with persisted preferencechore: add plausible analytics integrationchore: add netlify configuration and production polishdocs: add content editing and deployment notes
Public Interfaces / Content Contracts
Routes
//blog//blog/<slug>//tags/<tag>//about//now//index.xml(RSS)
Content Files
content/blog/*.mdcontent/about/_index.mdcontent/now/_index.md
Blog Front Matter Keys
titledatelastmodsummarytagsdraftcover
Hugo Params (hugo.toml)
author.nameauthor.emailauthor.taglineanalytics.plausible_domaintheme.default_mode = "light"
Implementation Steps
- Scaffold Hugo project and base config (
hugo.toml) with blog tags, RSS, and pagination. - Build shared template foundation in
layouts/_default/baseof.htmland partials for head, nav, footer, and theme script. - Implement home template with:
- Intro text block
- Temporary avatar image block
- About snippet block
- Latest blog posts block
- Footer links with subtle contact
- Implement blog list and single templates plus tag archive templates.
- Implement about and now page templates.
- Add CSS system in
assets/css/:- Geist / Geist Mono usage
- Weight scale aligned to selected reference feel
- Minimalist spacing, borders, muted palette
- Mobile-first responsive behavior
- Add dark toggle JavaScript with
localStoragepersistence. - Add conditional Plausible partial that loads only when domain param is set.
- Add
netlify.tomlfor build, publish, and deploy behavior. - Seed placeholder copy and posts for structural validation.
Testing and Acceptance Criteria
hugo --minifypasses cleanly.- All v1 routes render correctly and navigation links work.
- Blog pagination works across multiple pages.
- Tag pages generate for tagged posts.
- RSS endpoint is generated.
- Dark toggle persists across refresh and page changes.
- Plausible script appears only when configured.
- No projects route, navigation, or content artifacts exist.
- Layout is stable on mobile and desktop.
Assumptions and Defaults
- Work happens on
codex/portfolio-v1with frequent small commits. - Projects section is intentionally excluded from v1 code.
- Temporary avatar is used until a final image is provided.
- Contact remains footer-only, with no dedicated contact page in navigation.
The first iteration it came up with turned out to be working right away on the Netlify subdomain. Which was a win in itself, as that seemed to me like the most difficult step to figure out myself if needed.
However the design was not nearly as clean and sleek as my example site which I wanted to emulate. Fonts were different, texts were not aligned and the colors were slightly off. So I just prompted Codex to do a better job. It responded that it would need direct access to the CSS and other assets, which I could easily copy/paste into Codex of course.
That helped enormously, as the next iteration it came up with was a shockingly close match with the reference website. So in about 10 minutes of iterations, this website was live and it was looking great and did what I expected of it. After that I made some iterations on the way certain things looked and after a few rounds of prompts it was even better. We (Codex and I) added hotkeys, privacy focused analytics and an AI experiments section.
A year ago I did a similar experiment with a static website generated by AI, but I had to keep switching between windows to copy/paste generated code myself to test it. And when something came up, I had to ask to fix it, only to introduce new problems and so on.
The experience I had now was totally different. Codex just started writing code, testing it, fixing bugs and iterating on to the next round. And only when it thinks the result is presentable it shows off its work. What a difference a year makes.
Key Lesson
I never have been able to make a pixel perfect website myself good enough to publish. I didn’t want to invest the time to actually learn CSS. So I always went for a template that I could upload into a website builder tool. I never thought of myself as a real programmer. I felt irrelevant in a way.
Now I am able to have Codex build something for me from scratch in the way I think is exactly how I wanted it. The moment the website showed up exactly like how I imagined it, I was like: “I cannot believe this actually worked”. It made the website pixel perfect, but it revealed the same feeling of irrelevance.
I avoided learning CSS for years and felt inadequate because of it. Now AI removes the need to learn it at all. I still feel inadequate. It shows me the problem was never with CSS.