Bunny and I were plagued with the most insidious inconsistently consistent chirp over the past few days here at Chez Boca. There would be this distinct chirp. Just one. And by the time you think it won't happen again, it would happen again. And then … nothing. For hours. Or maybe the rest of the day even. But sure enough, it would pick up again—a single chirp, then silence, then maybe another chirp, repeat for a few minutes then, nothing more for hours.
When it first started, I thought maybe one of the UPS (Uninterruptable Power Supply)es was responding to some power fluctuation, but no, they squeal quite loudly, and none of them showed any form of distress when I checked. This was more of a short chirp than a loud squeal. And by the time I was tired of looking at whatever UPS I thought it might be and turn away, there was another chirp.
I was reading a blog post about the challenges facing new twitter clone Bluesky[1], and it reminded me of a idea I've had bouncing around for a while. While federated protocols like ActivityPub and Bluesky's new ATProto do help fight many of the issues found with closed source centralized social media, they do have their shortcomings. One of the biggest (in my opinion, at least) is finding a trustworthy homeserver. Most people don't want to put that much thought into their social media setup, so they flock to whichever homeserver is already most popular, and recreate the cenralization problems that the protocol was trying to fight in the first place. Even if you convince this theoretical new user to avoid the most popular homeserver, how are they to know which one to trust with their data?
Memoization is a fancy term for having a cache of already computed results for something expensive or often calculated. Ideally the cache lookup should be faster than doing the calculation, and hopefully there is enough storage available for the cache. Usually computer science folks trot out the Fibonacci sequence here, but we'll use something simpler to understand, at the cost of the code not making sense.
[...]
Another neat thing is lazy evaluation, which works on "infinite" lists. Results of some calculation are stored onto a list, the end of which is a function that will on access generate the next item in the list. Naturally bad things will happen if you try to generate too many items for the system to hold in memory, hence it's an "infinite" list, though workable if you stay within reasonable bounds. This applies to many things on computers.
* Gemini (Primer) links can be opened using Gemini software. It's like the World Wide Web but a lot lighter.