Disclaimer: this post is mostly an AI-generated summary of my previous 2 journal entries. I prefer to spend my limited time/energy on new posts, but I might give this a more thorough edit in the future.
I started this site as an experiment in building with LLMs. I asked ChatGPT to help write a prompt for v0: a landing page, an about page, and a blog. v0 gave me a working first draft quickly. The harder part was explaining the site I had in mind: I wanted posts to live in the project, with pages built from those files, rather than an external CMS or an editor. After a few detours, the dynamic post route did what I wanted.
Taking ownership of the generated project
The v0 preview stopped working with that setup, so I downloaded the project and continued in Cursor. Getting it running took a few manual fixes: the suggested setup missed dependencies, and both v0 and Cursor gave me outdated advice about asynchronous route params in Next.js. Generated code was fast to obtain, but I still had to understand the framework well enough to spot where it was wrong.
The blog index was another example. Its first version needed a hardcoded list of posts. I asked Claude to read the post files and load their metadata instead, and that change worked immediately. Other details were less polished: an unnecessary back button, legacy image attributes, and a large collection of components I hadn't asked for. The site existed, but I didn't yet have a good mental map of the code I was now responsible for.
Small pieces were easier to improve
I then used v0 for a code snippet component with syntax highlighting, long-line scrolling, and a copy button. The generated example used an import path that no longer matched the library I installed. Claude pointed me in the right direction, and a little manual digging finished the fix. The end result was useful, even though the generated code was not ready to paste in unchanged.
For the favicon I tried image generation with ChatGPT. The first llama had a blemish; attempts to turn it into a vector or remove the mark did not quite solve it. A later pixel-art-inspired version was closer to what I wanted. That experiment also left me thinking about what authorship and inspiration mean when an image comes from a prompt.
What stuck
Going from an idea to a functioning site in minutes was impressive. So was the feeling of being dropped into a codebase whose decisions I hadn't made. Smaller changes in an editor suited me better: I could inspect the result, correct a bad assumption, and keep track of how the pieces fit. The tools helped build this site, but the most useful part of the experiment was learning when to slow down and read what they produced.
Looking back
Looking back while writing this summary I realise the tools have improved a lot over the past ~2 years. In my daily work I can often rely on AI to get closer to 85/90% of the way there on the first try. Obviously there are still things that need some sort of judgement or taste, but for projects with nothing on the line I barely have to look at the generated code at all.