Vibe coding an RSS feed - how hard can it be?

πŸ“‘

RSS waves, powered by vibes.

Let's try lazy slopping a trivial feature into existing by providing some fuzzy prompts. What can possibly go wrong?

This blog runs on a Vue.js -> Nuxt -> Nuxt Content stack and is statically generated. So far, so standard. Now, what's missing is RSS feeds. Not only for the main feed, but specifically for the tags, so one can subscribe to specific topics.

# A good vibe coding experiment candidate

Building RSS feeds for this blog has been in the backlog for over a year. But there was always something more important to do. The original idea was to leverage some plugin for that, specifically nuxt-feedme. But we are a bit hesitant depending on plugins as they can become a hustle to setup and maintain over years.

Both, our tech layer and RSS feeds are well documented. An RSS of a blog is not a critical feature. Why not prompt it into live? What really is the difference to a plugin in this case? There is a chance that the specific AI code generated is even better for us. It does what we want, nothing more. We can extend it (hopefully). It's not critical. We can also throw it away and recreate it from scratch. Unlike other parts of our web properties, this is not required to be maintained by humans. Of course we want to see what it does and how, but it does not need to match our high standards, as it is just a periphery feature. It only needs to do one well defined isolated job and it does not matter much how we will get there.

I don't really consider myself a developer. AI coding is tempting for me. It helps me prototype ideas, speed up my tasks and reduce load from my colleagues.

So I asked GitHub Copilot to create this for me. It took a couple of iterations. And I had to correct it along the way, maybe because of ambiguous prompts? Anyway, it was fun watching the agent iterating over the problem and testing the result over and over again. There is always something to learn.

I checked the generated feed a couple of times, before I finally filed a PR in good faith.

# The result

My colleague Rafik caught a major issue, which I actually should have checked as well: Apart from the RSS feed working as intended, the whole blog couldn't be exported anymore. His reply:

This issue is an example of the biggest problem I have with LLM assisted coding and why I couldn't see myself just letting it run willy-nilly on a codebase. After creating the main feed at /feed, it tries to create the other feeds at /feed/tag/changelog for example. But since /feed is already created as a file, Nuxt prerenderer tries to create the subdirectories for the sub feeds and it fails. I tried prodding AmpCode to try to solve it for the past 2 hours and it too couldn't see the issue. I had to actually trace the code to see the logical error. We still have a ways to go before they can be let loose if we're being honest.

# Learning

Expect the unexpected. Regardless of vibe coding, in hindsight it's pretty clear that tinkering with the build process can of course break the build process. Even a seemingly uncritical feature can have side effects.

Software development without AI
β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘
Concept work  Coding              Testing

Software development with AI
β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘
Concept work       Coding     Testing

(Idea stolen from the internet, but I forgot where)
raw

We ended up using the vibe coded feature. But it was more 'expensive' than originally anticipated. This does not consider other costs of AI, like energy consumption for this specific task.

Is this unreliability part of the AI rollout plan?
As long as we feel in control, we may not revolt against it?
Are we the frog in the water that slowly gets hotter?

Herr, die Not ist groß!
Die ich rief, die Geister
Werd ich nun nicht los.
β€”Goethe (Der Zauberlehrling)

# Last not least

The feeds are here now. We blog about webdev, developer culture, business hustles and sometimes even about PHP: