announcing quite indexed
I made another thing! Quite-Indexed is a simple web app that helps Kat and I find episodes of QI to rewatch. We’ve been through all the available episodes twice now, and sometimes we want go back and watch an episode specifically with, say, Bill Bailey and David Mitchell.
That’s what Quite-Indexed is for, to help us lookup which episodes feature specific guests. You can filter up to 3 guests (Alan is always a given). There’s not much more to it than that :).
Technical Details
Quite-Indexed is a basic Vite app. Perfect use case for a SPA - highly interactive, no need for different pages or any CRUD activities.
Since this data is so small and static, there’s no database. The data is scraped from Wikipedia’s Episode List in a single go, and the resulting data is saved to a json file that’s injected into the app.
There’s actually 2 json files - the index of all the episodes, and an inverted index that I’m rather chuffed with. The inverted index is a hash of key/value with the guest names keying arrays of the episodes in which they appear. This makes finding the common episodes between guests as easy as finding the intersection between their arrays!
Quite-Indexed is deployed as a static site on Render, which was a pleasant experience. I really just wanted something simple to either push to a git remote or upload a folder with the built site. I don’t need or want to connect my github account to a provider like netlify wanted me to - let’s just keep this shit simple. Ideally I’d use kamal to deploy this to my own server, but I ran into some issues getting the deploy healthy1. Maybe later I’ll dig deeper into it.
The Squidgy Bit
Now, on to the elephant in the room…the vast majority of this project was generated by LLMs/AI.
I am very much not sold on the efficacy of AI (nor it’s ethical concerns). But I need to experiment with these things to work out my feelings about them and to see what they do/understand how they work.
Back over the summer I had GPT (I think) generate the Wikipedia scraper, in typescript. It set up the scaffolding for the scraper ok, but the selectors were wrong and it had a couple other issues that I no longer remember. So ok on getting things set up, but did not actually do the thing without human intervention.
I wrote the inverted index builder, because that sounded fun (and let me tell you, it was).
The app itself was generated using Claude2. I already had the skeleton Vite plumbing in place, so I prompted Claude to tell me what to write in which files3. I wrote a big ol’ prompt and took it in pretty much verbatim4. And it worked, one shot. Kinda scary. Granted, this is a very simple app, but I expected some back and forth bullshit. So for the app, no human intervention required.
I have many more thoughts to write about AI, but I need more time to digest and distill them.