Notes for May 24–31

Today I realised that I could just spend the day doing essentially nothing and that nobody would hold it against me (at least in Western nations), so… I might well do just that, with a few caveats:

Wi-Fi Fallout

Something very weird happened after I published – it made it to Hacker News (a day or so after I submitted it myself, because, as usual, most of my self-submitted links still appear to be shadow-banned despite 30K+ karma–and no, I don’t understand that either), and it was very popular among the usual band of armchair networking experts.

But then something really weird happened: I got an alert from Cloudflare that the lowercase-rewrite worker I’d deployed as a fallback for incorrect linking was exceeding the free-tier limit (100,000 runs, if I recall correctly), which made me curious enough to dig into the analytics:

Cloudflare page views control chart showing two out-of-control spikes reaching ~70,000 views/hour on 30 May
The control chart doesn't lie. Those orange dots are not normal.

I have CF’s anti-bot crawling settings active, I turned on CAPTCHAs again after the initial peak, and yet… 70,000 views in an hour, twice? Has to be crawlers. And how did CF let them through and count them?

So I went and plotted Clarity’s chart of “human” visitors (always an undercount, since it only captures people without JS or ad-blocking, but useful as a sanity check):

Microsoft Clarity unique visitors chart showing the genuine HN-driven spike to ~8,000 unique visitors on 29 May, with traffic returning to normal shortly after
The real HN spike was Thursday. Everything after is noise.

Definitely bots after the initial HN flood. I have to wonder why, why now, and whether Cloudflare’s free tier is still even marginally effective at blocking them.

go-pherence

The most interesting work this week was grafting speaker diarization onto go-pherence. Whisper tells you what was said; knowing who said it is a separate problem, and the standard answer is SpeechBrain plus a Python subprocess plus a fairly heavy PyTorch dependency. I did not want any of that. Instead I ported ECAPA-TDNN – the speaker embedding model SpeechBrain uses – to Go, and it all now mostly works with zero Python, even if it still needs a lot of tweaking.

There’s a speakercheck validation harness that runs spot-checks against windowed audio segments, scores against expected speaker labels, and outputs JSON reports, and a diarize-vtt command that accepts an optional ECAPA model and emits speaker-tagged VTT output. I expect to drop this onto one of my current hardware test subjects soon.

In Other News

I’ve been tinkering with more new hardware, but some things just take time and I’m still putting together my notes on those.

On the other hand, I am still very much impressed with the running , and I’m enjoying building little plugins for it as I go:

Niri display layout plugin showing the Kuycon P20 external display and built-in DSI screen arranged in a stacked layout
A Niri plugin to manage display layout, because of course I wrote one.

I will eventually publish these somewhere…