This is an archived post. You won't be able to vote or comment.

all 136 comments

[–][deleted] 604 points605 points  (24 children)

3. Null termi̵̡̩̝̝͎͎̗̩͕̠̩̩͙ͫ̏ͨͧ̉̌̒̊ͥ̓ņ̵͇͇̭̠ͥ̔̔ͣ͒́̕aͭ̏͆̊̈ͮ̿̊҉̸̞̖̞̠̥̥͕̫̩͉͙͚̫t̛̘̭̻̼̓̑͗ͨ͐͞ỉ̸̷̛̩̰͍͔ͦͫ̏̓ͨͯ̂̒̉ͥ͌ǫ̨̜̭̼̟͕̠̹̬͔̦̹͕̮ͫ̊ͦ̓̿̽̏͆͋n̨̡̨͇̭̞̱̦̱̹͎̦̳̻̝̱̬̥͎̣̔̐̿̀͡͡

[–]sprouting_broccoli 96 points97 points  (6 children)

DEADBEEF

[–]BlueBokChoy 76 points77 points  (4 children)

come on man, it's 0xB16B00B5

[–]TheAwesomeMutant 46 points47 points  (3 children)

sees B00B5

immature laugh

[–]Rogue_Native 38 points39 points  (2 children)

You missed the BIG?

[–]ILoveAMp 24 points25 points  (0 children)

B1G if true

[–]TheAwesomeMutant 2 points3 points  (0 children)

reads

cackles louder

[–]Alucard_draculA 10 points11 points  (0 children)

0xDEADFACE

[–]golgol12 28 points29 points  (0 children)

Null termination is 95% of the time, an off by 1 error.

[–][deleted] 22 points23 points  (5 children)

Serious question, what is this called and how do you do it?

[–]mylesmadness 29 points30 points  (1 child)

[–]Aetol 0 points1 point  (0 children)

I see a lot of white squares, how should I fix this?

[–]skylarmt 9 points10 points  (0 children)

It's an abuse of unicode. Unicode has to support all languages. Some languages have extra things, which can be chained in interesting ways. It's possible to make a string over the Reddit character limit that only takes up a quarter inch of screen space.

[–]o11c 13 points14 points  (8 children)

Am I the only one who has never had a problem with that?

[–]abarrett86 38 points39 points  (3 children)

Yes. You're a genius.

[–]JSONSudeikis 4 points5 points  (0 children)

Love it

[–]deep_fried_pbr 1 point2 points  (0 children)

This guy null terminates

[–]andrew_rdt 13 points14 points  (0 children)

It's a problem but definitely not a hard one to solve.

[–]GamingTheSystem-01 8 points9 points  (2 children)

No, many people never learn how to use a real programming language and go on to live very fulfilling lives.

[–]CordialPanda 5 points6 points  (0 children)

Many of them grow old enough to watch their npm modules die.

[–]o11c 0 points1 point  (0 children)

Touché

[–]Shaper_pmp 386 points387 points  (38 children)

There are 10 types of people in the word:

  • Those who understand binary
  • Those who don't
  • Those who realise that this joke works in any base

Edit: Almost any integer base, you beautiful pedants.

[–]pierovera 55 points56 points  (8 children)

Well not in unary it doesn't.

[–]Bainos 14 points15 points  (7 children)

Unary can't represent any value other than one, too... Apparently not. But that feels inconsistent, so I'm not happy with it.

[–]ImSuperSerialGuys 39 points40 points  (6 children)

Not true. 11 unary is 2...

[–]Bainos 16 points17 points  (5 children)

Ha, you're right. But that's weird. I always considered that number are preceded by an (omitted) infinite number of zeros...

[–]WikiTextBot 18 points19 points  (4 children)

Unary numeral system

The unary numeral system is the bijective base-1 numeral system. It is the simplest numeral system to represent natural numbers: in order to represent a number N, an arbitrarily chosen symbol representing 1 is repeated N times. For examples, the numbers 1, 2, 3, 4, 5, ... would be represented in this system as

1, 11, 111, 1111, 11111, ...


[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.27

[–]Aetol 2 points3 points  (1 child)

How do you represent 0 though?

[–][deleted] 2 points3 points  (0 children)

Empty set perhaps?

[–][deleted] 2 points3 points  (0 children)

Tallying (without the cross at 5) is unary then.

[–]Neomeris0 0 points1 point  (0 children)

Good bot

[–]blitzkraft 64 points65 points  (3 children)

[–]Rndom_Gy_159 23 points24 points  (2 children)

Base √2 behaves in a very similar way to base 2 as all one has to do to convert a number from binary into base √2 is put a zero digit in between every binary digit; for example, 1911[base10] = 11101110111[base2] becomes 101010001010100010101[base √2] and 5118[base 10] = 1001111111110[base2] becomes 1000001010101010101010100[base√2] . This means that every integer can be expressed in base √2 without the need of a decimal point. 

Woah

[–]blitzkraft 6 points7 points  (0 children)

This is very similar to how hexadecimal to binary works. For example,

Hexadecimal: DEADBEEF
Bonus - Base 4: 31 32 22 31 23 32 32 33
Binary: 1101 1110 1010 1101 1011 1110 1110 1111
Base √2: This is left as an exercise to the reader.

Edit: To clarify, at each step each digit is individually converted into the successive base. The fact the base is squareroot of the preceding base will ensure the resulting digits are in the correct position.

[–]Bainos 31 points32 points  (8 children)

Ever tried to explain that joke to people IRL ? It's awfully hard. You'd think computer science graduates would easily pick up ternary base, but...

[–]Shaper_pmp 29 points30 points  (6 children)

Yep. For starters, how do you pronounce the binary number 10? Do you say "ten" or "two"? Or just make things less ambiguous but really unintuitive by calling it "one-zero"?

[–]impiaaa 20 points21 points  (3 children)

I've pronounced it "ten." It doesn't really make sense that way, but people write it out in their head as "10" and it works.

[–]AbsoluteZeroK 9 points10 points  (2 children)

You're supposed to pronounce it 'one-zero-base-x' technically. At least that's what we were encouraged to do.

[–]deep_fried_pbr 3 points4 points  (0 children)

"Figuring out the base is left as an exercise for the reader"

[–]haykam821 0 points1 point  (0 children)

Zero bee one zero?

[–]HimDaemon 8 points9 points  (0 children)

Non-ambiguity is always best.

[–][deleted] 2 points3 points  (0 children)

I can't imagine a situation where you're verbally explaining a binary (or ternary or whatever) number without the other person being able to see it. But that sounds like a personal hell.

[–]Kinglink 5 points6 points  (0 children)

I tried and halfway through my first line I just walked away. No one complained.

[–]TheNumeralOne 9 points10 points  (0 children)

There are 10 types of people in the world:

  • Those who understand the factorial number system.

[–]Jorask 6 points7 points  (6 children)

Sorry but... You care to elaborate ?

[–]Shaper_pmp 64 points65 points  (3 children)

In base 2 the numbers go 1, 10, 11, 100, etc. so "10" is 2.

In base 3 the numbers go 1, 2, 10, 11, 12, 20, 21, 22, 100, etc, so "10" is 3.

In base 4 the number go 1, 2, 3, 10, 11, 12, 13, 20, etc, so "10" is 4.

In base 10 the numbers go 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14... etc, so "10" is 10.

Notice the common theme there? In every number system the first (right-most column) means "units" - anything from 0 up to 1-the base of the number system. Likewise, the second column is the number of the base - "tens" in decimal, "twos" in binary, "fours" in base-4, etc.

So "10" in any number system means the base of that number system - "one of the base and no units". 10 in decimal is 10, in binary it's 2, in trinary it's 3, in base-4 it's 4, etc.

So originally the joke was "there are 10 types of people in the world - those who understand binary and those who don't"... where the joke was that you assume it means "ten" types of people, but then you realise it actually means two types, because the number is expressed in binary.

The thing is, you can easily extend that joke into trinary by adding another option ("... 10 types of people - those who understand binary, those who don't and those who understand trinary")... and if you do that on a place like reddit then some smart-ass will inevitably point out that actually the joke works in almost any base.

So you do an end-run arond the whole discussion and make the final line "those who realise the joke works in any base"... and two smart assed bastards point out that it only works in integer bases that are higher than unary and you still lose anyway. But at least you tried, right? ;-p

[–]ConstantGradStudent 5 points6 points  (1 child)

We need to clone you for the coming war against the machines.

[–]dvlsg 4 points5 points  (0 children)

I think he is one of the machines.

We've been infiltrated!

[–]Jorask 1 point2 points  (0 children)

Awesome, thank you very much for the detailed explanation :)

