There’s an old joke about two mathematicians in a cafe. They’re arguing about whether ordinary people understand basic mathematics. The first mathematician says yes, of course they do! And the second disagrees.
The second mathematician goes to the toilet, and the first calls over their blonde waitress. He says to her, "in a minute my friend is going to come back from the toilet, and I’m going to ask you a question. I want you to reply, “one third x cubed.'”
“One ther desque,” she repeats.
“One third x cubed,” the mathematician tries again.
“One thir dek scubed.”
“That’ll do,” he says, and she heads off. The second mathematician returns from the toilet and the first lays him a challenge. “I’ll prove it. I’ll call over that blonde waitress and ask her a simple integration question, and see if she can answer.” The second mathematician agrees, and they call her over.
“My friend and I have a question,” the first mathematician asks the waitress. “Do you know what is the integral of x squared?”
“One thir dek scubed,” she answers and the second mathematician is impressed and concedes the point.
And as she walks away, the waitress calls over her shoulder,
“Plus a constant.”
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?
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.
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.
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 😉
Just yesterday I ran into some chucklehead here on Lemmy that had convinced themselves that the average person would interpret “crypto” to mean SSL rather than cryptocurrency.
They are talking about computer things, that’s about how familiar I am with whatever they are talking about.
Yeah, it’s intentionally obscure. Basically, x86 assembly code is a way of telling a processor what to calculate, at a very low level.
So, it’s similar to programming languages, but those actually get translated into x86 assembly code, before it’s told to the processor. (“x86” is a certain processor architecture. Others exist, too, most prominently “ARM”.)But yeah, even with me knowing that much, I’d need to guess what
ret
andint3
might do.Everyone knows
jmp
andnop
, though, of course. 🙃Of course
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).
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.
NOP sled gang rise up
0x900x900x900x900x900x900x900x900x900x90
I mean I’m only missing int3
I didn’t even know they released int2
Now I want to know what int3 does.
https://en.wikipedia.org/wiki/INT_(x86_instruction) (scroll down to INT3)
https://stackoverflow.com/a/61946177
The TL;DR is that it’s used by debuggers to set a breakpoint in code.
For example, if you’re familiar with gdb, one of the simplest ways to make code stop executing at a particular point in the code is to add a breakpoint there.
Gdb replaces the instruction at the breakpoint with 0xCC, which happens to be the opcode for INT 3 — generate interrupt 3. When the CPU encounters the instruction, it generates interrupt 3, following which the kernel’s interrupt handler sends a signal (SIGTRAP) to the debugger. Thus, the debugger will know it’s meant to start a debugging loop there.
Hey thank you!
Not what I thought it was for sure 😃
How does it work if an instruction gets replaced by the INT3 though?
Excellent question!
Before replacing the instruction with INT 3, the debugger keeps a note of what instruction was at that point in the code. When the CPU encounters INT 3, it hands control to the debugger.
When the debugging operations are done, the debugger replaces the INT 3 with the original instruction and makes the instruction pointer go back one step, thereby ensuring that the original instruction is executed.
Whoo that seems complicated, I mean you akready compile a debug version.
Thanks for the explanation!
The debug version you compile doesn’t affect the code; it just stores more information about symbols. The whole shtick about the debugger replacing instructions with INT3 still happens.
You can validate that the code isn’t affected yourself by running objdump on two binaries, one compiled with debug symbols and one without. Otherwise if you’re lazy (like me 😄):
https://stackoverflow.com/a/8676610
And for completeness: https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Debugging-Options.html
It’s insane how close that handwriting is to randall’s, did he make multiple versions of this comic or was this written by a professional forger?
For context, here’s the original comic: