

There’s a whole lot of math in that article, and to be honest I’m not 100% clear on what they’re trying to say. I think they’re talking about how standard quantization isn’t making full or “accurate” use of the number space, although if you read through to the end they note that there’s really nothing terribly wrong with the standard way. But here’s my take.
To simplify, I’ll use an integer range 0-4 instead of 0-255, but the principle’s the same.
So, say that we’re quantizing from a floating-point range of 0.0-1.0 to an integer range of 0-4. Doing things the usual way, that’d be the orange numbers on the bottom of this diagram:

But you can see that this doesn’t line up cleanly with a nice, regular division of the range into 5 equal blocks. If we just multiply by 4 (our integer max) and then round off to the nearest integer, the original value ranges represented by our integer 0 and 4 are half the size of the others. E.g. 0.0 to 0.49 become 0, but 0.5 to 1.49 become 1.
Now, if we want to represent true 0.0 and 1.0 simply with our integer range (0-4), we should use 0 to exactly equal 0.0, and 4 to exactly equal 1.0. And converting from integer to float by calculating [value / 4] (or [value / 255] in reality) will get us exactly that. I wouldn’t change that.
What I would suggest changing–to anyone who cares enough about it–is how the numbers are converted from float to integer. If you look at the diagram again, you can see that there is one orange integer per evenly-divided block, even if they don’t line up with the centers of the blocks. If we take a float (0.0-1.0) representation and multiply it by our integer max plus one, we’ll get the blue numbers at the top of the diagram. Then all we have to do is round down to the nearest integer and cap the result at 4 (or 255, or whatever our integer max is), and we’ll have a nice, even distribution in our conversion.
I could have misunderstood, but it seems like all of the errors and uncertainty discussed in the article come from how the multiplied floats are truncated into integers. I think that this method eliminates that cleanly.


For VHS, it was much more common to record things from broadcast. Even if someone had multiple machines, copies using standard consumer VHS degraded noticeably even in one generation.
For DVDs, writing drives were expensive and uncommon for a long time, and most early players didn’t like burned discs, so you were limited in how you could watch them anyway. I know that some people got into the mindset of physically cloning the discs, but I feel like it was at least as common to rip, re-encode just the main title with a more modern codec to shrink the size, and store that smaller copy electronically.


Surely it shouldn’t be surprising that a technology which literally can only regurgitate bits of things which others have already made, when put into the hands of people whose imagination is limited to what already exists (or alternatively, is not meaningfully directed) precisely because they lack an understanding of the underlying principles, results in only slight variations of the things we already have.
I can’t immediately give you a smartphone app concept that completely breaks an existing, arbitrary taxonomy, but there are two good reasons for that. One; anything that can still run on a smartphone can almost certainly be shoehorned into any existing taxonomy by carefully-worded arguments. Two; by the time a break with tradition is clear enough that such arguments become impossibly tenuous, smartphones will be things that our great-grandparents used to use.
To counterpoint the author’s smartphone analogy, think of how people looked at their TVs in the early 1970s. It was a society-changing but by that time relatively established technology with high growth. And people had all sorts of ideas for “new” things to do with it. You could’ve made arguments regarding most of them in the same vein as the arguments in this article. Most of those ideas were half-baked and failed at the time… only to resurface decades later, altered, refined, and successful, on PCs and smartphones. But PCs and smartphones are not, in any real sense, TVs.
Which surprisingly, once I hunkered down and pushed my way through this lengthy essay, is essentially one of the points that I think the author is making (although obliquely): That by the time this technology has evolved beyond its current limits, it will no longer be something that we recognize as “software” in the current sense.
I suggest trying to keep the concepts of “integrated system design” and “algorithmic process definition” separate from “digital computer software” in a similar way. Which, funnily enough, are the parts of all of this at which humans arguably still beat LLMs.


A little while ago in a retrogaming community, someone asked why Atari 2600 games always ran at 60fps when even NES games sometimes had slowdown. It was explained that the video system in the 2600 isn’t independent of the main CPU as it is in other consoles, so if the game program doesn’t keep updating the display with correct timing, it gets scrambled.
Truly no choice!
In both cases the trading value of the currency has almost nothing to do with who originated it, and almost everything to do with how the general public feels about it.
Just like crypto, most “government” currencies are worth what they’re worth only because everyone agrees that they are. That’s called “fiat” currency. And that’s why fiat currency exchange markets exist. The US Dollar hasn’t been “convertible” (redeemable for a fixed amount of precious metal) since 1971, and many other world currencies were already backed in some way by the US Dollar at that time.
The real difference is in the supply.
Government fiat currency is difficult to counterfeit, although the government (or reserve bank) can always make more whenever they want. We trust them not to print more money, increasing the money supply and devaluing the currency. However, this is exactly what has happened sometimes in the past, and no doubt will happen again in the future.
Crypto currency is virtually impossible to counterfeit, and IIRC there’s a finite (but not precisely known) amount of it that can be made, no matter who you are.
Personally, I still use physical fiat currency and no crypto. I’d like to use crypto, but regulation in my country makes it very difficult to use without registering your details with a central authority. And although everyone’s pushing e-money options which are similarly tracked, thankfully I still have the option of using anonymous cash.
I don’t do anything bad or illegal. I just believe that government and big business don’t deserve to know everything I do in my life simply because they want to.


