logoalt Hacker News

nerdsniperyesterday at 5:39 PM12 repliesview on HN

Final edit:

This ambiguity is documented at least back to 1984, by IBM, the pre-eminent computer company of the time.

In 1972 IBM started selling the IBM 3333 magnetic disk drive. This product catalog [0] from 1979 shows them marketing the corresponding disks as "100 million bytes" or "200 million bytes" (3336 mdl 1 and 3336 mdl 11, respectively). By 1984, those same disks were marketed in the "IBM Input/Output Device Summary"[1] (which was intended for a customer audience) as "100MB" and "200MB"

0: (PDF page 281) "IBM 3330 DISK STORAGE" http://electronicsandbooks.com/edt/manual/Hardware/I/IBM%20w...

1: (PDF page 38, labeled page 2-7, Fig 2-4) http://electronicsandbooks.com/edt/manual/Hardware/I/IBM%20w...

Also, hats off to http://electronicsandbooks.com/ for keeping such incredible records available for the internet to browse.

-------

Edit: The below is wrong. Older experience has corrected me - there has always been ambiguity (perhaps bifurcated between CPU/OS and storage domains). "And that with such great confidence!", indeed.

-------

The article presents wishful thinking. The wish is for "kilobyte" to have one meaning. For the majority of its existence, it had only one meaning - 1024 bytes. Now it has an ambiguous meaning. People wish for an unambiguous term for 1000 bits, however that word does not exist. People also might wish that others use kibibyte any time they reference 1024 bytes, but that is also wishful thinking.

The author's wishful thinking is falsely presented as fact.

I think kilobyte was the wrong word to ever use for 1024 bytes, and I'd love to go back in time to tell computer scientists that they needed to invent a new prefix to mean "1,024" / "2^10" of something, which kilo- never meant before kilobit / kilobyte were invented. Kibi- is fine, the phonetics sound slightly silly to native English speakers, but the 'bi' indicates binary and I think that's reasonable.

I'm just not going to fool myself with wishful thinking. If, in arrogance or self-righteousness, one simply assumes that every time they see "kilobyte" it means 1,000 bytes - then they will make many, many failures. We will always have to take care to verify whether "kilobyte" means 1,000 or 1,024 bytes before implementing something which relies on that for correctness.


Replies

cedillayesterday at 5:51 PM

You've got it exactly the wrong way around. And that with such great confidence!

There was always a confusion about whether a kilobyte was 1000 or 1024 bytes. Early diskettes always used 1000, only when the 8 bit home computer era started was the 1024 convention firmly established.

Before that it made no sense to talk about kilo as 1024. Earlier computers measured space in records and words, and I guess you can see how in 1960, no one would use kilo to mean 1024 for a 13 bit computer with 40 byte records. A kiloword was, naturally, 1000 words, so why would a kilobyte be 1024?

1024 bearing near ubiquitous was only the case in the 90s or so - except for drive manufacturing and signal processing. Binary prefixes didn't invent the confusion, they were a partial solution. As you point out, while it's possible to clearly indicate binary prefixes, we have no unambiguous notation for decimal bytes.

show 5 replies
happytoexplainyesterday at 5:54 PM

Good lord, arrogance and self-righteousness? You're blowing the article out of proportion. They don't say anything non-factual or unreasonable - why inject hostility where none is called for?

In fact, they practically say the same exact thing you have said: In a nutshell, base-10 prefixes were used for base-2 numbers, and now it's hard to undo that standard in practice. They didn't say anything about making assumptions. The only difference is that that the author wants to keep trying, and you don't think it's possible? Which is perfectly fine. It's just not as dramatic as your tone implies.

show 2 replies
leocyesterday at 7:49 PM

> The article presents wishful thinking. The wish is for "kilobyte" to have one meaning. For the majority of its existence, it had only one meaning - 1024 bytes. Now it has an ambiguous meaning. People wish for an unambiguous term for 1000 bits, however that word does not exist. People also might wish that others use kibibyte any time they reference 1024 bytes, but that is also wishful thinking.

> The author's wishful thinking is falsely presented as fact.

There's good reason why the meanings of SI prefixes aren't set by convention or by common usage or by immemorial tradition, but by the SI. We had several thousand years of setting weights and measures by local and trade tradition and it was a nightmare, which is how we ended up with the SI. It's not a good show for computing to come along and immediately recreate the long and short ton.

show 2 replies
soneilyesterday at 8:24 PM

It goes back way further than that. The first IBM harddrive was the IBM 350 for the IBM 305 RAMDAC. It was 5 million characters. Not bytes, bytes weren't "a thing" yet. 5,000,000 characters. The very first harddrive was base-10.

Here's my theory. In the beginning, everything was base10. Because humans.

Binary addressing made sense for RAM. Especially since it makes decoding address lines into chip selects (or slabs of core, or whatever) a piece of cake, having chips be a round number in binary made life easier for everyone.

Then early DOS systems (CP/M comes to mind particularly) mapped disk sectors to RAM regions, so to enable this shortcut, disk sectors became RAM-shaped. The 512-byte sector was born. File sizes can be written in bytes, but what actually matters is how many sectors they take up. So file sizing inherited this shortcut.

But these shortcuts never affected "real computers", only the hamstrung crap people were running at home.

So today we have multiple ecosystems. Some born out of real computers, some with a heavy DOS inheritance. Some of us were taught DOS's limitations as truth, and some of us weren't.

show 2 replies
Dwedityesterday at 5:51 PM

At least it's not a total bizarro unit like "Floppy Disk Megabyte", equal to 1024000 bytes.

ameliusyesterday at 5:59 PM

Are you talking about imperial or metric kilobyte?

pifyesterday at 6:12 PM

> Edit: I'm wrong.

You need character to admit that. I bow to you.

BrandoElFollitoyesterday at 7:27 PM

> Edit: I'm wrong. Older experience has corrected me - there has always been ambiguity "And that with such great confidence!", indeed.

Kudos for getting back. (and closing the tap of "you are wrong" comments :))

ameliusyesterday at 5:57 PM

At this point I just wish 2^10 didn't end up so close to 1000.

show 1 reply
kstrauseryesterday at 8:13 PM

People were using metric words for binary numbers since at least the late 1950s: https://en.wikipedia.org/wiki/Timeline_of_binary_prefixes#19...

Which doesn't make it more correct, of course, even through I strongly believe believe that it is (where appropriate for things like memory sizes). Just saying, it goes much further back than 1984.

dgacmuyesterday at 6:49 PM

And networking - we've almost always used standard SI prefixes for, e.g., bandwidth. 1 gigabit per second == 1 * 10^9.

Which makes it really @#ing annoying when you have things like "I want to transmit 8 gigabytes (meaning gibibytes, 2*30) over a 1 gigabit/s link, how long will it take?". Welcome to every networking class in the 90s.

We should continue moving towards a world where 2*k prefixes have separate names and we use SI prefixes only for their precise base-10 meanings. The past is polluted but we hopefully have hundreds of years ahead of us to do things better.

pifyesterday at 6:09 PM

> The wish is for "kilobyte" to have one meaning.

Which is the reality. "kilobyte" means "1000 bytes". There's no possible discussion over this fact.

Many people have been using it wrong for decades, but its literal value did not change.

show 4 replies