The Guardian cryptic crossword has been a daily ritual for me since I was in Uni. The online version has really deteriorated recently — it doesn’t even appear until halfway down the page, the browser tab crashes, keyboard entry is often slow and buggy and a recent update removed tab navigation between clues. I suspect it’s general neglect combined with a decision to bloat the pages with crappy ad-tech.
Overall, I just feel a bit disrespected by it and that ruins a daily bit of calm for me.
On the other hand, the NYT crossword is a pleasant experience — a clean page, no lags. Exactly what I want. No surprise that I’m happy to pay for it. Every day it serves as a reminder of how bad the Guardian experience has gotten for me.
But, I know computer stuff. I can fix it!
Turns out I’d already made a start on it.
Many years ago, I saw Chris Zetter demo a react crossword component he’d written at a show and tell event. And afterwards, I started making my own version in Elm. I didn’t finish the project because I really had no need — in those days, the Guardian crossword worked well enough and ad-tech hadn’t enshittified everything.
But I’ve dusted off the code — techbelly/elm-guardian-crossword — and got it to a reasonable state where I’ve been using it this week to do my crosswords.

It is so much better. The browser stays responsive and I can fly through the clues with the tab navigation again. I wish I could say it’s made me better at solving them. A couple of small things to improve - see 6 down - but it’s working really well for me.
I visit the Guardian often enough anyway that I don’t feel so bad about “borrowing” the crossword data from their pages for my 10 daily minutes of peace. If they object, I suppose I’ll stop visiting altogether or get my cryptic kicks elsewhere. The ideal outcome would be if they paid a bit of attention to the deteriorating experience of the page.
It follows the Guardian UI at the minute but I think I might change it to more closely follow the NYT — skipping already filled-in letters when you type, skipping already filled-in clues when you tab and a few other small changes.
It’s good to have something I can play with and hopefully bend to being perfect for me. Maybe you’ll find it useful too.