In the example, username validation is a job of another layer. For example I want to make sure username is shorter than 60 characters, has no emojis or zalgo text, and yes, no null bytes, and return a proper error from the API. I don't want my JSON parsing to fail on completely different layer pre-validation.
And for username some classes are obviously bad - like explained. But what if I send text files that actually use those weird tabs. I expect things that work in my language utf8 "string" type to be encodable. Even more importantly, I see plenty of use cases for null byte, and it is in fact often seen in JSON in the wild.
On the other hand, if we have to use a restricted set of "normal" Unicode characters, having a standard feels useful - better than everyone creating their own mini standard. So I think I like the idea, just don't buy the argumentation or examples in the blog post.
Usernames are a bad examples. Because at the point you mention, you may as well only allow a subset of visible ASCII. Which a lot of sites do and that works perfectly fine.
But for stuff like family names you have to restrict so many thing otherwise you'll have little-bobby-zalgo-with-hangul-modifiers breaking havoc.
Unicode is the problem. And workarounds are sadly needed due to the clusterfuck that Unicode is.
Like TFA shows. Like any single homographic attack using Unicode characters shows.
If Unicode was good, it wouldn't regularly be frontpage of HN.
I still run a 6600 (65W peak) from 2016 as my daily driver. I have replaced the SSD once (MLC lasted 5 years, hopefully forever with SLC drive from 2011?), 2x 32GB DDR4 sticks (Kingston Micron lasted 8 years, with aliexpress "samsung" sticks for $50 a pop) and Monitor (Eizo FlexScan 1932 lasted 15! years RIP with Eizo RadiForce 191M, highly recommend with f.lux/redshift for exceptional quality of image without blue light)
It's still powerful enough to play any games released this year I throw at it at 60 FPS (with a low profile 3050 from 2024) let alone compile any bloat.
Keep your old CPU until it breaks, completely... or actually until the motherboard breaks; I have a Kaby Lake 35W replacement waititng for the 6600 to die.
I just "re-cycle" them.
Bought a 7700X two years ago. My 3600X went to my wife. Previous machine (forgot which one it was but some Intel CPU) went to my mother-in-law. Machine three machines before that, my trusty old Core i7-6700K from 2015 (I think 2015): it's now a little Proxmox server at home.
I'll probably buy a 9900X or something now: don't want to wait late 2026/2027 for Zen 6 to come out. 7700X shall go to the wife, 3600X to the kid.
My machines typically work for a very long time: I carefully pick the components and assemble them myself and then test them. Usually when I pull the plug for the final time, it's still working fine.
But yet I like to be not too far behind: my 7700X from 2022 is okay. But I'll still upgrade. Doesn't mean it's not worth keeping: I'll keep it, just not for me.