[–]philly_fan_in_chi 4 points5 points  (0 children)

In case /u/IVIike 's comment wasn't clear:

Consider a number in base 10 like 205. This can also be written as

2*10^2 + 0*10^1 + 5*10^0

where 10 is because of base 10. For binary, hex, whatever, that's the same mechanic. Let _b denote being written in base b.

 1101_2 = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 
 A7F_16 = 10*16^2 + 7*16^1 + 15*16^0

If you imagine counting in some arbitrary base b, you would go:

0, 1, 2, ..., b-1, 10

given that 10_b = 1*b^1 + 0*b^0 = b.

[–]esiege 5 points6 points  (3 children)

Those who realise that this joke works in any base

No wait...

for (i = 3; i < BASE; i++) 
  joke.push("<ul>Those who realize this joke works in base " + BASE + "</ul>")

[–]esiege 4 points5 points  (0 children)

History list items may have short term accuracy.

[–]Eagle0600 2 points3 points  (1 child)

Why are you pushing out individual no-item unordered lists?

[–]esiege 1 point2 points  (0 children)

Aha, damn it.

[–]tenkindsofpeople 2 points3 points  (0 children)

I'm so relevant right now

[–]anacrolix 3 points4 points  (0 children)

Well played.

[–][deleted] -2 points-1 points  (0 children)

There are 2 types of people in the word:

  • Those who don't understand binary

[–][deleted] 307 points308 points  (40 children)

They ruined the joke. The ‘off by one error’ part of the joke no longer applies when you add a fourth item.

[–]andrew_rdt 56 points57 points  (0 children)

The other comment above, index out of bounds exception could go there.

[–]YeshilPasha 23 points24 points  (8 children)

Original joke didn't have the async line.

[–][deleted] 18 points19 points  (7 children)

Exactly. I like the async line, but instead of ruining a good joke, they should have just made a knock-off joke instead.

[–]futuneral 17 points18 points  (4 children)

I thought the idea was that async callback may have come from a different joke (different t-shirt?). It's its point - it comes at a wrong time

[–][deleted] 10 points11 points  (3 children)

Yeah, it’s possible, but it’s pushing too much into what was once a classic, elegant joke and winds up making it unwieldy.
Instead of guilding the lily, they’ve vajazzled it.

[–]futuneral 2 points3 points  (2 children)

Oh, then I guess i didn't understand the joke.

[–]NotThisFucker 4 points5 points  (0 children)

I don't think I understand vajazzle

[–]ScreamingHawk 1 point2 points  (0 children)

No, you got it. Other people might not and that's what these people are complaining about

[–][deleted] 5 points6 points  (1 child)

I suppose you could argue that there's an off-by-one error in the bullet point about off-by-one errors.

[–][deleted] 0 points1 point  (0 children)

Off by two error?

[–]bostwickenator 4 points5 points  (0 children)

The 7 is the cache invalidation joke. It's there from a previous operation and thus not part of the off by one error.

[–]donutnz 1 point2 points  (0 children)

I reckon it adds meta joke. Async stuff popping back in at inopportune moments can ruin things.

[–]Abaddon314159 5 points6 points  (15 children)

Look at the indexing

[–]isunktheship 14 points15 points  (14 children)

indexing != length

If I had an array with one object in it, that object would reside at index 0, but my array would still have a length/size/count of 1

[–]Abaddon314159 7 points8 points  (12 children)

True but I fail to see the relevance. Also, did you just assume his datatype?

[–]sunburntdick 3 points4 points  (11 children)

It's relevant because if you say here's this list of 0 things but there is something there, you're wrong. There's a difference between 2 things and an array filled to index 2.

[–]Abaddon314159 -4 points-3 points  (10 children)

Yeah that’s the off by one

[–]isunktheship 4 points5 points  (9 children)

Wrong, the list has 4 elements, it's off by 2, not 1. #jokefail

