7 ms·
Magic isn't real
- wruza 2y agoOne interesting thing of (accidentally) starting with assembly is that you mostly can’t see magic at all, but instead you see learning magicians explaining computers in all sorts of funny ways. My first “pc” was a clone of zx spectrum and all I had was a built-in BASIC and then some assembler on a cassette. Both went with “books” on how to use them, together with all of the unlimited time you have when you’re a kid. This transferred to my first PC and eventually I learned how FAT, DOS, BIOS work, how to make a TSR and fool around B8000/A0000, first steps with 386+. It also helped that my granddad was an impulse electronics engineer and taught me how actual gates work and how computers count, sum and select numbers. He also had access to multiple books on hardware. I knew it all down to the silicon. Other people had all sorts of magical ideas on how computers work. Special “hidden system areas”, “graphics card does X”, “computers multiply by addition”, etc etc. It’s a human thing that if we don’t understand something, our mind tries to yadda yadda it. And the more you yadda yadda, the less chances it leaves that you’ll actually learn it. I tend to fight with these half-baked autogenerated explanations and try to dig down to how it really works. For no particular reason, that’s just what I like to do. It leaves a mark on how you work though.
- Nevermark 2y ago> yadda yadda Like LLMs, we confabulate. We fill in knowledge holes, with imagined knowledge we don't really have.
- jeffparsons 2y ago> Like LLMs, we confabulate. Thank you for describing LLM behaviour that way. It's a much better description than the more popular but less apt "hallucination".
- Nevermark 2y agoI agree, hallucination is a completely different phenomena from inadvertently filling in knowledge gaps. Hallucinating to me, is not a one off effect, but a dynamic phenomena. When our sensory processing/interpreting continues iterating, but wanders away from, or separates from, actual sensory input. Dreams being a functional example. Drugs that cause our sensory systems to be disrupted or overwhelmed by unusual internal signals, being another example.
- Retric 2y agoLLM’s operate in discrete steps. So that “interpretation continues iterating” is a very good description of what’s actually happening. There’s a little uncertainty in the process, so sometimes it will pick the wrong symbol at the wrong time and the entire process just spirals into nonsense. But it’s semi lucid nonsense like a dream or hallucination not line noise. The confidently stating the wrong thing bit is arguably a different though related problem. There’s making up a citations that don’t exist and there’s inserting song lyrics where a citation should be.
- Nevermark 2y agoConfabulation: Inadvertent pseudo-memory fill in, within a generally reasonable stable context representation. Hallucination: Context representation becomes unstable, resulting in open ended drifting and morphing into incoherence. The scale of error and recursion of error in the latter make the effects quite different. You could be right, perhaps sometimes the initial causes might not be so different. But I would be surprised if that was true, given there doesn't seem to be much of a middle ground between the wide differences in scale and downstream effect.
- Retric 2y agoYou could be right that it’s a fundamental difference in what’s going on, but each word is a new iteration/token and most errors are more than a single token. I’m assuming it’s like a converging vs diverging series in how well the LLM recovers from problems. Where the boundary between the two states is arbitrarily small, but OpenAI etc has fine tuned the system so you generally see the converging / confabulation types of errors even if the difference is just a slight change in the scale of error.
- marcosdumay 2y agoWhat the GP is explaining is actually the other way around. It's our brain leaving holes even though they are just explained on the text. And yeah ML models do that too.
- wruza 2y agoI was talking about the tendency to purely imagine things in low knowledge situation, but (iiuc) agree that this is a thing with our minds as well. Mine can skip a whole page of text if an earlier paragraph made it actively think. After that it’s sure we read it all. I have to detect that and rewind properly.
- jl6 2y ago> Special “hidden system areas” I guess "hidden" can be a matter of perspective, from filenames beginning with a period, right through to things like the Intel Management Engine.
- vonunov 2y agoThis (roughly) came up in a chat just yesterday. Someone posted a screenshot of a web browser using a font face with no glyphs or something, or I assume this is what causes this display of the codepoints(1). Reminded me of the kind of amateur magic lessons I see regularly: So, people on the internet who feel like they are some kind of computer wizards will try to school each other online about how computers work. They will go on, like, Quora and ask weird questions like "what is one programming language every real hacker should know?" And someone will come along and write an incredibly definitive-sounding and confident essay about how a real hacker has to know the language of binary, because everything that's happening in a computer is all just binary, 1s and 0s. They heavily imply (at the least) that a real hacker regularly peruses binary values. Not like how you might use a hex editor. Rather, as if wannabe hackers read source, but real hackers read the raw binary. Some kind of M-x Butterfly shit. Assembly language is rarely mentioned. I don't blame them for it, it's just kind of funny. I can kind of imagine that the way low-level things are glossed over for the sake of explaining high-level things has reasonably left some people with the impression that binary is somehow expressive and that people who truly know computers are fluent in it. And I probably had stranger conceptions than that on my own journey. Anyway, this screenshot is what they must imagine a turbohacker's computer looks like all the time 1. https://i.vgy.me/qNU6J5.jpg https://i.vgy.me/qNU6J5.jpg
- wruza 2y agoAh, this is the reason I avoid internet squares and chats filled with those who started but didn’t go deep. I just cringe to almost fainting everytime I read something there and my ears burn. Programmer’s humor sections are especially triggering. Surprisingly, HN is not that programmy at all (there’s lots of tech but no code nor “hacker secrets”), so it’s relatively nice to be in.
- vonunov 2y agoLol, now for some reason I'm wondering what you think of the old "how to shoot yourself in the foot" / "how to determine which programming language you're using" jokes. I guess one actually realistic version of the fully-jacked-in-hacker fantasy is network guys who are in so deep that they can read bin/hex numbers fluently without consciously "converting", etc. This I know of, and from there, I can conceive of someone who has become familiar with the binary representations of certain instructions? Or something? But I guess it would have to be a very specific (and probably read-only) situation. And, unless I'm missing something, it wouldn't amount to a deeper or more enlightened understanding of anything meaningful to software concerns
- shermantanktop 2y agoSo many frameworks and dev-oriented features are sold with the claim that domain X is super complicated and full of esoteric useless trivia, so instead someone has put a clean facade on that which simplifies everything and protects the hapless dev from having to learn. Which is nice, it’s a tidy abstraction, we all have other things to do, now we go fast. Except…the dev has to learn the new API, which we can call domain Y, and which can become quite complicated and hard to map conceptually to domain X (e.g. React events vs browser rendering, or Java GC vs real memory). And when the cool facade doesn’t quite work for some exotic use case, now what? The dev gets to learn the original domain X anyway, plus how X and Y interact. In the worst case they have rewrite all their Y-using code. Great abstractions are good magic; bad abstractions are evil magic. And yet good vs evil is often hard to tell apart when you pick up the problem.
- dartos 2y agoThe only areas I’ve ever seen that were truly super complicated were when synchronization is involved. It’s so hard to wrap my head around how a CPU reorders instructions and I need to think very slowly and very carefully whenever I work with synchronization. Same with distributed systems. I implemented a toy version of raft forever ago, but just wrapping my head around it took a month, and I still think I don’t really grasp it. Haven’t even looked into paxos yet.
- xxs 2y agoSync is easy. Concurrency is hard. Partly b/c as humans we can't multitask. CPU reordering instructions (and speculative execution) should be not be hard to understand. It tries to do as much work as it could before it has to stall due to lack of data
- dartos 2y agoSynchronization is like a sub-problem of working with concurrency. In this context they’re the same afaics CPU reordering isn’t hard to understand, itself, but building systems that depend on it is (like building a time sharing OS… very difficult) because it’s difficult to reason about. The implications of it are hard to understand because, as you say, we’re not naturally apt at multitasking
- mst 2y agoCorollary: Sufficiently well encapsulated magic is indistinguishable from technology.
- zavec 2y agoNow I kind of want to read a story where it turns out the technology we use in our modern lives is actually very carefully hidden magic. Sort of like the opposite of (rot13 for book spoilers) gur fgrrefjbzna frevrf.
- anymouse123456 2y agoTFW the real wizards are the ones working in the strata just below the one I understand... After nearly 30 years of persistent excavation, I'm finally at bedrock with registers, some assembly and embedded C. Lifting my head up to find the mess we've created for graphical application development is admittedly disheartening, but also thrilling as there are ways to make it better.
- noelwelsh 2y agoThere is at least one more layer, which lies behind the abstraction boundary the ISA presents. E.g. x86-64 specifies only 16 general purpose registers, but the Zen 4 has 224. Even as far back as Pentium II the CPU had more registers than the ISA.
- josh-sematic 2y agoYou’re not even close to hitting rock bottom on explanations of the layers below until you find yourself comparing proposed theories of quantum gravity :-)
- kevindamm 2y agoIt is around that point that you may be convinced that rocks are capable of conscious thought and the strange loop begins again at the top.
- hnfong 2y agoI am a conscious thinking rock. (kinda)
- Dylan16807 2y agoI don't think ignoring negligible effects means you're a significant distance from the bottom. You can semi-skim through quantum effects and still have enough detail to stretch your scale to the bottom.
- niemandhier 2y agoGoing the other direction, towards higher levels of abstraction tends to strip away the magic too! I recently write some robotics code using ROS, taking a step back I looked a the result and thought: Actually that is not much different conceptually from running K8s deployments coupled by Kafka.
- tehmillhouse 2y agoWhen understanding a new "magic", there's this beautiful moment when you grok it, and the abstraction poofs away. It's when you take apart a mechanical clock and keep looking for the time-keeping part, until you figure out that there isn't a time-keeping part in there, it's just gears and a spring. It's when you learn about integrated circuits and full-adders, and keep trying to understand how a bunch of transistors can do Mathematics, until you figure out that there isn't a mathematics-doing part in there, it's just circuits and wires, arranged in a way that makes the voltages come out right. It's when your understanding of the top-down structure snaps together with the bottom-up mechanics of the building blocks. There's no space left for the ghost in the machine to haunt, and you go "Oh. huh". I live for that moment.
- Lerc 2y agoThat's the difference between technology magic and illusionist magic, When you see how the trick is done with illusions it's always a bit of a letdown because the answer is usually prosaic, the 'magic' vanishes and it becomes a trick. When you understand how a piece of technology works you get that beautiful moment.
- tialaramex 2y agoI've never got that. I feel the same way in either case, if your trick was easy everybody would do it. Sleight of hand tricks for example, if you're good they're completely seamless, I could never hope to reproduce and yet I know exactly how it's done. Take that Penn & Teller trick where the live audience is just lying - that's a bit lazy, we're not supposed to have some great admiration for this trick they're just showing you it's an option to just have the live audience lie to the recorded audience and that "works". Whereas their transparent version of cups and balls is the opposite, you must be a sleight of hand master or this won't look like anything.
- gspencley 2y agoMy wife and I are part time magicians. In my experience, people who share your mindset become magicians. At the risk of just repeating exactly what the person you're replying to wrote: The reason that non-magicians often feel let down when they find out how a trick is executed, is that it often feels like an insult to their intelligence. Magic toys with and exploits your assumptions. As soon as you find out that those assumptions were incorrect, and that you were just lied to by a prop (for example), your experience and perception of that illusion goes from "OMG" to "oh, that's all?" What we want the methods to be is some grandiose Ocean's 11 like "heist" with tons of sneaky maneuvers and difficult sleight of hand ... but MOST magic tricks, including the ones that Penn & Teller fool you with (not the ones where they tip the method) are not that. Penn & Teller have said themselves that (paraphrasing): "if the method is more interesting than the trick, the trick is not very good ... and that's when we show you the method. But the tricks we actually want to fool you with are just a bit of gaffer tape and a lie." The fact that you say that you appreciate magic tricks that involve a lot of sleight of hand, or require technical mastery, kind of supports what we're saying. Most magic tricks aren't that. To understand why, look at it from the point of view of a professional magician trying to pay the bills. I can do card manipulation. I have a card manipulation act that I perform. It is by far the most technically challenging routine that I do and it has literally taken me years to get to the point where I can execute it and perform it. It's closer to juggling than it is to what most magic is (though it's still magic because I'm producing playing cards and fans of playing cards at my fingertips in short sleeves). Now imagine that the majority of my act was that type of trick. I have bills to pay. I have crowds to entertain TODAY... and if I make just one mistake in a performance, the trick falls flat. Penn & Teller tip cups & balls because the methods employed in that trick are genuinely entertaining to watch. And the "let's have the audience lie"... I'm pretty sure you're referencing a segment in their 1990 TV special "Don't Try This at Home" where they had a large semi trailer truck run over Teller while surrounded by an audience who could see how it was done, which they tipped at the end. I wouldn't call that "lazy", I would call that using a medium to convey a message. Magic doesn't work on television. You need to see it in person to really appreciate that it wasn't done with stooges/actors and camera tricks. That's a thesis that they have carried with them over the years. No one would do that "trick" in any other venue than in a television special. You can't get a big truck up on stage... and if you're doing "instant stooge" type of work, where people on stage from the audience are in on it ... at the risk of getting philosophical, they didn't even experience a magic trick. So it's not so much that the method was "lazy" ... it's that it was completely ineffective, and thus not even a magic trick for a certain group of people. Which was the entire point of the segment.
- 752963e64 2y ago[dead]
- GrantMoyer 2y agoSufficiently understood magic is by definition technology.
- nuancebydefault 2y agoYou will indeed find the _magic_ to be no such thing when you dig deep down in the abstactions. Each part makes sense and is comprehensible. However the magic is what emerges when the parts come together, the system becomes more than the sum of its parts. Think of a car or a cellphone, an llm, it feels magical what it does, while the elementary parts do not consist of magic.
- Joker_vD 2y agoOn the topic of how that implementation comptime in Go works: I've toyed with a similar idea for implementing constant folding/beta reduction — generate a temporary file with the relevant subset of definitions, insert the constant expression/function call you'd like to evaluate and... compile and run this file. It may not be the most performant thing to do but at least you get the correct semantics without writing a separate constexpr interpreter.
- zaphar 2y agoMagic isn't real. But unnecessary magic can be annoying and sometimes doesn't pull it's weight.
- dvektor 2y agoIndeed. If it magically works, it can magically break.
- bananaflag 2y agoThe only two examples of real "magic" I've encountered (would be interested in more): 1) You cannot do preemptive multitasking except by having a timer interrupt (okay, maybe one can also allow emulation). 2) Quantum key distribution (starting with BB84) depends crucially on the fact that the world is not classical. But in general I agree with the article, it's more or less why I did not become a programmer.
- mistercow 2y agoSometimes a remnant of the magic remains in the math, though, even after you understand why the math must work. The Burrows-Wheeler transform used in bzip2 is an example of this for me. I get why it works, but it just feels too damned convenient, almost as if this is one of the universe’s APIs, and you don’t get to look into the source code of this one to find out why such a simple maneuver is so effective on exactly the sort of data we like to compress.
- criddell 2y agoI've always thought the Diffie-Hellman key exchange is pretty neat.
- mistercow 2y agoMy own mental picture of that makes it just feel very clever, rather than magical. If you imagine that addition is easy, but division is hard, it’s pretty easy to see how you can build fast integer multiplication out of addition, and create hard to reverse operations like key exchange. Now replace “addition” with modular multiplication, and “division” with the logarithm, and you have the trick behind DH. Swap out addition for this weird operation that involves jumping around elliptic curves, and you have the trick behind ECDH (admittedly, the fact that that jumping around thing works as a group operation is still pretty magical). What I like about this way of thinking about it is that you can fully implement the key exchange in terms of integer addition, and the fact that it lets you pass around secrets in a world without “division oracles” seems pretty mundane.
- highfrequency 2y ago> I’m sure I’m not alone, in that each time you pull the curtain off a piece of ‘magic’, you have the same thought: Oooooh yeah. I mean, well duh.. how else would you do that? I can't believe I couldn't see it. This is the great paradox of good ideas. The best ideas are obvious, but only in retrospect. You would be very unlikely to encounter the idea by randomly fumbling around, yet it feels so simple and obvious (and often even easy to implement!) after someone else points it out and you mull it over. Usually it requires looking in a different dimension than the one you were focused on rather than looking further along familiar dimensions, which is our default behavior. In this way there’s a parallel to modern machine learning, where backprop on gigantic models allows us to find very short paths in very high dimensions, rather than finding very long circuitous paths in low dimensions. It turns out this also solves the overfitting problem, in the same way that “retrospectively obvious” is a good filter for ideas.
- abdellah123 2y agoBirds aren't real
- tayloramurphy 2y agoCharles Petzold's book "Code" was the book that revealed the magic behind computers for me. While I don't fully understand everything that happens with a computer, there's a confidence that I could if I needed to. It made tough problems feel solvable in a way I hadn't felt in other disciplines.
- dvh 2y agoIn recent video about reverse game of life Alpha Phoenix hinted that sat solvers are magic: https://youtu.be/g8pjrVbdafY https://youtu.be/g8pjrVbdafY
- gradientsrneat 2y agoOne of the cool things about being a kid is I didn't know how tf anything works. So I thought long and hard about how things work and just randomly guessing. When it turns out later there's a clear answer, it's very satisfying. But knowledge can also weigh down and discourage curiosity.
- metalman 2y agointeresting how a click bait title works just like magic and even more so gets people debating a so so premise in mystical terms