Hahahahahahaha. Indeed!
@leoncowle good grief - even if they don't know *why* it's significant you'd expect someone writing about computery topics to at least have a feel that the number is special and ask a colleague if it's meaningful, even if just because it comes up so often.
@kimvanwyk @leoncowle Oh, I remember this. They "fixed" it after people complained, and somehow made it about ten^H^H^Height times worse: https://www.independent.co.uk/tech/whatsapp-group-chats-bigger-maximum-size-256-people-users-a6856491.html
WhatsApp increases group chat size limit to 256 people | The Independent

Bigger groups are now available to all WhatsApp users on iOS and Android

The Independent
@confluency @kimvanwyk Oh. My. Gawd!!! You're not kidding. Mwahahahahahaha!
@leoncowle @confluency @kimvanwyk _one of the most important numbers in computing_
@nasamuffin @leoncowle @confluency @kimvanwyk I didn’t even know they had WhatsApp in the 1950s…
@nasamuffin Oh dear, they'd probably had to look up "byte" in a children's encyclopedia.

@leoncowle @confluency @kimvanwyk

Not sure why you think that this explanation is bad. So why do you take offense with it? One of the groundbreaking early computers used switches after all, image related.

To a lay audience I think the explanation is absolutely fine.

@julijane @confluency @kimvanwyk I'm going to politely (friendly!) disagree with you there. If someone asks me how an iPhone works, I'm not going to explain it in terms of vacuum tubes, irrespective of how important early vacuum tube computers were.

Also, it's a terrible explanation. It's not “one of the most important numbers in computing”. And they don't say why 8 "switches" are used. Why not 7? Or 9? 8 in their explanation *comes across* just as “oddly specific” as their original 256 claim.

@leoncowle @confluency @kimvanwyk And I have to disagree back. You are manufacturing offense with the explanation. They offer an explanation for the 8 switches, because they explain that this is then one byte.

But keep being offended if that floats your boat. Pay no attention to the fact that the article was not about bits and bytes at all and this is just an explanation added because of
even more complaints before.

I'm in nerd circles for almost 30 yrs and still get annoyed by nerd pedantry.

@julijane @confluency @kimvanwyk Your offense statement perplexed me in your initial reply, and you're now doubling down on it, it seems. I was never offended. Still am not. I find their original faux pas hilarious, and their revised explanation hilariously bad. Still do. (And your replies are adding to the fun).
@julijane @leoncowle @confluency @kimvanwyk I kinda agree, the switch explanation may seem a little obscure but saying "because it's eight place values of binary" isn't really any better. Most non-tech people probably understand on/off switches just as well.
@julijane @leoncowle @confluency @kimvanwyk Although in my opinion they should have just gone for it and increased the limit to 65536 people (ducks)
@andthisismrspeacock @julijane @leoncowle @confluency @kimvanwyk
they should have stopped at 32768 and allow negative number of users in a group...

@andthisismrspeacock @julijane @leoncowle @confluency @kimvanwyk

they could have used the pdp-8 model, 12 bit machine if I remember right, and gone 4096. which is 07777.

@leoncowle @julijane @confluency @kimvanwyk I know what happened; Some kind soul tried to explain bits to them.

They obviously failed, not thanks to their lack of effort, either. 😸

@julijane @leoncowle @confluency @kimvanwyk Yep. Remembering loading the PDP-11 bootstrap loader into core memory by hand through the front-panel switches. Early 1980s.
@julijane @leoncowle @kimvanwyk Hey, I just woke up and saw that this interaction blew up. To clarify, the reason that I think that the new explanation is "bad" is that it attaches too much significance to the number 256, in a way that reveals a lack of understanding of whatever was explained to them about it. Yes, it's technically true that 256 is 2^8, with all that that entails -- but *that has nothing to do with why WhatsApp picked it* (why 8?). 1/
@julijane @leoncowle @kimvanwyk They picked it because it's an appropriately-sized number which is a power of two. The writer of the article still doesn't understand that in computing powers of two are "round" for implementation reasons, and that's why if someone wants "around a hundred or two" they'll actually pick 128 or 256. I was frustrated by this ongoing misunderstanding, which was being perpetuated to readers, and that's why I was making fun of it. 2/

@julijane @leoncowle @kimvanwyk On a different note, I think people are getting overly fixated on your phrasing, and I can see that the conversation in this thread has taken a hostile turn which I think is uncalled for. I apologise for any part I had in sparking it off.

I don't want to scold anyone, but I'm politely asking that anyone replying considers that we may all be speaking "the same language", but we use different dialects and slang, and tone doesn't always translate. 3/3

@confluency @julijane @leoncowle @kimvanwyk yep this is the actually interesting question. My guess is one byte probably the largest chunk of memory they could expand to without doing a database migration

@leoncowle @confluency @kimvanwyk

I like that they speak of variations.

Shouldn't WhatsApp have picked 255?

Doesn't the question why they picked 256 number make you even more worried if you you understand the significance 😳?

@realn2s The *indices* may go from 0 to 255, but it's still 256 *integers* in total (in this case representing people).
@confluency
Yes, that's my point.
This would mean that the maximum group size is 255 (assuming you need to represent an empty group as well).
WhatsApp increasing the group size to 256 requires 9 bits (and then they could have gone for 511 😜)
@realn2s @confluency We just don’t know where this number comes from. It could also be an id of a specific current member in a group. For example I would assume the encryption stuff to have something like that.

