All posts

March 29, 2026 Personal

On vibe coding for the use of static website generators

I’ve been using Codex (powered by GPT-5.4) to vibe code and restructure a few websites I’m maintaining using Hakyll. I think vibe coding really makes my life much easier.

To me, the mental cost of using a static web generator mainly comes from human context switching. When I first created these websites, I was quite familiar with Hakyll and even extended the built-in templating engine to implement a multi-language rendering for the summer school FLOLAC. I was quite proud of that. However, once I moved on to more mentally intensive tasks, such as my research, my familiarity with the Haskell and Hakyll ecosystem quickly faded.

The website generator is flexible, but it requires familiarity with the language ecosystem and its design logic, which tends to stay if programming is your daily task. As a researcher responsible for working on various aspects of my life, including my research, my family, my kid’s school life, and my assistants and summer interns, my programming skills are gradually weakening with each day I don’t use them.

Despite these challenges, I’d like to resolve some issues and add features to the websites, but I no longer have access to these skills unless I spend my precious time (compared to what truly matters to my life) to pick them back up. On the other hand, I’m sure I’ll also need to invest another significant amount of time to return to my research once I make these improvements. The cost of context switching sets me back improving these websites, so I’ve only been able to add some content by editing some Markdown files.

Luckily, vibe coding is a viable option for this kind of job. Haskell programs are easy to understand without knowing the ecosystem, and a static website is typically harmless even if there’s an issue with the generation rules. I still remember the logic of the website (though I don’t know exactly how it was implemented). Additionally, Hakyll is a rule-based system, so the logic of rendering is easy to understand (if you know which rule to use!). I’m sure I can easily spot any errors if a LLM bullshits. There’s no harm in giving it a try.

So, yes, I’m now using Codex to organise and improve the site generator. The outcome is fantastic: I (or GPT-5?) implemented an extended templating engine in a few days that supports Boolean operations with system build information as metadata for the summer school. This means that past deadlines will be downplayed. I also structured the list of my publications with an optional toggle to display abstracts instead of using Pandoc’s render. Additionally, I added a list of recent summer interns and a list of recent blog posts. Finally, I made a number of under-the-hood improvements to further reduce my maintenance burden.

Oddly enough, I seem to be the few researchers in my subject who tried vibe coding, as many of them despise generative AI and make fun of the bullshits it produces. On the other hand, I think LLMs should not be blamed for producing bullshit, but the people who did should be blamed. Generative AI could be a life-saver, as in this case, if you use it in a meaningful way.