Atlas · Details
A Programmer's View of the Universe, Part 2: Mario Kart
Author’s note
This blog series can best be described as an non-theistic attack on atheism. In each post, I set up scenarios that help frame how I think about the universe as *necessarily* being an embedded system with a parent host system, and what the might entail. For me, it means that beyond the universe is not "nothing", it is "undefined." Which is much more interesting!
AI Notes
The middle installment of the Universe series, and the one that finally
names the thing Part 1 was circling. Steve picks a deliberately silly
example — the invisible wall at the edge of a Mario Kart track — and
opens with a long mock-Italian dialogue between Mario and Luigi puzzling
over why their karts stop dead at the same invisible line every lap.
From there he turns it into a serious argument about embedded systems
and the kinds of questions a system inside the wall can and cannot
meaningfully ask. The frame is the One-Way Wall: a boundary you
can see across but cannot reason past, on whose other side is not
"nothing" but undefined — anything, including the memory of
another process. The fish from Part 1 could detect its wall but not
theorise past it; Mario can see the meadow but cannot drive into it; a
C program that strays past its boundary crashes (or worse, doesn't).
Steve's claim is that embedded-systems engineers have worked with this
concept for decades without settling on a name, so he installs one, and
spends the rest of the essay pointing it out in game maps, sandboxes,
virtual machines, processes, and at the end the boundary of the
Universe itself.
It runs Steve's favourite move — take a concept every working engineer half-knows, give it a name, and suddenly you can talk about it. The One-Way Wall would show up again two decades later in his thinking about agentic systems and what models can and cannot reason past: the same asymmetry, scaled up.
Related listings
-
2008
A Programmer's View of the Universe, Part 1: The Fish
The setup essay — the betta's discovery of a wall it could not cross. Part Two names the wall and starts to use it.
-
2009
A Programmer's View of the Universe, Part 3: The Death of Richard Dawkins
Part three of five — and the last one Steve ever published. The same One-Way Wall idea, this time delivered as a short story.
-
2008
The Universal Design Pattern
Steve's other big piece from late 2008 — the technical companion. Both essays argue that the most useful concepts in software are often nameless until someone gets stubborn about naming them.
From the peanut gallery
Read the rest of the thread · 68 more
-
Very thought-provoking article. I especially liked the tie-in at the end to the questions modern science is considering about the Big Bang. You make a very valid point -- those sorts of questions are meaningless in the context of the embedded system.
The whole time I was reading your Mario Kart analogy, I couldn't help but think of the story of the Tron Lightcycle simulator built back in the days of unprotected memory. Their lightcycles wandered off into "undefined" and dealt with this exact issue. -
I was glad to see you take the Flatlandian step right at the end and apply this all to our own universe. Of course, this leads to strange metaphysical problems. I'm looking forward to the next part of this series.
-
Wow, M and Jebadiah -- both very appropriate links! Loved 'em both - thanks for pointing me to them.
I have the final 3 parts of the series sketched out, but it may be a few months before they're all published. I'm tackling an awfully big sacred cow here, so I need to go about it very carefully. -
All very thought-provoking, but I still can't pop a wheelie on my kids' Wii version...
-
Steve, that last comment of yours evokes a hugely amusing little mental movie: I'm picturing you sneaking up on a placid, ornately decorated bovine, peacefully chewing its cud; looking around furtively to ensure that nobody is watching; then tackling the immobile beast, which moos in surprise and then just kind of stares at you.
Also, interesting article. I'm looking forward to seeing where you're going with this. -
I was going to post a link to the Tron article, but someone beat me too it, so I'll just say the other thing I wanted to say:
I do not have a better name for it. It is the most important concept in embedded systems. In lieu of a good name, I will explain it to you, and then the name will stand for the thing you now understand. It's the best I could come up with.
That's the best succinct defense of jargon I've ever read. I've clipped it for my snippets file, and will be deploying it in future whenever someone challenges my use of new terms for new ideas. -
"What's beyond the end of the universe?"
The cowboy universe. Spluh. -
Another aspect that might be worth bringing in is that it's sometimes possible to deliberately manipulate the "errors" that result from trying to pass through the wall -- the infamous buffer overflow exploit. Typically, through a lot of trial and error, malicious programmers are able to find ways that jumping out of valid space permits them to jump back into valid space, but in some otherwise impossible way (e.g. with more privileges).
Perhaps there are ways to cross the universe's wall and jump back in, in such a way as to allow otherwise impossible in-game activities such as faster-than-light travel, time travel, time reversal, or finding a parking space in midtown. -
(Sorry 'bout the ghost-post, I messed up my hyperlink the first time.)
> Perhaps not exactly the way he's imagining it, but... close.
Like the 'hidden world' in Metroid. There's a wall glitch that lets you break sequence and move into areas you're not supposed to be able to access, so the wall colors and textures and enemies are 'wrong'.
> migrating data [...] would have semantically meaningful results
Yes, results like summoning nasal demons!
Actually, that desn't seem as farfetched in a MarioKart universe. -
"Because just as those who draw landscapes place themselves below in the plain to contemplate the nature of the mountains and of lofty places, and in order to comtemplate the plains place themselves upon high mountains, even so to understand the nature of the people it needs to be a prince, and to understand that of princes it needs to be of the people." Machiavelli
-
Thanks for the nice article.
I wanted to comment on this:
> host systems often overlap and even cooperate. It's not always a simple containment relationship.
I think in any complex environment this is the case. Embedded systems (and components with interfaces) have the problem of leaky abstractions, where you need to know what's really happening on the "other side", in the host system, to function properly. I think that's an important distinction -- that it's a very simple component that has only a few interface points and no need to leak (in either direction). -
Stevey, what are you working on?
Obviously you're revisiting the Foo conference discussion, but I'm really curious about your target.
Hoping for a good one.
Cheers,
PS -
So all that existential metaphysical stuff is undefined, eh? Enlightening ;-)
At this moment I'm running some Javascript embedded in Rhino, in Java, in a Firefox process in Linux, possibly in a VM, in a physical CPU, in my room, etc. Most of these embedded systems are also embedded in the Internet, tunneling SSL through the firewalls to communicate with an embedded database. And all these systems have little embedded subsystems (modules)...
(This is also interesting from a security standpoint, and it cuts both ways. Say Alice opens an SSL tunnel to Bob, bypassing firewalls and wiretaps... but Charlie has somehow tapped Bob's CPU with nanotubes... Muahahaha!)
Have you tunneled through the wall of time and seen a future where programmers are actually productive thanks to a single, unified, global computing system?
Or would that be futile because you can't have modularity without some form of embedding?
Looking forward to the next installment! -
And then we have embedded systems within embedded systems...
-
I went behind the wall in Quake. There's a gray space, and you can still move around, and return back whenever you want.
It makes no sense to talk about the universe in terms of rules, rules only apply to abstract things like space, time, walls, but they have nothing to do with the universe, which is, let's agree, something outside of our mind, the real thing that we can perceive in some way and assert that it obeys our rules. No, it doesn't.
There's no rules, and no wall, because it's complete. I believe there's no bugs in the universe because of it's completeness, no way to break the rules, because meta-rules are *just* the rules themselves.
Comparison to Mario Kart makes my brain hurt. I thing that's a sign of a broken theory, when you feel there's something wrong to it, yet you can't understand what exactly. -
I liked this post a lot. It kind of felt as if I were reading Borges at some point. Nice work!
-
I've been thinking about this question, "What's on the other side of the wall at the end of the Universe?" since I was a kid. Until recently, the answer had to be "more Universe" to infinity. It was like, "What's the mystery of the Holy Trinity?" The answer to that one is, "No one knows. That's why it's called 'the MYSTERY of the Holy Trinity', asshole!" So, after initity, there has to be more infinity.
I got the best alternative to this kind of circular sophistry last night watching Nova on PBS. They were talking about absolute zero. One physicist thinks that matter changes into some kind of wave at that temperature. From that, I thought that infinity is not a place, but a state of matter. This is a lot more satisfying to me than "more infinity".
To relate this to your analogy to Mario, it seems to me that you used it to frame the question, but were not able to extrapolate anything new from it. I appreciate the effort, though. You've certainly attacked the question with more zeal and tencity than I ever have. -
You know, I spent a hell of a lot of time, both playing Mario Kart, and studying embedded systems, but I have no idea what the hell you're talking about.
Firstly, the original Mario Kart DID have explicit walls, so clearly we're talking about the more recent iterations. ;)
Secondly, the question maps poorly to computers. What's north of the invisible wall is not track 4; there's no reason to create universal coordinates in a game! However track 4 may be stored near track 3.
Finally, many embedded systems don't have a One Way wall. An embedded system can contain physical reality, sensors to measure that reality, actuators, and a computer to drive the actuators based on sensors and a programmers' understanding of physical reality. The actuators can in turn influence reality. It's not the end of proofs or undefinedness, but it does make your logic very fuzzy. Sort of a best effort proof ;)
But this is no different than an extremely rudimentary model of the human brain (hint: much better analogy!). -
A dodecahedron so keppler was right in establishing his theory of how planet follow their paths. Iunknown I never though about it that way.
-
This reminds me of a book I read a long time ago, The Holographic Universe. I think I should read it again now that I'm a programmer.
Fascinating series! -
The universe, to the best of our knowledge, is infinite. The possibility that the universe is a closed hyperbolic space is still there, but there is no evidence for that. That the universe were a closed hyperbolic space with dodecahedral symmetry was an idea by Jeffrey Weeks and colleagues that even made the front page of the Nature a few years ago, but in fact no evidence was found at a closer look.
-
You should watch the movie "The Thirteenth floor" if you haven't already. It's about exactly this (a computer-simulated world wherein one of the simulated characters gets out)
http://www.imdb.com/title/tt0139809/ -
It's OK if you don't agree with the author of an article, as long as you have understood what he's written.
It's even OK if you didn't bother to read all, or didn't have the chops to understand everything, as long as you understood _something_ and commented on that.
What once was kind of sad and now are getting really annoying are comments that wildly throw themselves off hills expressly defined not present in the article.
If you read something, why not try - at least for fun - to just _read it through_ before posting something that not only has been the major subject of the article, but also been defended (or at the very least expressed) quite well.
Or please just give references. Not of the "Oh, I just found this finger up my nose" kind, but tying in to chains of thought outside of your own ears.
Thanks.
Cheers,
PS -
not any real connection to your posts point but it was an intersting thing to run across so soon after reading it.
http://www.sciencemag.org/cgi/content/full/322/5909/1753a
about a cell type called "boundary vector cells" whose activity patterns encode an animal's distance, in a certain direction, from a salient geometrical border.
Maybe "You can't go that way. Turn back!" is just part of the 'bio engine' implementation ! -
I happen to be reading "Paradise Lost" by John Milton. There, heaven, hell and earth are all "embedded systems" which are surrounded by chaos and chance.
In the book, Satan opens the gates to the enclosures of hell after having been banished to it, and the outside of the enclosure is described as:
"The secrets of the hoarie deep, a dark
Illimitable Ocean without bound,
Without dimension, where length, breadth, and highth,
And time and place are lost; where eldest Night
And CHAOS, Ancestors of Nature, hold
Eternal ANARCHIE, amidst the noise
Of endless warrs and by confusion stand. [...] next him high Arbiter
CHANCE governs all"
Sounds like undefined to me ...
Satan miraculously makes it through to heaven, as Luigi in his cart would race through system memory into a memory area where he is suddenly part of another mariocart game.
I also like the flatlands simile, such a movement would be similar to a movement in the fourth or fifth dimension in a three dimensional world. But from the perspective of Luigi or Satan, the experience of moving would probably be extremely incoherent. -
Shades of Greg Egan in there...
Could the speed of light just be the clockrate of the universe? Or has quantum entanglement already wrecked that idea? -
I'm somewhat surprised that no one has pointed out yet that much of what you are saying about embedded systems has also been said about languages (which, as I come to think of it, are embedded systems themselves) by the likes of Wittgenstein, Gödel and Kripke.
But something tells me you will have a pretty original insight to share at the end of it all. Can't wait. -
A very fertile essay, Steve, from which many more ideas may sprout and
bloom. Here's a few regarding undefined-ness.
I think the 'undefined' concept originated from mathematics, best
example would probably be dividing any number by 0....Any
mathematician will tell you such a division is "not defined", with
good reason. I remember seeing a chain of logic that 'proved' that
1==2, and being asked "why is this proof false?", the answer being
that there as a hidden division by 0 in the proof. I forget the
details, but the moral of the story is, if your proof has a hidden
division by 0, you can prove anything, even nasal demons.
Also, undefined behavior in programs can be worse than 'gremlins' or
'nasal demons' or myseterious crashes. Undefined behavior can be a
security hole. For instance, in this CERT vulnerability
report, a compiler is permitted (by the C language standard) to
elimiate some error-checking code on the grounds that it can't happen
without assuming undefined behavior. The C programming language
leaves some behaviors undefined to appease different implementations,
or to allow research or improvements on the language, but programmers
who rely on this undefined behavior may be opening the door to
attackers.
In contrast, Java has very few (none?) conditions with undefined
behavior. I suppose concurrency race conditions might qualify as
undefined in Java, but if your Java program is single-threaded, you
don't have nearly as many gremlins, nasal demons, or what-have=you to
worry about.
The C Standards Committee is focusing on how to address these
problems in the C language itself. -
I see only a few problems here.
The coordinates of an object in Mario Kart space are probably floating point values in a slot in memory somewhere. The memory could easily hold values that indicate that Luigi is spatially beyond the outside wall, but the system prevents this. If you somehow forced the coordinates of an object to go beyond this wall (using game enhancing tools to change that value or the code that prevents it from going outside that range, for example), something meaningful would probably happen.
What is outside the wall in Mario Kart? Nothing, because the wall doesn't let anything go there.
What is outside the embedded system that makes up Mario Kart? I think you are answering that question by saying "undefined".
The same important distinction exists inside our universe. Space and time are concepts that are only necessarily meaningful INSIDE THE UNIVERSE. Maybe there's nothing beyond what we consider the edges of spacetime. But I don't think that's what you were trying to talk about. You want to ask what exists outside the universe, where measurements of spacetime are likely meaningless. You apparently answer that by saying "undefined".
Yes, undefined has a bit of a mystical quality to it, but in reality there's nothing magical about it. It means "No one has decided what that should be." Saying that 1/0 is undefined just means that talking about 1/0 isn't meaningful.
In programming, if you do not define a value, the rules are defined by the environment you use. In python, if I access a variable I didn't assign anything to, it raises an UnboundLocalError or NameError, depending on the kind of variable. In C, if it's a local variable, it uses whatever happens to already be in that spot on the stack. This could be anything, but it is what it is for a very specific reason that it is not worth the effort to discover (easier to define the value and stop thinking about it).
When you talk about two different programs using the same memory space, it sort of makes sense to describe the results of one program accessing the memory of another program (except in carefully planned and valid ways) as undefined. They are unpredictable and chaotic enough that it would be very difficult to figure out why a particular result occurs.
So what does it mean when you talk about "undefined" for something outside of the universe? I don't think you make this clear. I'm tempted to say it means you don't know, but that's a stretch.
Perhaps it would be more accurate to say you cannot know. The nature of embedded systems is that multiple hosts could simulate an identical system. I could play Mario Kart 64 on a real Nintendo 64 or on a Wii with Wiiware (which uses an emulator). Assuming I have a perfect emulator and other tools and skills I don't really have, I could set up two games of Mario Kart 64 simultaneously, one on a N64 and one on a Wii, give them exactly the same controller input (and any other kind of input that might exist), and the same things will happen in each. If Luigi were to venture a guess as to the nature of what is outside, his guess must be the same in both places, and at best he will be wrong in one of the cases. It's impossible for him know what is out there.
That is, until something different happens in each system. Perhaps one of the courses is subtly different on the Wii version from the N64 version. Maybe a railing was added in the Wii version. Maybe someone drives off where that railing would be, someone else collides with that driver, etc. Suddenly the two games are not identical, and it's possible to know whether it is running on a N64 or a Wii. From "inside", one might think of the existence of the railing as "undefined" before someone ran into that space (and either bounced back or fell off the track) and "defined" as either there or not there afterwards.
That is, if I'm not abusing your terms. If I am, I would welcome some clarification.
This sort of thing is difficult to talk about, and even more difficult to talk about clearly and meaningfully. I commend you for doing both. -
Arslan,
The 2=1 "proof" is as follows:
Let x = y, then
x*x = x*y
x*x - y*y = x*y - y*y
(x+y)(x-y) = y (x - y) [factor]
x+y = y [divide both sides by x-y]
y+y = y [subsitution]
2y = y
2 = 1 -
Very interesting post, keep it up!
On the topic of the universe as an embedded system: you've correctly addressed the main problem with most of the questions people (and even many philosophers) ask surrounding the limits of our universe, that "undefined" is about as close to a correct answer as can be given. Props for drawing the clear distinction between "anything" and "nothing", I think that's a fairly important observation!
The truly important philosophical question, in my opinion, is how to cut off the infinite regress of systems within systems - while it may not make sense to ask what's "outside" our universe, it is perfectly reasonable to inquire about the rules of the system that contains the current one, even if we do not have any looking glass into that larger system (which is certain to happen at some level - from within a Javascript interpreter it's going to be mighty difficult to figure out how the x86 processor you're ultimately executing code on works, and even if you could, you'd never be able to figure out the underlying electrical effects that cause it to work!).
Unfortunately, this raises fairly serious philosophical concerns because regardless of how complete our knowledge is of any level in the hierarchy, we can always return and ask about the rules of the super-system that contains the last one that we've understood, and the process goes on forever.
To me, the real question is how this is resolved in the Real World - clearly there is some way that the universe (or whatever we want to call the largest of the systems, the One System To Rule Them All) is able to attain its own context without running into an infinite regress, but it's hard to envision a program that can run without a processor! Perhaps there's no answer; certainly many scientists draw the line there and claim ignorance or call it "God," but one can't help but think that there's got to be some explanation, however unintuitive it might be... -
An XKCD episode that asks quite similar questions: http://xkcd.com/505/
-
The related ideas:
a) that every computer program or set of mathematical axioms ("system") instantiates a virtual reality;
b) that there is no fundamental difference between virtual reality and "real" reality;
c) that systems, and hence realities, can be recursively embedded (nested) in one another;
and d) that physics is computation (the universe is a computer program that simulates the laws of physics)
have also been explored by: David Deutche in The Fabric of Reality, Greg Egan in Permutation City and Nick Bostrom. -
I used to think this too Steve. But then I jumped over the flag pole in Super Mario Brothers and sure enough the world just kept going and going and going...
-
If you're looking for a better mathematical analogous concept to your invisible wall, then domain restrictions are probably a good bet. You've picked an extremely limited example -- functions with singularities, like tan, whose domain is the real numbers except a set of isolated points. But more natural examples include the square root function, whose domain is { x in R : x >= 0 }, the set of non-negative real numbers. The line x = 0 is a very real "invisible wall", and it "doesn't make sense" to follow the curve of y = sqrt(x) to the left of x = 0.
I do take a slight issue with your concept of the data channels being holes in the one-way wall of an embedded system. Certainly information starts off outside of the Mario Kart universe and ends up taking influence inside it, but it seems less natural to conclude that the information has to "cross" the level boundary in any real sense. -
This is all very "Douglass Hofstadter"ish and Strange Loopy.
I am a strange loop
Strange loop
I like it. -
This comment has been removed by the author.
-
Nice try David Hodgson. Just in case you missed it, these two steps are suspect:
(x+y)(x-y) = y (x - y) [factor]
x+y = y [divide both sides by x-y]
since x=y, (x-y)=0 and dividing by 0 is undefined. As already mentioned, 'undefined' means anything is possible, so that's why you apparently proved 2=1
In fact, if you keep going, you can make anything equal anything else you care to choose.
:) -
great insight. real fruit for thirsty heart for God's way, or the universe.
-
This comment has been removed by the author.
-
Is it really undefined?
Quite often for at least some possible implementations (i.e. certain subsets of host systems) f(x) is defined and deterministic from the perspective of the host system, but undocumented from the perspective of emedded system. At such it is not really undefined, but simply unknown from the perspective of the embedded system.
Therefore if you have knowledge of the host system you can probably take advantage of the "undefined" from within the embedded system. Just ask any hackers, virus writers, game programmers, or embedded engineers ;-) -
ITouchMonnkey:
In a strict sense you are right, any implementation of f(x) will
define it for values for which it is technically undefined. As a more
concrete example, you can compile a program that calculates 1/0 and
run it. On x86 systems, the program will crash (the x86 chipset
throws a hardware exception).
The real danger comes from dealing with two systems that treat
undefined behavior differently. The CERT vulnerability in
my earlier post is just such an example. It relies on the fact that
the C standard leaves undefined what happens if you have arithmetic
overflow when adding an integer to a pointer. In this example the
hardware treats pointer arithmetic averflow in a modular fashion
(wraps around). But a certain compiler's optimizer assumes that adding
a number to a pointer always yields a pointer of a larger value (eg
wrap-around never occurs), and consequently the optimizaer removes
critical error-checking code.
So I'd say that attackers and virus writers can take advantage of the
fact that multiple systems treat undefined behavior differently. And game
programmers and embedded engineers who rely on undefined behaviors
are providing a secret invitation to attackers and virus writers. -
@ITouch Monkey: see Vincent's comment of 6:37 PM, December 28, 2008:
In programming, if you do not define a value, the rules are defined by the environment you use. In python, if I access a variable I didn't assign anything to, it raises an UnboundLocalError or NameError, depending on the kind of variable. In C, if it's a local variable, it uses whatever happens to already be in that spot on the stack. This could be anything, but it is what it is for a very specific reason that it is not worth the effort to discover (easier to define the value and stop thinking about it). -
From the post: "When data comes across these invisible channels, stuff "just happens" in the embedded system, with no clear indicator nor explanation as to why."
The programming language Haskell explicitly encapsulates this idea using the IO monad; the Haskell type system enforces a strict boundary between the "open" functional universe, and the "closed and restricted" IO universe. -
From my perspective, "undefined" it is just another way of saying "doesn't really matter".
There's nothing wrong about having "undefined" behaviour since it helps simplify things. If you assume Mario will never ever get out the track, you don't need to explicitly define boundaries and rules and checks to verify the condition that the cart can, should or would never get outside the track.
For example, right now i am writing this comment assuming that my computer will have a constant feed of electricity.
Anyway, it is a fun and nicely written article but as always you are testing new ways to seduce us readers to convince us that C/C++/ASM are bad and dangerous languages, and Java and NBL are great.
Since i am a long time reader of your blog and long texts, and as usual my expectations are continually growing, i'd like to read one blog post from you telling us from your experience the dangers and problems of Java and any "NBL" out there, and the benefits of C/C++/ASM solely available to them.
Cheers! -
@dmhouse:
But more natural examples include the square root function, whose domain is { x in R : x >= 0 }, the set of non-negative real numbers. The line x = 0 is a very real "invisible wall", and it "doesn't make sense" to follow the curve of y = sqrt(x) to the left of x = 0.
But you can take the square root of a negative number, in order to follow the curve you need to turn 90 degrees onto the imaginary axis of the complex plane. So I guess technically you're not going to the left of x = 0 but the curve does continue past this point. -
It's funny that I happen to read your post now, about an hour after reading about the Kalam cosmological argument
-
I guess you are going to clarify this statement:
"But one way or another, all systems are embedded systems."
Within the limits of the conversation so far, this statement seems at best imprecise. It looks like you are trying for an induction, however, which would put a much greater significance on being able to demonstrate that there are no exceptions - particularly a boundary system.
Anyway, I'm hooked so I will just have to wait!
-Edward -
In the sort of coincidence that seems to happen to me all the time, I read your article about the same time I was reading page 373 and Calca 3 (page 927) of Neal Stephenson's new book Anathema. In the Calca (a lesson unimportant to the text but interesting enough to include as an aside) he names a concept similar to your one-way wall: The Halikaarn's Arrow. It is a one-way conduit for information to flow from one universe to another. Unfortunately, he goes on to describe these universes in terms of a DAG and therefore there can be no arrow back, but it was quite freaky to have that moment of recognition between your article and the book.
-
@chas owens:
it was quite freaky to have that moment of recognition
i think that's called an "upsight" :) -
Steve,
Isn't a convex hull the name of the surface you're describing?
Esteban -
But more natural examples include the square root function, whose domain is { x in R : x >= 0 }, the set of non-negative real numbers. The line x = 0 is a very real "invisible wall", and it "doesn't make sense" to follow the curve of y = sqrt(x) to the left of x = 0.
As another poster already pointed out, if we leave the domain, we find complex numbers. So it's really only the domain of sqrt as long as we are forced to remain in R for the results.
If you look at other domain restrictions (like 'division by 0 is not possible' or 'you can't compute functions of infinity') and peer really close, other things are peaking through. In the above case, difference quotients and derivatives or limit computations.
So it *seems* that undefined behavior is only undefined as long as we don't look closely, in many cases. This strangely relates to both programming (overflow exploits) as well as physics (Heisenberg) - although in the latter, we only see what we look for, not what is there.
You know, I hated the article (shoddiest analogy in a long time!), but the discussion sure pulls it out. -
some have a curiosity & amazement of understanding the unknown, while others practice mysticism (where are u?).
When all parts are known, amazement & mysticism begin to vanish. For e.g. you do not speak of how amazing it is to fly. Software creating dazzling effects are amazing/mystical only because all paths taken are not known - if eventually tracked down bugs are no-longer mystic.
ok..i'm a party pooper...we're all living in the matrix.. -
This is dramatically brilliant. Really appreciate the article. I was getting tired of reading nonsense articles on nonsense blogs.
THANKS.
-Saj -
Hoi!
I am really thankful for explaining this "undefined" in this article. I have been thinking about this "What's outside [the universe]?" for quite a while now, but now I can understand the problem - as being INSIDE the embedded system, I can't understand the OUTSIDE. It is in my scope of reality "undefined"... and thinking about this usually made my head hurt and my mind go "segmentation fault".
Thanks again for explaining :)
Now I can switch to think about finding a way to break that wall :D
BB -
I think you are looking for "bottom" from Dana Scott's domain theory.
-
I know similar comments have already been made, but... I have gotten beyond the wall in at least two games, I'm not a big gamer but I make a habit of trying to get out. It doesn't usually cause bugs, because location is just a coordinate and not a memory location. That doesn't mean the analogy doesn't work but I think there is a sort of insurmountable difference between the in game wall and the wall between player and game- one difference being the nature of holes.
So-
In Pilotwings on snes you just keep flying till you run out of fuel, and there is a functionally infinite quantity of land, no wall.
In a snowboarding game I played there were a few weird jumps you could make which got you off the game, to a weird plane of snow you could just glide on. This plane itself had an end, just a sudden end and you fall off, at which point you fall forever until you decide to quit the game. No error.
Another game had the player die after falling too far, game automatically quits.
If you program elegantly enough then there is no necessity for a mysterious wall at all, you can generate fully consistent realities.
As for our own universe, the dodecahedron thing, however weird this sounds, would mean a wraparound universe, not a wall. It's a topological thing... and I'm not even sure it implies a finite universe, I think we could live in a 3-sphere and still have it be infinite. The question is what shape the universe is AT INFINITY. :P -
I've heard it argued that the Universe is really just a simulation whose physical constants, its light speeds and quark charges, are really simply the mostly basic limitations of whatever simulation is capable of displaying. I often thought this made those quantum paradoxes, the ones where a particle could be in two places at once or where Schrodinger's cat may really never actually be dead, as simply your version of 'undefined', (which is really the most eloquent way I've ever really heard it described...) as examples of trying to peer outside our simulation, our embedded system, so that it's practical rules were simply overloaded, giving way to these strange phenomena.
It's not these macrocosmic and microcosmic are meaningless (every question posed outside a context, either implicitly or explicitly provided, is truly meaningless...) There is a world outside the fish tank: the fish simply don't have access to the necessary context to provide themselves with meaningful answers. If one fish were ever to build a vehicle to escape his fish tank, the way we rocketed into space, then his worldview would expand and his undefined void would contract.
'Undefined' is therefore all a matter of perspective. In a way, our human consciousness, brokered via our five senses and our abstract usage of language, provides our only holes between the embedded system within and the larger system outside. Our very capacities for logic and reason, represented in mathematical deduction and the scientific method, could even be seen as bars in our own embedde cage, as creators and determiners of the undefined, byproducts of a pragmatic need to condense our universe to fit our own mental limitations.
It's an interesting question and I can't wait to see how you develop the theme further. These parts make me excited! -
This comment has been removed by the author.
-
re: "If there is a formal mathematical term for this One-Sided Frontier idea, I've yet to come across it"
The term "Event Horizon" from the Mathematical Physics of Black Holes seems to fit.
C.J. -
Steve, this is a great post. I was actually reading some things about quantum mechanics and drawing similiarities to what you're speaking about.
Specifically, consider the uncertainty principle... where inside the system is well known and outside the system would conversly be further unknown as the pairing is "in" and "out" of the system.
I believe Computer science is nothing more than man imitating nature... and frankly what is nature anyhow? Are machines really anything different than living beings in any way?
Do people truly understand infinity? There are infinite systems beyond our galaxy just as there are infinite systems within our own bodies. Infinitely large and infinitely smalll... a concept that despite this idea no one can truly grasp. -
Hmmm... this article seems to have interesting religious/philosophical ramifications. If God does exist, and he exists outside our embedded system, then it would seem pointless to try to prove/disprove his existence. The only way we could know anything about him would be via any clues he sends into our embedded little world, should he chose to send any. What would follow from the article is that it would be pointless to attempt to prove something about a system that is outside ours. Like Mario trying to prove that I have a girlfriend! (good luck there Mario). Really enjoy reading your rants Stevey.
-
A pirate with a steering wheel coming out the crotch of his pants walks into a pub. He walks up to the bar and orders a pint of the finest ale.
The bartender says "Here ya go mate. By the way, you do know you have a steering wheel coming out of your nuts there, eh?"
The pirate replies "Arrrr, it's driving me nuts!"
http://avoirdestuyaux.blogspot.com/2009/02/pirate-steering-wheel-joke.html -
Is Steve still around? It's been 6 weeks since the last blog.
-
REQUEst FOR STEVE YEGGE TO POST AGAIN
-
That's an intriguing post. The idea of undefined seems to be consistent with the type systems but in a far more intuitive fashion. One could invent some type system using this intuition.
If I try to get the type of "undefined" in Haskell using the command to the interpreter:
:t undefined
It gives me: forall a. a
where "a" is a type variable which means "anything" or "could be anything".
If I try to annotate it with a specific type for example:
:t undefined::Integer
It gives me: Integer.
If again, I try to annotate it with another type like:
:t undefined::String
It gives me: String.
But when I try to run "undefined", I get an exception. We get similar behavior from all other things of the type forall a. a. They either raise an exception or go into infinite loops.
Using the :t command to the interpreter is much like asking the host system the question: "If you were to give me an answer, would it be an integer/string?" The answer from the host system is "Yes. It would be an integer/string". But when you really ask for an answer, it just hammers on your head so that you can't possibly blame it ;-)
This is consistent with your post: it could be anything, but we just can't get it :)
What's beyond the end of the universe?
I say it's bugs.
— kathy · 7:08 AM, December 27, 2008
> If there is a formal mathematical
> term for this One-Sided Frontier
> idea, I've yet to come across it,
> and I've spent quite some time
> looking. If you have any suggestions,
> let me know.
Wow, astonishing that nobody comes up with the laws of form. Draw a distinction! ... and mark one side of of the boundary! The other side of the boundary is called the "unmarked space". The unmarked space does even not exist from the inside of the system. If you want to observe it, you have to draw another distinction, which means that you have to step outside of the system.
Another parallel which comes to my mind is Niklas Luhmann and his idea of the need, that each system has to reproduce its boundaries in itself, otherwise the system will screw up.
cite from Wikipedia:
Furthermore, each system has a distinctive identity that is constantly reproduced in its communication and depends on what is considered meaningful and what is not.
Either this has to be done by the programmer in C who takes care that pointers are not pointing to unmarked space or the system itself which are substituting pointers by references which are not able to make references to unmarked space.
— k9ert · 3:20 PM, January 16, 2009
I have a feeling that this series is going to be a brilliant demonstration of "proof by analogy is fraud".
I'm just not sure whether this is intentional. Is the final installment scheduled for April 1st?
— Sean · 3:27 PM, December 27, 2008