@waldi @realn2s Yes; if this is an actual hard size limit on the database field, it could be an index field rather than a size field.

But I doubt that it's anything like that, and think it's most likely that it's a soft limit, everything is stored in normal integer types which are *much* larger, and they picked 256 (and subsequently 512 and 1024) because they're nice round numbers!

I've picked powers of two all the time for this reason even though there was no underlying data type limit.

@confluency @realn2s Sorry, but they would not have chosen this limit, if it would not be the highest they can possible go without serious redesign.

If it would be a limit in their data store, they would have changed this limit.

So it must be somewhere else, aka in the client communication. And now you need to update all millions of millions of clients, keep it compatible and working. And if it is in the crypto, all user keys depend on it, so rekeying all users as well.

@waldi @realn2s @confluency

I assume it is not actually about the chat itself, but about the double ratchet group key management. It organizes keys in a binary tree, and adding or removing users involves rolling over a key on each level of the tree. 256 means the tree has 9 levels. So, the "oddly specific" number here is 9, and that in turn probably is "just one more than before".

@realn2s @confluency I think the point is, that every group has *slots* for 256 users, so IDs 0 to 255. There is no single integer `size`, which needs 9 bits to hold the value 256. Analog you don't need to represent an empty group, as this doesn't exist.
So 256 makes sense for User 0 to User 255 :)
@realn2s @confluency My guess, knowing nothing about WhatsApp, is that every chat has an "originator" user_id, so they added a byte for additional users, letting a group chat contain 1 + up to 255 users.

@max @confluency
I'm pretty sure the 255 had no technical meaning but it's rather an "insider" (nerd) joke.

And possible technical meaning would really worry me.

To state it more clearly:
Do not use a byte to represent a number
(If you don't have a real good reason for it (like hw), and you should really know what you are doing!!!)

@realn2s @confluency

I suppose that makes sense if you can be in a whatsapp group with no participants 🤔

@sibrosan @confluency
I was surprised. But it seems possible

(Steps to reproduce: creat a WhatsApp group with another member, remove them and exit the group yourself)

@leoncowle Top 10 important numbers in computing:
1) 0
10) 1
@leoncowle @confluency @kimvanwyk
So, a downgrade from WhatsApp for the PDP-8, which supported 4,096 member groups with its 12-bit words.
@confluency @kimvanwyk @leoncowle
Yes, and also silly, because after all the real reason was the 1964 introduction of the IBM S/360, which replaced decimal computers (like 7074, 7080) and 36-bitters (with 6-bit characters (like 704x, 709x) with 32-bit words and 8-bit bytes.
IBM dominance essentially forced most other companies to follow=> 8-bit unsigned char/uint8 in C, including some coincidences. Had S/360s been 36-bit, I’d guess we’d have 9-bit chars (as some had).
https://techviser.com/wp-content/uploads/2022/06/Mashey.IEEE_.Micro_.2022.pdf
@leoncowle insert “there are 10 types of people, those who understand binary…” joke here…
@leoncowle Developers at Facebook now have to set the real limit to 257 to account for the backdoor.
@leoncowle Sorry, I know it's 2⁸ but I still think it's an oddly specific number from a UX perspective. And it's unclear why they chose such an oddly specific number from a UX perspective, instead of a round number in base 10.
@oceane @leoncowle
Presumably it wasn't chosen from the UX perspective, just as the largest number they could support without a bunch of re-engineering work
@leoncowle i know that it’s significant cause like, 256 is a multiple of eight, which is a even and computery number that people like, but is there a more specific reason to choose 256 over something else?

@shroomie It seems you're really asking (and not trolling). 255 is the largest number you can hold in an unsigned 8-bit integer (“11111111” binary equals 255 decimal), also called a "byte”. So if the internal variable they're using as their member counter for this is an unsigned 8 bit integer, then it can't hold a number larger than 255. And 0-255 is 256 numbers.

(Note: they could be using a larger variable (i.e. with more bits), but only reserved 8 bits of it for this counter).

@leoncowle so basically, they chose it because it’s the largest thing they could choose?
@shroomie Definitely making certain assumptions here, but yes, there's a fair chance they used the maximum value that their counter variable could be set to.
@leoncowle @shroomie if they actually chose an 8 bit uint they are idiots , I think what happened is closer to (quoting from memory from the unofficial c FAQ on arbitrary numbers): "if you have to choose an arbitrary number always choose a power of two or a power of two minus one because then people will assume there was some deep reasoning involved"
@leoncowle @shroomie it still seems weird to worry about storing the counter on one byte instead of two, when 1. It's nothing on modern devices
2. the change is going to increase the memory use by far more than that anyway (as you have to store an additional 156 user IDs in your member list, not to mention the number of messages in the group which is deemed to increase, etc.)
@shroomie @leoncowle The next possible option is 65536 and that is quite a crowd.

@leoncowle

I'm actually more surprised the number isn't 255.

@pyrex @leoncowle it's sad to think there might be some code here with a comment # not possible to have a group with 0 people, so we assume it's 256
@leoncowle «The powers of 2 compel you!»
@leoncowle they’ll never get it, the cult of two will keep pulling their strings, forever, bwahahahahahaa! 🤖