alcinnz
mastodon 4.7.3A browser developer posting mostly about how free software projects work, and occasionally about climate change.
Though I do enjoy german board games given an opponent.
Header picture is of Mordecai from Lackadaisy by Tracy Butler.
Pronouns: he/him/whatever
#noindex
My talk went well last night! I gave a good performance with barely a stumble hitting a good length, got plenty of complements, & it appears I successfully gave my intended impression! Got some laughs too!
I've just published a slight variant of my slides with a near-perfect transcript to https://adrian.geek.nz/alt-tech-futures.pdf
I tweaked it a little so it presents well as a PDF, & its missing the live performance aspect.
Feel free to use this as a basis for your own talks.
Like all good nerds, I generate a unique email address for every service I sign up to. This has several advantages - it allows me to see if a message is legitimately from a service, if a service is hacked the hackers can't go credential stuffing, and I instantly know who leaked my address.
A few weeks ago I signed up for BrowserStack as I wanted to join their Open Source programme. I had a few emails back-and-forth with their support team and finally got set up.
A couple of days later I received an email to that email address from someone other than BrowserStack. After a brief discussion, the emailer told me they got my details from Apollo.io.
Naturally, I reached out to Apollo to ask them where they got my details from.
They replied:
Your email address was derived using our proprietary algorithm that leverages publicly accessible information combined with typical corporate email structures (e.g., firstname.lastname@companydomain.com).
Wow! A proprietary algorithm, eh? I wonder how much AI it takes to work out "firstname.lastname"????
Obviously, their response was inaccurate. There's no way their magical if-else statement could have derived the specific email I'd used with BrowserStack. I called them out on their bullshit and they replied with:
Your email address came from BrowserStack (browserstack.com) one of our customers who participates in our customer contributor network by sharing their business contacts with the Apollo platform.
The date of collection is 2026-02-25.
So I emailed BrowserStack a simple "Hey guys, what the fuck?"