To say that social media is just people socializing through media is rather like saying that newspapers are just news on paper.
In both cases it ignores the deliberate, pervasive, and frequently toxic efforts of the platform curators to maximize “engagement” with their audience in pursuit of ad revenue.
When I socialize with people offline, it looks almost nothing like modern social media “services”.


As the owner of a relatively new Android phone, who wanted to disable a software update nag, this is no longer always true.
In my research I built a history of instructions for disabling these nag screens/notifications on phones from this manufacturer. At first, there were things you could do on the phone itself. Then you had to change a setting with ADB. Then you had to disable a system app with ADB. Then you had to get root access to uninstall the app with ADB. And now, for my phone and other recent models, there’s literally nothing you can do, even with root access in ADB, short of flashing custom firmware.


Yes, and you’ve got to remember to download it as soon as you buy it. I’ve been stung a couple of times by companies going out of business or inventing rationales for removing “old” things.


I presume that the code was tested for various cases where there was at least one previous password on record, but everyone forgot about new users with no previous passwords. However I’m having trouble imagining what the code could actually be doing.
I can only imagine a dynamically typed language, and a “checkedPasswords” variable being declared but uninitialized, then a loop incrementing that variable for each non-similar password pulled from the records, and finally a check to see if checkedPasswords equals the number of stored previous passwords.
The execution environment could type and initialize the variable by default after the first increment, but in the case of the user having no previous passwords on record that wouldn’t happen, and the final equivalency check would be comparing an integer to some internal “NaN” state, thus failing.
I fixed it, but that is weird. I originally thought it had a double “r”, but I looked it up to check and I’d swear that the results spelled it with only one. Now I check again and it’s a double “r”.
Must be arrabbiata, 'cause it’s got quite a burn.


I know it’s a really picky take, but I resent the implication that I should want to keep my personal files mixed in at the same level of the file hierarchy as all my applications’ random settings, cached data, and temporary garbage. Documents, Music, Videos, Projects, .config, .cache, SelfishAppName, OtherSelfishAppName…
It bothered me when Microsoft started doing it in Win95, and it still bothers me in Linux. Especially when software acts surprised (or occasionally indignant) that I don’t keep all my files in those directories. I have lost small bits of my own work over the years by forgetting to back up things that recalcitrant software refused to store anywhere else.
But I am amused that this is the same name that I use at the top of my own storage hierarchy for self-made things.


Your comment seems to be trying to disagree with me, but I think you wrote almost the same things that I wrote in the comment that you’re replying to:


Initialization in C++ is so simple that somebody wrote a nearly 300-page book on the subject
There’s a book about 101 ways to cut potatoes. Perhaps that could be a real mike-drop bit of evidence that we shouldn’t be cooking potatoes.
Here’s a 249-page book “just” about atomics and locks in Rust. Does a book this large about only one aspect of Rust prove that it’s a terrible language? No, because as with the C++ book, if we look at the summary of contents we can see that it actually covers a great deal more, simply with a focus on those topics.
Luckily we don’t have to be compete masters of every aspect of a language in order to use it.
Honestly, I think that modern C++ is a very piecemeal language with no clear direction, and it has many issues because of that. But the title and page count of a single book is not a convincing argument of anything.


I’m all for humourous roasts of things, but does anyone really find this funny? Was the author possibly being serious? I don’t know. What I do know is that I stopped watching after the first four examples because they were all deliberately incorrect or misleading, but also didn’t seem funny to me.
At this point I had hope that this was meant to be amusing.
They still could be going for a comedy roast, I guess.
OK that was virtually the same fake point as the previous one, and still no punchlines in sight.


The original StarCraft and Brood War expansion didn’t require Internet for installation. And while the original boxed copies (I got the “Battle Chest” re-release which is the same) required the CD to be in the drive, the last one or two official update patches let you copy the .mpq (?) data files from the CDs into the installation directory so you can play without them.


Reading current discussion, it seems more like “You say that it’s impossible to dirty your house, yet nothing’s stopping anyone from dumping out this bucket of mud on your floor, curious!”


Sorry for not being clear; when I said “keep track automatically” I meant dynamic typing. Of course you’re right that “keeping track of your variables” could also be interpreted to refer to static typing.
I’ve heard this one before.
“This new technology has been great while the wealthy early adopters could use it to exploit the masses, but now that it’s becoming more widespread and democratized, we must regulate it carefully, introducing rules with which only the wealthy and well-established can realistically comply, to protect society.”