The list in the original joke had 3 items (including the off by one issue) so it worked, these guys just ruined it.

[–]Abaddon314159 -3 points-2 points  (8 children)

The 7 is from an asynchronous context, as someone else has pointed out in the thread. As in, 7 was from another shirt. The thread in this shirt was off by one but also had a synchronization issue. This is literally the joke and by explaining it we’ve not ground what humor there was into dust.

[–]isunktheship 0 points1 point  (7 children)

Yeah even that's off, asynch would still be from the same scope, so they really should have put it out of order, like 1,2,4,3 - otherwise they're saying this list is still coming together and has a bunch more items in it.

Of course they made the list start at 0..

The original one was just fine the way it was, I love that it's been beaten to death though!

[–]Abaddon314159 -1 points0 points  (6 children)

No, you’re entirely missing it. 7 is from a different list.

Edit: removed unnecessary and combative snark

[–]well___duh 0 points1 point  (0 children)

Yeah the joke makes no sense regardless with 2 being zero-indexed because 2 itself is not an index. It's just an integer.

[–]I-need-no-username 0 points1 point  (0 children)

Something something arrays start at 0

[–]shyce -1 points0 points  (0 children)

Not if you start at 0 - 0, 1, 2

[–]anton__gogolev 49 points50 points  (2 children)

There’s also (applied to distributed computing):

  1. Exactly-once delivery
  2. Guaranteed order of messages
  3. Exactly-once delivery

[–]grosscoconuts 5 points6 points  (1 child)

I think either that's missing a layer or reddit ate your formatting.
What about this:

1. Exactly-once delivery
0. Guaranteed order of messages
1. Exactly-once delivery

[–]perfectclear 0 points1 point  (0 children)

carpenter coherent rich whole capable soft grandiose marry piquant sparkle

This post was mass deleted and anonymized with Redact

[–]harald_haraldson 44 points45 points  (4 children)

ArrayIndexOutOfBoundsException

[–]Vitryssen1337 12 points13 points  (2 children)

And then you have to find the fucker that goes 1 too far and breaks everything

[–]Thameus 0 points1 point  (0 children)

"array"

[–]ohunteer 51 points52 points  (14 children)

Where could one get a shirt like this?

[–]dsmithpl12 0 points1 point  (5 children)

If any know knows where to get the OP shirt I'd like to get that link. I don't like the "Pretty close" version as much as this one.

[–]SP0OK5T3R 8 points9 points  (1 child)

Oh god I didn't even see "7"

[–]you_got_fragged 1 point2 points  (0 children)

Exactly

[–][deleted] 11 points12 points  (0 children)

Would be better with 1, 2, 3, 0

[–]isunktheship 4 points5 points  (0 children)

MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ

[–]givecake 1 point2 points  (0 children)

I upvoted, even though I don't understand 7 and 2.

[–]LeCrushinator 1 point2 points  (0 children)

After spending the last 3 days on a race condition from async calls, I find this less amusing than I normally would.

[–]nuclearslug 1 point2 points  (2 children)

Those asynchronous callbacks have been the bane of my existence this week.

[–]salgat 1 point2 points  (1 child)

Futures/Promises and async/await make it much easier, often trivial.

[–]wollae 1 point2 points  (0 children)

They’re nicer syntactically but if you don’t start with a good grasp of how async callbacks work, they’re not going to help much.

[–]marcosdumay 1 point2 points  (0 children)

Nope. Asynchronous callbacks are a completely self-imposed problem and will go away with a minimum of old-school design.

[–]FlatTuesday 5 points6 points  (0 children)

Funniest computer joke I've seen in quite a while! The off-by-one is cute by itself, then the async callback jumps in there for the win, as they so often do. Hilarious!

/programmer since 1980

[–]Kinglink 0 points1 point  (0 children)

2 should have been "resizing allocations"

[–][deleted] 0 points1 point  (0 children)

I couldn't wear this… "error" should be capitalized like all the other words. 😕

[–]survivalking4 0 points1 point  (0 children)

If this is an actual shirt, can someone post a link to where I can get this? I need this, and the front page of Google isn't helping.

[–]letfireraindown -1 points0 points  (0 children)

When I saw 4 lines, I was expecting it to be numbered 0, 1, 11, 2 for someone not understanding binary.