I love their cheery little "No spam, we promise!"
Despite multiple attempts to contact them, BrowserStack never replied.
Given that this email address was only used with one company, I think there are a few likely possibilities for how Apollo got it.
- BrowserStack routinely sell or give away their users' data.
- A third-party service used by BrowserStack siphons off information to send to others.
- An employee or contractor at BrowserStack is exfiltrating user data and transferring it elsewhere.
There are other, more nefarious, explanations - but I consider that to be unlikely. I suspect it is just the normalisation of the shabby trade in personal information undertaken by entities with no respect for privacy.
But, it turns out, it gets worse. My next blog post reveals how Apollo got my phone number from from a very big company.
Be seeing you 👌
#gdpr #privacyLast night, as I took a break between relistening to seasons of The Magnus Archives, I rewatched some of childhood animations.
Howl's Moving Castle followed by Toy Story. We had some great ones, which are fun even for adults!
Toy Story was the 1st feature-length computer-animated film, & it still looks remarkably good! Their tools at the time had some weaknesses, but PIXAR was aware of that enough to write around it. That's why they made the story about toys!
HyperCard Changed Everything - dreamweiber:
https://kottke.org/26/03/hypercard-changed-everything (embedded YouTube)
@RainDragon I'll add:
- People who dislike LLMs tend to also dislike talking about them, so you've got more friends than you may realize!
Why Is Everything Proprietary These Days? - Kev Quirk:
https://kevquirk.com/why-is-everything-proprietary-these-days
@emma@assemblag.es The list I'm presenting on in a few days are:
- CRDTs (Conflict-free Replicated Data Types)
- DGGS (Discrete Global Grid Systems)
- Duan, et al's routing algorithm
- Gaussian Splatting
There's other tech I like, but those are the ones I'd classify as new!
I don't have a lot of time this morning, so I think I'll briefly discuss what would be involved in applying the next few sound effects I see mentioned in the USB spec I'm referencing...
Simple 2D positioning can be achieved by adjusting the volume-ratio between 2 speakers. Going into 3D I believe would extend this principle to more speakers.
Reverb would involve repeating previous sounds with some sort of processing to simulate echoes.
1/2!
Scroll quadrāgintā duo - Mike "Shellsharks":
https://shellsharks.com/scrolls/scroll/2026-05-22
Some links from it...
Another Triumph For Blogging - Wouter Groeneveld:
https://brainbaking.com/post/2026/05/another-triumph-for-blogging/
Save the Web by Being Nice - Andrew Stephen:
https://sheep.horse/2024/4/save_the_web_by_being_nice.html
Last Online 620 Weeks Ago: Why I'm Loyal to the IndieWeb - Brennan Kenneth Brown:
https://brennan.day/last-online-620-weeks-ago-why-i-m-loyal-to-the-indieweb/
the web as a space to be explored - Roy Tang:
https://roytang.net/2025/06/web-explorer/
Announcing Wonders of Web Weaving - James' Coffee Blog:
https://jamesg.blog/2026/05/12/announcing-wonders-of-web-weaving
The Boring Internet - Terry Godier:
https://www.terrygodier.com/the-boring-internet
via https://roytang.net/links/2026/#59a9d38399b8111912e0a4439e68ecab
Everything You Never Wanted To Know About Linker Script - mcyoung:
https://mcyoung.xyz/2021/06/01/linker-script/
I recently spent a couple days discussing all the effort that's involved in parsing sequences of bytes into something more structured that computers can work with.
The inverse operation however is fairly easy: We traverse all the objects we want to transmit or store & concatenate all the corresponding strings. Often we go to pains to make this human-legible using generic tools, but we don't need to.
And often leave it to the kernel (a small buffer aside) to actually concatenate them.
1/1.5!
Canvas-ing the Web - Eric Meyer:
https://meyerweb.com/eric/thoughts/2026/04/27/canvas-ing-the-web/
The $500 Price Increase - Ernie Smith "Tedium":
https://feed.tedium.co/link/15204/17345764/plex-price-increase-self-hosting
Looking back... I resumed discussing GRUB & USB on March 14th.
Look forward to some necroboosting!
RAIN-PSP 0.1 - mr (in 2021):
https://preposter.us/single-michigan-helium-network/rain-psp-0-1.html
Interim Install Guide: KDE Neon User Edition for a professional digital painter workstation - David Revoy:
https://www.davidrevoy.com/article1145/interim-install-guide-kde-neon-user-edition-for-a-professional-digital-painter-workstation
Don't put aria-label on generic elements like divs - Manuel Matuzović:
https://www.matuzo.at/blog/2026/aria-label-generic-elements
TIL: Symlinking NixOS Dotfiles - Alex Kladov:
https://matklad.github.io/2026/05/21/symlinking-nixos-dotfiles.html
I feel your pain Sara - Manuel Moreale:
https://manuelmoreale.com/thoughts/i-feel-your-pain-sara
Studying GRUB's "terminfo" command, there's a suite of string-helpers defined in another file.
A couple of which lexes (via another helper) the given format string once to get some stats, reformats the variadic args as an array, considers preparing a stack, & stack-based interprets any following %-prefixed chars echoing all others to the output. Both lexer passes are aided by a shared helper, & there's additional support routines for operating the stack or the output buffer.
1/?
Studying GRUB's VBE video-driver for i386 PC machines...
There's a method for printing its state as human-legible text. The info&fini method defers to the generic routine wrapped in additional finalizers. The palette-setter defers to a generic code, with signs they considered adding a dedicated codepath for indexed colours.
The iterate method wraps an array, as well as several helpers to retrieve & format the target's metadata. Passing each resulting entry to the given callback.
1/?
As for the "terminfo" command itself...
If there's no args it iterates over a global linkedlist reformatting it into human-legible text aided by a lookuptable.
Otherwise it parses commandline flags, scans that linkedlist for the named entry (treating "ofconsole" as synonymous with "console") otherwise outputting an error message, updates the encoding flags, considers updating the screensize, & possibly invokes a helper to branch over the given type to set additional config.
2/3!


