oddly specific
oddly specific


oddly specific
Numbers guy here, I can confirm 256 is an evenly specific number, and not an oddly specific number.
Oh you are the numbers guy ? Name every number
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
I'm going for the boring but practical answer: {x | x ∈ A} and {x | x ∉ A}. Obviously the second set is doing the heavy lifting.
But is it Numberwang, Mr. Numbers Guy?
nerd
Ha, got eem
User name checks out
As the numbers guy. Do you remember the name of the site that can tell you the what a given number is often associated with?
Wikipedia often has disambiguation pages for numbers that may be helpful in a search like this (https://en.m.wikipedia.org/wiki/71).
WolframAlpha is good for identifying numerical properties of numbers (https://www.wolframalpha.com/input?i=71).
OEIS has a searchable set of sequences (https://oeis.org/search?q=71&language=english&go=Search)
I fear that none of these is what you're looking for, though. My attempts to find something that sounds like what you want mostly turned up resources on numerology, and at least one article apparently about how the meaning of numbers is radically different between cultures.
My brain is going to OEIS or angel numbers which are both like total opposites. Number theory or numerology, take your pick.
Oh yeah well if you're some sort of numbers guy, answer me this: I think you're name is super cool, and makes me wonder, is there a largest prime you can make listing digits of pi starting from the beginning. There's gotta be infinite right?
Pi is suspected to be a normal number (though this has not been proven). If it is normal, it's likely that integers comprised of the first N digits of pi will be just as likely to be prime as comparable large integers. I suspect but cannot prove that there are infinitely many prime numbers whose digits are the first N digits of pi (with or without the leading 3).
Well, three is prime and pi starts with a three, therefore, even if there's larger primes, there is one which is the largest. QED.
Shout out to Castlevania II, where you can hold anywhere from 0 to 256 laurels. Yes, you read that right -- 256, not 255. I inspected RAM to double check. It's a 16-bit word on an 8-bit system with a maximum value of 0x100
. They could have used 8 bits instead of 16. But no, they really did choose this arbitrary number.
"I inspected RAM to double check."
That's an unhinged level of commitment. Respect — I dig it
I hate this. I love this.
If I ever make a game I might put stuff like this in it.
Having made a few games back in the day, this isn't something you add on purpose, this is something that you screwed up, are going to "fix later", then realize it's too much hassle to rewrite 45% of your code and you just raise the minimum spec requirements a bit to compensate.
Maybe they keep some other data in the same space using bitmask?
plausible, but my experience from dissecting these kinds of games is that they tend not to be as space efficient as you'd think they could be if they were the kaze emanuar type. The fact that they opted to have 257 distinct values for the laurels suggests to me that they weren't prioritizing space efficiency.
My best (wildly speculative) guess is that a designer, knowing 256 is a common limit, wasn't thinking carefully and said the maximum value should be 256 (instead of 255), and then an overly pedantic coder implemented this to the letter while rolling their eyes.
Even if true, 256 would be a waste of the range. 255 would make sense if trying to stay in one byte, using a whole different data type to get one extra bit just to hold 256 instead of saying "screw it, let's go to 511" even while using other bits.
It's just a very weird thing to do to pick 256 as a value limit back in those days (also oddly specific now, but for different reasons)
Sounds like such a flex move
It also has the second best NES soundtrack, after The Guardian Legend.
In the top ten, with Blaster Master, and Batman.
I've never given TGL a proper listen, though I have the game for NES. Thanks for the recommendation!
Read it in the (old) avgn voice...
how can you hold 0 laurels? that's different from not having laurels?
the number of laurels in your inventory is stored as an integer from 0 to 256.
This isn't a "tech article", it's an article about tech. This is a normie article from a normie news outlet for normie readers.
Also from the article:
A previous version of this article said it was "not clear why WhatsApp settled on the oddly specific number." A number of readers have since noted that 256 is one of the most important numbers in computing, since it refers to the number of variations that can be represented by eight switches that have two positions - eight bits, or a byte. This has now been changed. Thanks for the tweets. DB
That weird ass explanation with switches and "one of the most important numbers" still sounds absolutely clueless.
I liked the switches analogy! Generally about binary though; I agree it doesn’t connect back to the number of users application.
And yeah most important number…sounds like they were quoting an LLM.
Still, it works well for "normies"...
One of the most important numbers? I'd argue the most important number in computing is either 1 or 0...
What the fuck is a power of 2??? I’m vibe coding python AI.
There are only 10 kinds of people in this world...
One is one of them
That quote really is the problematic part. The part about switches is fine - it's an attempt to explain tech to a "normie." But for a tech writer to ever say it's not clear why they settled on 256 is worse than embarrassing. They had to be corrected by tweets.
Anyone whose ever had an intro to computers class has had a computing professional explain computers using simple language and analogies. That's the way this kind of thing should work. It sounds like this author has no more clue about computing than the target audience, which isn't going to work out well for the reader.
If you look what the last articles for the independent Doug Bolton (the guy who wrote the stuff in question) wrote, it was Condom discovered inside woman's appendix, and afterwards he only wrote for "Movers & Makers Cincinatti" and some stuff looking like crawler bait for "Old Times Music" so i'm pretty sure the Independent didn't want him anymore
It doesn't really matter that it's a "normie article for normie readers". Writing articles is journalism. Not knowing 256 offhand? Permissible. Being a journalist who wrote an article and didn't even do the bare bones of research? You're still a bad journalist, and as callous as it is, you should lose your job and livelihood. Bad journalism is too dangerous to just let it fester like this.
The newspaper he was writing for is a major publication he absolutely could have asked someone.
The problem here is the newspaper didn't care enough about the article to put anyone on it who is even remotely familiar with technology. They probably thought of it as just some throwaway piece to fill out a bit of space. Which to be fair it would have been had it not been for that comment.
It used to be common for uh, writers, journalists, to have at least basic familiarity with what they're writing or reporting on.
Its not like this is journalistic malpractice, spreading lies, fabricating a quote, supporting a bs narrative by being very selective with context and such...
... but it is pretty embarrassing.
People seem to constantly confuse 'i use computer technology' with 'i understand how computer technology works'.
Like uh, Gen Z and A are the most digital, online generations yet... but many of them can't type on a keyboard, have no idea what a file/folder structure is.
I think you're highlighting two different problems here.
I agree that Gen Z and younger are, on average, far worse at basic computer skills than many seem to assume. It makes me reflect on my tech-learning throughout my childhood, as a Millennial. I think that part of it is that many erroneously assume that because Gen Z has grown up online, that this will lead to proficiency, but the kind of tech they've been exposed to is largely walled gardens and oversimplified UIs. That assumption of proficiency leads to scenarios where their lack of skill is only discovered when they enter college, or the workplace. I am astounded at the prospect of people not even knowing the difference between "Cut and Paste" and "Copy and Paste". It's grim.
The poor quality of journalism may be linked to this, but I think it's larger than that. It seems like it's not a great time to be a journalist at the moment (my writer friends tell me that increasingly, the only work they're able to find is copy-editing AI shit). Private equity is fucking up so much of the world — journalism included. Polygon is an example of an outlet that was apparently sustainably profitable, before it was sold and experienced mass lay-offs; an individual company's success doesn't matter to the big conglomerate that owns it. I know that other journalistic companies have fallen to the same fate too.
It also seems that tech journalism ends up being especially shit. I didn't start noticing it properly until I watched this podcast episode from "Tech Won't Save Us". The TL;DW of it is that tech journalists like Kara Swisher like to pretend that they speak truth to power, and fire hard-hitting questions at big tech people, when that's patently bullshit and it's clear that they only get the access that they do by playing softball with the powerful. We can't blame a few individuals for the entirety of the tech journalism problem, but I reckon it's a big part of it when so many of the established, big names in this space don't seem interested in actually doing tech journalism (and smaller names who want to ask journalistically interesting questions don't get platforms or access to ask those questions).
Our information ecosystem is not in a great place. I've found it tremendously beneficial to curate the news and information I'm exposed to (praise be RSS), but that has been a gradual process of actively working to notice good journalism in the world and build up my mental "rolodex" of people whose perspectives I trust to be worthwhile (even if I don't necessarily agree with said perspectives). However, this is an area that I care deeply about, and thus it feels worthwhile to spend that energy to curate my infosphere. Most people won't have the inclination or energy to do this work, which is unfortunate.
A previous version of this article said it was "not clear why WhatsApp settled on the oddly specific number." A number of readers have since noted that 256 is one of the most important numbers in computing, since it refers to the number of variations that can be represented by eight switches that have two positions - eight bits, or a byte.
Lol, weird way to say that 256 is a power of two, and computers operate in base two.
Their definition is a lot better.
It's a pretty succinct explanation that links what it is to something most people have heard of (a byte).
It used to be a way bigger deal when computers were very memory scarce, if you needed to say, represent 1024 values, that means you'd use 10 bits or 2 bytes, the remaining 6 bits could be used to store other related information like flags but more often than not it would be waste (unused values that still have to be represented as 0s)
These numbers are pretty arbitrary nowadays but they still show up a lot in computing. They didn't choose 256 so they could represent it in a byte, the real reason is probably that groups larger than 256 can't realistically be managed by users.
That's my 2¢ anyways.
Tbf saying it that way brings a visual metaphor. Simply giving it as a mathematical definition would leave it feeling just as arbitrary.
As a software engineer: actually there is no need for a number of people as a power of 2 unless you need exactly 1 byte to store such information which sounds ridiculous for the size of Whatsapp
Or some binary search tree with an artificial height lol.
It’d make sense at protocol level. Otherwise, yeah, even bit-size database columns end up being stored as a word unless the engine compacts it.
If it's engagement bait, it's working.
Engagement byte
So far at least, I've found this much more charming than culture war bait.
Enragement bait.
They're the same picture.
I wish we could see what outlet it was for context
The independent
pregagenant
You know you're a tech nerd when 256 sounds more even than 250 or 300. 😅
It kind of is "more even".
256 is just 2⁸
250 is 2x5³
300 is 2²x3¹x5²
Any division of 256 with an integer and integer result will be even. Most divisions of 250 and 300 with an integer and integer result will be odd.
Even that is odd.
256/256 is not even
Or a maths nerd!
Or when it's bothering you that it's 256 and not 255... aren't we counting 0 anymore? :/
Or when it's bothering you that people forget the difference between counting and indexing.
You can index to 255 in an 8 bit number, but your count is still 256 when you get there.
https://en.wikipedia.org/wiki/Zero:_The_Biography_of_a_Dangerous_Idea
One of the most annoying books I ever read. Every page made me feel stupider and more uneducated.
Yep very weird, should have been 255.
No, you can't have a group of zero, so the counter doesn't need to waste a position counting zero.
0 is reserved for the FBI agent listening in.
If you ever create a system where the number of users is "group.members - 1" everywhere in the code, I'd be very disappointed in you and deny that PR.
On another note; I doubt WhatsApp are so concerned with performance they are actually limiting the number of group members by the data type.
Sure you can. It's a group that exists, but it has 0 participants.
Tell that to the Castlevania 2 devs. https://lemmy.ml/comment/19720906
You probably could, if everyone got banned or something
You cannot also have a group of 1, therefore either is 255 or 257. 256 is oddly specific (or the code was made by an intern)
In this case the limit was entirely arbitrary.
The programmers were told to pick a limit and they liked 256. There are issues with having a large number of people in a group, but it wasn't a hardware limit for this particular case.
But it's still not oddly specific, they picked a nice round number
I remember being puzzled by this and many other numbers that kept cropping up. 32, 64, 128, 256, 1024, 2048... Why do programmers and electronic engineers hate round numbers? The other set of numbers that was mysterious was timber and sheet materials. They cut them to 1220 x 2440mm and thicknesses of 18 and 25mm. Are programmers and the timber merchants part of some diabolical conspiracy?
Powers of two are the roundest of numbers.
They're not round, they're square!
Much later in my career I came to appreciate the beauty of this system and the link with hexadecimal. I had to debug a network transmitted CRC that was endian flipped and in that process learned that in the Galois Field of two, 1+1=0 which feels delightfully nonsensical to a luddite.
32, 64, 128 etc. are all round numbers, counting in binary. They are powers of two. Since computers work in binary, they make logical sense.
1220mm is 4ft, and 18 and 25mm are three-quarters of an inch, and an inch respectively.
They were making a joke. That being said, im not familiar with lumber or imperial<->metric conversions so their second point was lost on me, so thanks.
They just do it to look cool in front of their developer friends.
Pretty much this...
Once upon a time, sure, you might have used an 8 bit char to store an array index and incur a 256 limit for actual reasons....
But nowadays, you do it because 256 is a "cool techy limit". Developers are almost all dealing with at least 32 bit values, and the actual constraints driving smaller values generally have nothing to do with some power of two limitation.
Timber is actually cut in inches. That's why the odd numbers.
evenly specific
So, I get that 256 is a base 2 number. But we're not running 8-bit servers or whatever here (and yes, I understand that's not what 8-bit generally refers to). Is there some kind of technical limitation I'm not thinking of where 257 would be any more difficult to implement, or really is it just that 256 has a special place in someone's heart because it's a base 2 number?
Because 256 is exactly one byte. If you want to add a 257th member, you need a whole second byte just for that one person. That's a waste of memory, unless you want to go to the 64k barrier of users per chat.
Except that they're almost certainly just using int
, which is almost certainly at least 32 bits.
256 is chosen because the people writing the code are programmers. And just like regular people like multiples of 10, programmers like powers of 2. They feel like nice round numbers.
If each user is assigned a number as to where they're placed in the group, I guess. But what happens when people are added and removed? If #145 leaves a full group, does #146 and beyond get decremented to make room for the new #256? (or #255 if zero-indexed). It just doesn't seem like something you'd actually see in code not designed by a first semester CS student.
Also, more importantly, memory is cheap AF now 🤷♂️
when writing somewhat low-level code, you always make assumptions about things. in this case, they chose to manage 256 entries in some array; the bound used to be lower.
but implicitly there's a tradeoff, probably memory / CPU utilisation in the server.
it's always about the tradeoff between what the users want, what is easier for you to maintain, what your infrastructure can provide, etc.
There's often a lot of fun cheats you can use - bitwise operators, etc - if your numbers are small powers of two.
Also it's easier to organize memory, if you're doing funky memory management tricks, if the memory you're allocating fits nicely into the blocks available to you which are always in powers of two.
They're not necessarily great reasons if you're using a language with sufficient abstraction, but it's still easier in most instances to use powers of two anyways if you're getting into the guts of things.
The issue isn't storing each individual ID, it's all of the networking operations that are done and total things that are stored/cached per user in each chat. All of those things are handled and stored as efficiently as possible. Sure they could set it to any number, but 256 is a nice round one when considering everything that is happening and the use cases involved. They have user research data and probably see that 128 is too close to a group size that happens with some regularity, but group sizes very rarely get close to 256, and 512 is right out.
Maybe each user has a user id in a group, and that group user id is stored as 8bit int? Idk
Still odd, I very much doubt they use a 8bit variable to set this limit. What would this bring ?
Still odd
Actually, it's even.
When the program is running it's probably stored with 32 or 64 bits, but that probably isn't the case for the network packet layout. I can imagine them wanting to optimize network traffic with over 3 billion users even if it's just a small improvement.
Also TIL that Erlang's VM apparently stores strings as linked lists of chars. Very strange.
ITT: People who have never done low level networking.
Edit: Without some absolutely crazy hacks, the smallest amount of data you can really transfer or compute on is one byte. 256 requires one byte, 257 requires you to DOUBLE the data used to 2 bytes. Multiply this by whatever data they send and the problem remains the same.
This is the kind of thing that comes up a lot designing custom protocols.
Jup, lots of people are talking 64-bit architecture and RAM optimization, whereas the number in question most likely is related to IPv4 packets, which were made for (and to my knowledge still use) octets/8-bit blocks.
My experience is that a limit of 256 means they probably are willing to allocate up to 24 bits to send the value over the network:
0x323536
People seem to love to pass around their numbers as JSON or similar.
That's a super old article as well.
They got rightfully roasted in the comments for not knowing even the most basic things about computing.
Because 257's a crowd
Wouldn't max value for 8 bit (unsigned) integer be 255? Like the number has 256 distinct values, but that includes 0.
If this is about a counter for users in the chat, sure. But if this is an array of users indexed by an 8-bit number, then it will fit 256 slots with the first slot being numbered 0.
this guy indexes
Fair, sounds reasonable
Right but having a group chat of size 0 isn’t very useful.
Not to be snarky, in programming there's rarely (in situations like this) a reason to keep count. Computers are exceptionally good at counting integers so they'd just count individual client id's (however they've implemented that system), not keeping toll on how many clients are in a group chat.
So one client, be it at position zero is a one client group. Add another client at position one and you have two clients and a two person group.
What would 0 represent then?
And programmers usually start counting at 0.
Your thinking indexing, 0 is still 0 when counting.
The number of distinct values are what matters.
You're thinking of the highest integer number, not the "number of numbers" - which is 256, from 0 to 255, and thus 256 possible users in a group chat.
Computers start counting at zero, (unless it's python) so the first person in the group would be ID 0, the second person would be ID 1
At a basic level python normally counts from zero (indices as an example)
I remember thinking something similar when I was a kid modding Starcraft. Max levels/ranks in researching was 256 and I always wondered why such a weirdly specific number.
What's app starting from 1 the scrubs
Depends on how they handle groups with 0 members, if they just get deleted once the last person leaves, you shouldn't run into issues
Since people are binary like the great Orange says, they have to use a power of 2?
Like memory in bits maybe, so 64 128 256 512 1024 2028
A lot of things arbitrarily limit what they can do to more "human friendly" numbers.
Since you start counting from zero, the byte limit should be 255 = 2^8 - 1.
There are only two hard problems in computer science:
I'm afraid you've fell victim to the problem 2.
I see what you did there.
The count is 0 through 255, which equals 256 total.
If you create a table and number the first row with "0", you'll need 256 rows to reach row index "255"
I guess it's you and 255 others?
I'm typing this on a 64 bit device. Why anyone would limit something to an 8 bit number in 2025 is really odd.
It’s for their servers. I guess it might have to do with cache optimization reasons. For performance reasons, they want to ensure they can fit as much as possible in the cache. One extra byte can throw the memory alignment off, which cause wasted space in cache.
Just my guess. There might be other reasons.
A single username will use up more memory than an 8-bit limitation to the number of users will save.
On a device with many gigabytes of RAM and probably terabytes of storage.
I guess when you have billions of users, and presumably tens or hundreds of billions of instances of a thing living in your sever every bit adds up? I don't even know where to even start doing the napkin math for something like that.
100 billion messages per day and over half of them in groups apparently. It's a lot, but 3 bytes per message is still not a lot of data. I'd guess they pack the metadata as tight as possible.
I get what you’re saying but I don’t like this line of thinking. In the tech industry there is far too much bloat that we just accept due to cheap memory and storage.
There's much better algorithmic and datatype optimizations to be made than to design your app around saving 3 bytes that most runtimes probably represent as a long long anyways
Whatsapp has 2 billion users.
The difference is 16 billion bits compared to 128 billion bits, or about 16 GB and that is just for the number.
When working with big sizes, memory optimization is key.
How about the processor optimization as your 8 bit number needs to be packed and unpacked every time you want to use it?
I you read the responses here, there's enough ambiguity about the choice of 256 users to maybe put a damper on the reflext to gatekeep computer science from a journalist.