The people in the picture are so used to working with assembly language, that even though they know the average person doesn’t know much about assembly, they assume the average person knows a little, which is already way more than the average person actually knows.
I speak fluent x86, I’ve been writing xor eax, eax before rax was a thing and you had to wonder whether you shouldn’t be using xor rax, rax (you shouldn’t), I figured out how to write linux binaries in pure assembly before arch was a thing, just don’t throw sse or something arcane like aaa at me. But damned if I know a single opcode.
Alt text: “How could anyone consider themselves a well-rounded adult without a basic understanding of silicate geochemistry? Silicates are everywhere! It’s hard to throw a rock without throwing one!”
It still confuses what basic computer skills the average person lacks. Like, how are you even supposed to troubleshoot your computer, if you don’t know the basics about your computer?
Everyone has a limited time on this earth. Some of us don’t mind or actively enjoy spending that time learning about the technology we use. Others, not so much. I think this comic is really spot on because it’s hard to understand as a tech literate person just how little other people may know. “What browser are you using?” “What’s a browser?”
The foundational knowledge is not that tough, but when you’re just interested in getting the damn thing to work so you can get on with your life, it’s easy to get frustrated by having to take a crash course on what the hell a BIOS is before you can try to fix it. And when you learn all that just for it to still be broken, patience quickly runs out.
As long as people have the general understanding that power cycling will solve a good 75% of issues, I’m happy. I hope people give me the same grace when I pay a someone to fix my car or replace my phone screen (I love building computers, but god I hate working on phones).
For the phone bit, I started off with really old smartphones like a Galaxy S1, but basically any old old phones are really built like mini laptops and are usually pretty modular as they weren’t often water resistant or actively anti-repair
However I fully get your point and fall into the same boat with cars
I mean, cars can be demystified the same way computers can: By building and maintaining it yourself. Everyone is afraid to build their first computer, because it seems way too complicated and delicate. Then you actually build your first one, and go “oh hey this actually isn’t so bad after all.”
Yes, cars (especially modern cars) have a lot more difficult-to-build parts. But modern cars are also a lot like computers in the sense that you don’t need to know every single component on an GPU to be able to install one. You don’t need to be able to build a car part from scratch. The same way you can slot a GPU into a motherboard, you can just buy the entire car part preassembled and bolt it into place. The important part is learning what the different components do, so you can troubleshoot them.
Ubi est Quintus? Quintus in Hortus est. Quinte, Quinte, Caecilia clamat. - where is Quintus? Quintus is in the garden. Quintus Quintus shouts Caecilia.
Those were the First three sentences from my first Latin Book. I still know them.
Bookmarking your comment so I can come back to it in a couple hours, if I hopefully remember to.
But yes, almost. I don’t think the interrupt is necessary and the return isn’t under certain architectures. I have a doc on my computer somewhere where I was investigating what the absolute minimum was to make a turning complete machine and, to my recollection, there was only 4-6 instructions that were absolutely necessary. The ones I remember off the top of my head are NAND, MOV, JUMPIF, and then I believe I included NOP in accordance with some principle. RET and INT were convenience features in this design.
The key here I think is the NAND. I know you can do practically anything with only NAND gates. But without it, and with just control structures, I don’t think there’s a way to perform computation unless there is some theoretical voodoo withcraft possible, something like nop-padded cellular automata given the infinite memory. But I don’t have any qualification to talk about this, I’m just some random dude who flunked out of the university but finished all Zachtronics games.
You’re remembering correctly, every other logic gate can be built from NAND gates, which is the foundation of this sort of minimal-instruction-set exercise. Beyond that, you need to be able to move data and change your program counter (jump, often conditionally). Then, if you want parity with modern instruction sets beyond just being turning complete, you need return and interrupt for control flow.
Back in the day I dabbled in 6510 code, and up until today hadn’t even bothered to look at a chart of opcodes for any of its contemporaries. Today I learned that Z80 uses $00 for NOP.
Loth as I am to admit it, that actually makes sense. Maybe more sense than 65xx which acts more like a divide-by-zero has happened.
The rest of the opcode table was full of alien looking mnemonics though, and no undocumented single byte opcodes? Freaky, man.
But the point is that not even Z80 used $EA. If the someone was real they probably meant every 65xx processor.
And I was making a joke about the D&D spider goddess.
But the word is “loath,” which has an accepted alternate spelling of “loth”. “Lolth” is the Dungeons and Dragons spider goddess, commonly worshiped by Drow.
Explaining something to someone? Zoom out. Back up. What if that person were an alien, how much more context would you need to explain?
The curse of knowledge is a cognitive bias that occurs when an individual, who is communicating with others, assumes that others have information that is only available to themselves, assuming they all share a background and understanding. This bias is also called by some authors the curse of expertise.
Me talking to my dad (who last held the position of professional programmer 30 years ago) about the programming problem I’m working on and vastly overestimating how much he knows about modern software development parlance
I know for men who are equal opportunity overexplainers it can still be seen as “mansplaining” when overexplaining to women.
But in general, if your tone of voice is right and it’s still happening, perhaps communicating your intention and a safeguard would work, at least sometimes?
May I try to explain this? If I start too basic, and overexplain so it feels condescending, please stop me so I can dig into it more technically.
I’m always worried about inadvertently doing this, so I’ve been trying to make a conscious effort to ask people if they need more context rather than assuming they do or don’t. It’s actually a good approach I think. Although it does depend on whether the person you’re talking to is likely to just say “oh yeah, I know what that is” when they really don’t
I’ve had to train literally hundreds of people over the various jobs I’ve had and it causes me to over explain in almost every conversation.
I got two tricks to figure out how much someone knows about a topic and encourage them to ask questions rather than lie just to avoid being a little uncomfortable.
First, I look for them to use vocabulary that I haven’t already mentioned or if they seem to understand something just by using a couple words.
Second, I ask them to explain something early in the conversation to make it easier to ask if they don’t understand something later. It’s usually really simple, but it really does work to lower communication barriers.
I like to think it makes us feel more like equals trading expertise, rather than like I’m some authority talking down to them.
That’s the ticket, IMO. I start off assuming they know, then pause to ask “are you familiar with x concept?”
If they say yes and they really mean no, there’s really not a lot I can do. But it seems to make people feel at ease when talking to me - I don’t get called out for over explaining or infantalizing people this way.
Seems like you have your best shot if you make it seem like a lack of knowledge on a given topic is really safe. “Is this something you’ve nerded out on before, or not yet? Oh you have - cool, it’s pretty esoteric. Do you know enough to summarize it in a sentence or a few? If not I like to try to give my own high level before diving in.”
Something open ended in there gives you a chance to validate whether the ‘I know what that is’ was ego or truth.
If there’s any chance they’ve heard about a concept, I’ll ask if they’ve heard of it and take them at their word (without comment either way).
And if they’re kinda nodding impatiently, I’ll wrap up the explanation and move on to the deeper level
At first, people will sometimes be defensive or lie about knowing a topic, but after you establish there’s no judgement either way with you I’ve found people become less hesitant about admitting ignorance and will even want to hear your explanation of something to check their knowledge
I also do the flip side - I pride myself on admitting when I don’t know something, so that might play in too
One of the things I look for in employees is the ability to distill complex topics into the important elements and explain it to someone unfamiliar. Some people are just naturally good at it, and it’s a really important skill for moving up a leadership chain.
My friend really needs to learn about this. He works for Intel and does some really involved stuff, I on the other hand am a moronic jackass factory worker.
No friend, I haven’t the slightest idea what you’re trying to tell me you did if you keep using technical terms.
Problem is, even if they are capable of explaining it, it’s basically our job to learn things 8 hours a day. Trying to catch someone up on that, who doesn’t have that same job, that’s nearly impossible. Well, and you still want to rant/tell about your day for social interaction purposes.
Like, my mum would also sometimes ask what my (programmer) workday was like and I’d start telling that we had to deploy onto a really old Linux system. Wait hang on, Linux is an operating system. And an operating system is the software that makes computers go. Do you know what “software” is? Hmm, it’s like…
…And yeah, basically one computer science lecture later, I still haven’t told anything about my workday.
Sometimes, I can try to leave out such words, like “we had to roll out our software onto a really old computer”, but then I can practically only say “that was really annoying”. To actually explain how I slayed the beast, I do need to explain the scene.
basically one computer science lecture later, I still haven’t told anything about my workday.
ahaha
I can try to leave out such words, like “we had to roll out our software onto a really old computer”, but then I can practically only say “that was really annoying”.
Tough. Try my best with analogies, tailored if possible, but still tough.
“We had to try to translate our app into a language this ancient computer could understand. It was as easy as suddenly switching to Shakespearean English halfway through this conversation. Or like if you drove your car to a mechanic who’d been cryogenically frozen for the last hundred years. He doth protest much, methinks.
Overall, it was like putting together a thousand-piece puzzle, except the box came with a million pieces and most of them were useless!”
Good thing your mom was surely impressed with you all the same 😉
Since there’s no way to fix the incorrect assumptions (a t-shirt proclaiming “I explain granularly to men too!!”?), best bet is probably to get ahead of the assumption with a disclaimer & offer to be receptive to feedback.
Someone could still be upset I guess but can’t please everyone!
“oh you laughed at that joke despite the fact that the bridge followed the falling action instead of preceding the punch word? Amateurs shouldn’t be allowed to watch comedy.”
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programmerhumor@lemmy.ml
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
Posts must be relevant to programming, programmers, or computer science.
No NSFW content.
Jokes must be in good taste. No hate speech, bigotry, etc.
I’m missing the joke… would anyone be so kind to help me understand?
The people in the picture are so used to working with assembly language, that even though they know the average person doesn’t know much about assembly, they assume the average person knows a little, which is already way more than the average person actually knows.
I speak fluent x86, I’ve been writing
xor eax, eax
beforerax
was a thing and you had to wonder whether you shouldn’t be usingxor rax, rax
(you shouldn’t), I figured out how to write linux binaries in pure assembly before arch was a thing, just don’t throw sse or something arcane likeaaa
at me. But damned if I know a single opcode.Reverse engineers are a whole different kind of breed. And apparently they hate rust.
https://www.explainxkcd.com/wiki/index.php/2501:_Average_Familiarity
That’s a great website that I didn’t know existed, thanks for sharing!
NOPe
As a bytecode tinkerer, I’d say considering NOP to be global knowledge is a slippery slope.
Might want a sled and a ROPe to have a smooth descent
Careful you aren’t thrown off by a retpoline
Alt text: “How could anyone consider themselves a well-rounded adult without a basic understanding of silicate geochemistry? Silicates are everywhere! It’s hard to throw a rock without throwing one!”
If that’s all that’s needed to consider yourself having a basic understanding, then I already had it by the time I passed HS.
Unfortunately, the Alt text doesn’t tell us the bar, so we can’t know how round we are.
It still confuses what basic computer skills the average person lacks. Like, how are you even supposed to troubleshoot your computer, if you don’t know the basics about your computer?
you don’t you just call the most technical person you know and ask them to do it
You got a point there. I also regularly forget that you don’t have to know shit about PCs do use windows/Mac.
Everyone has a limited time on this earth. Some of us don’t mind or actively enjoy spending that time learning about the technology we use. Others, not so much. I think this comic is really spot on because it’s hard to understand as a tech literate person just how little other people may know. “What browser are you using?” “What’s a browser?”
The foundational knowledge is not that tough, but when you’re just interested in getting the damn thing to work so you can get on with your life, it’s easy to get frustrated by having to take a crash course on what the hell a BIOS is before you can try to fix it. And when you learn all that just for it to still be broken, patience quickly runs out.
As long as people have the general understanding that power cycling will solve a good 75% of issues, I’m happy. I hope people give me the same grace when I pay a someone to fix my car or replace my phone screen (I love building computers, but god I hate working on phones).
For the phone bit, I started off with really old smartphones like a Galaxy S1, but basically any old old phones are really built like mini laptops and are usually pretty modular as they weren’t often water resistant or actively anti-repair
However I fully get your point and fall into the same boat with cars
Dude I’m the same with my car.
I mean, cars can be demystified the same way computers can: By building and maintaining it yourself. Everyone is afraid to build their first computer, because it seems way too complicated and delicate. Then you actually build your first one, and go “oh hey this actually isn’t so bad after all.”
Yes, cars (especially modern cars) have a lot more difficult-to-build parts. But modern cars are also a lot like computers in the sense that you don’t need to know every single component on an GPU to be able to install one. You don’t need to be able to build a car part from scratch. The same way you can slot a GPU into a motherboard, you can just buy the entire car part preassembled and bolt it into place. The important part is learning what the different components do, so you can troubleshoot them.
Problem is I have zero interest in cars. If I could I’d live car free.
I recently took a class on ARM assembly, and yet I don’t even know half of these x86 instructions.
‘I recently took a french class, and yet I don’t even know half of these german words’
I had 5 years of Latin classes and I still know lipke 19 Latin words.
Lupus vorat agnum = my tailor is rich
there’s your rosetta stoned
Ubi est Quintus? Quintus in Hortus est. Quinte, Quinte, Caecilia clamat. - where is Quintus? Quintus is in the garden. Quintus Quintus shouts Caecilia.
Those were the First three sentences from my first Latin Book. I still know them.
All the code I know is stackoverflow search results.
Things said by Github copilot.
I’m pretty sure I’ve had this exact conversation. Took me a minute to understand what the point was.
NOP
0x90
there is an additional layer to this joke for those who understand turing completeness. And it elevates it to a whole other level of snark.
Are you implying that an assembly language consisting of just ret, int3 and jmp (and nop, of course) is turing-complete? …are you sure about that?
Bookmarking your comment so I can come back to it in a couple hours, if I hopefully remember to.
But yes, almost. I don’t think the interrupt is necessary and the return isn’t under certain architectures. I have a doc on my computer somewhere where I was investigating what the absolute minimum was to make a turning complete machine and, to my recollection, there was only 4-6 instructions that were absolutely necessary. The ones I remember off the top of my head are NAND, MOV, JUMPIF, and then I believe I included NOP in accordance with some principle. RET and INT were convenience features in this design.
The key here I think is the NAND. I know you can do practically anything with only NAND gates. But without it, and with just control structures, I don’t think there’s a way to perform computation unless there is some theoretical voodoo withcraft possible, something like nop-padded cellular automata given the infinite memory. But I don’t have any qualification to talk about this, I’m just some random dude who flunked out of the university but finished all Zachtronics games.
You’re remembering correctly, every other logic gate can be built from NAND gates, which is the foundation of this sort of minimal-instruction-set exercise. Beyond that, you need to be able to move data and change your program counter (jump, often conditionally). Then, if you want parity with modern instruction sets beyond just being turning complete, you need return and interrupt for control flow.
Fun fact: apparently on x86 just MOV all by itself is Turing-complete, without even using it to produce self-modifying code (paper, C compiler).
Alright this is my cue that I don’t belong here
lol why?
I mean who hasnt watched “Assembly Language in 100 seconds” by Fireship
Just looked this up and subscribed to the channel.
NOP is $EA, of course, and… um…
…sorry, I’m just a Commodore 64 scrub, I don’t know nothing about this high and mighty Intel 8086 nonsense.
[looking up]
…it’s 0x90 on IA-32? WHAT? Someone told me every processor used 0xEA because that was commonly agreed and readily apparent. …guess I was wrong
Not sure if this is a riff on the joke or not.
Back in the day I dabbled in 6510 code, and up until today hadn’t even bothered to look at a chart of opcodes for any of its contemporaries. Today I learned that Z80 uses $00 for NOP.
Loth as I am to admit it, that actually makes sense. Maybe more sense than 65xx which acts more like a divide-by-zero has happened.
The rest of the opcode table was full of alien looking mnemonics though, and no undocumented single byte opcodes? Freaky, man.
But the point is that not even Z80 used $EA. If the someone was real they probably meant every 65xx processor.
*Lolth
What? This is system programming, not web development.
I was making a joke about their spelling error.
And I was making a joke about the D&D spider goddess.
But the word is “loath,” which has an accepted alternate spelling of “loth”. “Lolth” is the Dungeons and Dragons spider goddess, commonly worshiped by Drow.
Oh Christ, I can’t believe I missed that.
Operating on low sleep and responding before coffee.
I shall flog myself now
My daughter told me the other day, “I bet I could figure out a Commodore 64 if I had one.”
Good luck figuring out LOAD “*”,8,1 by yourself, kid.
deleted by creator
With the ubiquity of C64 emulators, that’s easy enough to demonstrate by experiment
deleted by creator
She meant she could figure it out just playing around with it, not reading a manual or asking around. I told her she’d have to read a manual.
Erm I might be showing my inexperience here.
Is there no equivalent to
man LOAD
in the commodore world? Or even justhelp
?That thing had 16K of ROM. Every byte was sacred. Only manual was on paper.
Not that I remember.
I can’t tell if you’re joking and deliberately invoking the original comic above
I thought NOP was 0x90. Edit: oh I just read the rest of the comment.
One of the most useful concepts ever:
the Curse of Knowledge.
Explaining something to someone? Zoom out. Back up. What if that person were an alien, how much more context would you need to explain?
Me talking to my dad (who last held the position of professional programmer 30 years ago) about the programming problem I’m working on and vastly overestimating how much he knows about modern software development parlance
what’s it called when you try to be aware of this and inadvertently say stuff that comes off as condescending, umm, asking for a friend
ooooof
I know for men who are equal opportunity overexplainers it can still be seen as “mansplaining” when overexplaining to women.
But in general, if your tone of voice is right and it’s still happening, perhaps communicating your intention and a safeguard would work, at least sometimes?
I’m always worried about inadvertently doing this, so I’ve been trying to make a conscious effort to ask people if they need more context rather than assuming they do or don’t. It’s actually a good approach I think. Although it does depend on whether the person you’re talking to is likely to just say “oh yeah, I know what that is” when they really don’t
I’ve had to train literally hundreds of people over the various jobs I’ve had and it causes me to over explain in almost every conversation.
I got two tricks to figure out how much someone knows about a topic and encourage them to ask questions rather than lie just to avoid being a little uncomfortable.
First, I look for them to use vocabulary that I haven’t already mentioned or if they seem to understand something just by using a couple words.
Second, I ask them to explain something early in the conversation to make it easier to ask if they don’t understand something later. It’s usually really simple, but it really does work to lower communication barriers.
I like to think it makes us feel more like equals trading expertise, rather than like I’m some authority talking down to them.
I hope this helps anyone
That’s the ticket, IMO. I start off assuming they know, then pause to ask “are you familiar with x concept?”
If they say yes and they really mean no, there’s really not a lot I can do. But it seems to make people feel at ease when talking to me - I don’t get called out for over explaining or infantalizing people this way.
Yeah that’s good stuff!
Seems like you have your best shot if you make it seem like a lack of knowledge on a given topic is really safe. “Is this something you’ve nerded out on before, or not yet? Oh you have - cool, it’s pretty esoteric. Do you know enough to summarize it in a sentence or a few? If not I like to try to give my own high level before diving in.”
Something open ended in there gives you a chance to validate whether the ‘I know what that is’ was ego or truth.
If there’s any chance they’ve heard about a concept, I’ll ask if they’ve heard of it and take them at their word (without comment either way).
And if they’re kinda nodding impatiently, I’ll wrap up the explanation and move on to the deeper level
At first, people will sometimes be defensive or lie about knowing a topic, but after you establish there’s no judgement either way with you I’ve found people become less hesitant about admitting ignorance and will even want to hear your explanation of something to check their knowledge
I also do the flip side - I pride myself on admitting when I don’t know something, so that might play in too
One of the things I look for in employees is the ability to distill complex topics into the important elements and explain it to someone unfamiliar. Some people are just naturally good at it, and it’s a really important skill for moving up a leadership chain.
My friend really needs to learn about this. He works for Intel and does some really involved stuff, I on the other hand am a moronic jackass factory worker.
No friend, I haven’t the slightest idea what you’re trying to tell me you did if you keep using technical terms.
If you said something like “if I were a marketing intern…” or “if I were a college freshman majoring in English, how would you explain it?”
…would he not know how to clearly communicate still? :)
Maybe get him with the “is this a curse of knowledge situation?” (along with a link to Wikipedia) heh
Problem is, even if they are capable of explaining it, it’s basically our job to learn things 8 hours a day. Trying to catch someone up on that, who doesn’t have that same job, that’s nearly impossible. Well, and you still want to rant/tell about your day for social interaction purposes.
Like, my mum would also sometimes ask what my (programmer) workday was like and I’d start telling that we had to deploy onto a really old Linux system. Wait hang on, Linux is an operating system. And an operating system is the software that makes computers go. Do you know what “software” is? Hmm, it’s like…
…And yeah, basically one computer science lecture later, I still haven’t told anything about my workday.
Sometimes, I can try to leave out such words, like “we had to roll out our software onto a really old computer”, but then I can practically only say “that was really annoying”. To actually explain how I slayed the beast, I do need to explain the scene.
deleted by creator
ahaha
Tough. Try my best with analogies, tailored if possible, but still tough.
“We had to try to translate our app into a language this ancient computer could understand. It was as easy as suddenly switching to Shakespearean English halfway through this conversation. Or like if you drove your car to a mechanic who’d been cryogenically frozen for the last hundred years. He doth protest much, methinks.
Overall, it was like putting together a thousand-piece puzzle, except the box came with a million pieces and most of them were useless!”
Good thing your mom was surely impressed with you all the same 😉
But then you’re Mansplaining.
Even if we have the Patriarchy app4oved mind scanning kits out instructions are to not use them so…I’d hate to accidentally not Mansplain something.
Frustrating!!
Since there’s no way to fix the incorrect assumptions (a t-shirt proclaiming “I explain granularly to men too!!”?), best bet is probably to get ahead of the assumption with a disclaimer & offer to be receptive to feedback.
Someone could still be upset I guess but can’t please everyone!
Discussed a bit below.
“oh you laughed at that joke despite the fact that the bridge followed the falling action instead of preceding the punch word? Amateurs shouldn’t be allowed to watch comedy.”
I mean I’m only missing int3
I didn’t even know they released int2
You guys have int?
I’ve got intelligible but that’s about it
It’s one of my six dump stats.
Bro missing the wis gains
I rolled a 14, so I have a +2 modifier.
I think it is 0xCC, or in long form 0xCD03
I feel attacked.
I feel like I skipped right over this comment.
JMPed
I’m more in a JNZ mood.
of course nods along