Last year, when someone asked what I did for a living, I never knew how to answer. I'd utter some incorrigible phrases, failed, and just say that I program stuff. Today I'm slightly better at it. I'd ask them back:
"Have you watched Interstellar?"
"Do you remember the scene where they were on a planet near a black hole and time moved slower?"
"Do you know that it happens in the real world? With satellites! the ground control needs to push time information to these satellites."
"Why does having the same clock matter you ask? On such a planetary scale, small time differences can cause massive errors in navigation, communication... You know what? It’s like agreeing to meet at 8 PM, but one of you is on Jakarta time and the other on Singapore time. You’ll both show up—just not at the same time"
"So, I worked on a database engine and communication protocol that handles that kind of interaction without back and forth communication like the satellites do; and your data is always available."
"Tweak it a bit, improve the transport layer—and boom, a database engine that works across planets!" (disclaimer: I'm oversimplifying stuff)
Sounds cool? I think it does, but this is just the beginning...
My job was to make a library (and eventually a programming language) that made it possible to create distributed state machines that is eventually-consistent on top of the communication mechanism that I talked about earlier.
In layman's term, imagine having... something (At this point I don't have to tell you that programming is like magic where you can just create "anything"). You copy this thing to someone and it becomes "agreement" to both parties because when you change your copy, the other people's copy will change automatically, eventually.
Anyone can have a copy and then everyone will have a collective agreement over the thing. When one party goes far way, let's say for several light-years, change their copy of the thing. When that person comes back and meet again with the rest, all connected things will magically resolve into the same form, or state (this is why this is called a state machine).
And then the rest of my job is to make this accessible for other programmers by inventing a language that bridges the normal human thought to this chaotic soup.
Now, keep that state machine concept in your mind somewhere and let's take a detour.
Light-years thingy
At this point I have to mention that the replication without back and forth communication is a big deal. It circumvents the need for the back and forth communication and still enables coherent light-years communication in the first place (again I'm exaggerating using light-years metaphor) by preserving order.
Think about this dialog between a food stall owner and a customer:
customer: "How much is a Chicken Rice?"
food stall owner: "50.000 Rupiah"
customer: "50.000 Rupiah?!" (reconfirming, because the customer cannot believe what he heard)
food stall owner: "Yes."
customer: "Okay, never mind." (aborting, because thought it was too expensive)
Now take that same conversation and stretch it across the cosmos, between two kardashev-type-3, extra-terrestrial entities who eat stars for breakfast and jump drives for morning strolls. They can be as close as 1 meter at one moment, and then couple of seconds later, million light years apart.
Each message could take anywhere from a fraction of a second to infinity and beyond; and that multiplied by 5 lines is a long long wait! We can be more efficient, can't we?
customer: "I want to order Chicken Rice, only if it is below 25.000 Rupiah! If you decide to leave it in your shop, I'll grab it later when I come by."
food stall owner: "Our price is 50.000 Rupiah. I'm not gonna make one!"
Now, not only the communication takes much less time because it's just 2 lines, but also the customer doesn't have to wait for the food stall owner to reply! They can just go, grab the food if it's there, or leave the shop hungry.
So, this is an oversimplification of how the replication mechanism works (I know it's still not simple).
One day, my boss casually asked...
"What if we introduce branching in the state machine?"
He dropped into the conversation all the theories he had researched in his spare time about how basic computer operations like branching, pattern-matching, loops can be applied to this distributed state machines so that we can have a more expressive state machine. By expressive, I mean you can describe more things with less words.
We developed the parser and interpreter until at one point it occurs to me!
"Hold on! Wait a second!"
There are multiple copies of complex things, each semi self-computing. Each copy interacts and causes the other to resolve it in an orderly way with the replication mechanism, deterministically. When one of these things doesn't interact, it still maintains its own truth or reality. Two groups splintering from each other will maintain their own separate realities, and once they merge again, so will the realities.
This is Relational Quantum Mechanics! It doesn't concern spins and angular momentum. It does not use EMR for interaction, but rather IP packets. But still, this is a mini version of the undecidedquantum mechanics interpretation!
Multiverse
If you read the interpreter code (an interpreter is the mini-computer-within-computer that reads the code written in the language and executes all the rules). you'll see instruction mnemonics inspired by classical computing like choice
, match
, retry
, timeout
, parallel
, compensate
.
Because of partition, we had a concept called time-travelling, which is when an interaction comes from the past (again due to how time can move differently, oversimplified) and rewrites the entire reality.
Imagine in the schrodinger's cat experiment, you start making funeral plans because there’s a chance the cat might die, but when the cat comes out alive, you rewrite all those plans with a new plan: buying the cat treats.
In the schrodinger's cat thought experiment, the reality is split into two, inside and outside the box. However, the realization comes with the thought that in the reality created by a computer network, the split is not binary. It can split into any number. And a new participant can be born in the middle of an ongoing external realities so that when it merges into the bigger realities, all its truth can be rewritten even from before its first statement of truth.
So even after surviving the box after the first collapse, the cat might still die in the meta-future.
So this finding is two-fold: (1) The reality split is not binary, and (2) there is no guarantee that the parties involved at a particular time are everyone that will ever be involved (unless we add more restrictions to the language and the system, which I don't think will be cool). The latter is not a feature of quantum mechanics theory (at least that I know of), but a consequence of our participatory swarm policy.
After that realization, we started storing a structure we called the Multiverse Tree that tracks all possible realities so that a state machine can decide to jump to whichever realities it "falls into" because of future and past interactions.
It even changed the vocabulary. Later a new instruction, canonize
, is added, which is a mechanism to see a number of participants who arrive at a point in the future and merge it with the meta-future, which will prevent any rewrites past a certain point.
What is that if not the plot of Loki?
Closing
So the project’s been shelved. No production launch, no flashy keynote, no one saying “sounds like a job for the multiversal tree” in a real meeting.
What am I doing, spending my Saturday writing all this down?
Honestly, for future-me to laugh at, for a humble brag or two. And mostly because… it still sounds cool.
In another branch of reality, this thing took off.