16.05.2016 - Static motion
On static motion:
Or read below if that visual page does not work for you.
Contemplate this line.
The line is a moving slice of the Mandelbrot set.
Finite numbers make it look continuous and produce frames that seem consequential.
Things are happening on it, events unfold.
Objects move, interact, collide, appear and disappear.
It seems to be in motion, and yet it is only a static mathematical pattern.
But if all the motion is already pre-written by the pattern,
Then does it matter if it is computed at all?
The pattern, being a mathematical object, simply exists.
Regardless of whether someone computed it or not.
Our universe is a mathematical object too.
Think about it.
06.05.2016 - On hoarding ideas
To speak an idea aloud means certain death.
Is that a familiar feeling? Does that sound absurd? - Don't close the tab.
There is a choice - to hoard ideas or to spread them.
To keep your secrets to yourself or to talk them out at every opportunity.
It's a choice between a high chance of low benefit to everyone at certainty of zero benefit to yourself and tiny chance of high benefit to yourself at almost no benefit to everyone.
An idea is like a seed.
You can try to grow it yourself, but you can only grow a few at a time and won't know the outcome for years.
Or you can send it out, to be duplicated a hundred times by spoken word and digital magic.
Each then might be tried many times by many people.
Each might scatter against someone's head and turn into more ideas.
Imagine a billiard ball hitting the wall and turning into a dozen balls.
Net benefit to everyone would be higher.
You don't see it that way.
All you see is an idea lost.
Permanently less available.
Not spent on something good, but spent on something like a new iPhone - something you play with for a few hours, and then put into the drawer forever.
You get a few `wow`s and `awesome`s, and it's never heard of again, whether it rings across the world, annoys or vanishes without a trace.
It's unnatural for a human to feel the benefit from long-term investments.
All you can feel is that personal benefit would be certain zero.
If you spread ideas, you stay a nobody, you die.
So you hoard them, to have a chance of making one work at a benefit to yourself, to avoid certain death.
Just something to think about.
03.05.2016 - Bits
Not every lesson was fun during school. Sometimes you just had to doodle. Eventually, the doodling turned into a game of pencil and eraser enabling things to fight on paper.
It's this game that i implemented one day, since it looked like something that can be turned into a computer game.
Tentatively named "Bits", the game puts you in control of a single ship against a death star and it's escort, fighting over a notebook page.
Should be a fun one-time thing.
If anyone is interested, here it is (100 Kb):
Linux 64 bit: http://orbides.org/etc/bits_160503_lin64.tar.gz
Controls are WS or up/down arrows for accelerating and decellerating, mouse button fires, space pauses.
Goal is to hit the centre of the big ship.
Hint: the weapons are lasers, they heat instead of destroying. You have to keep the beam focused on a target for a second to melt and damage it.
25.04.2016 - Rocket Land
There is a game (tentatively named "Rocket Land") i made quite a while ago but never bothered to continue or release before now.
It's a 2D rocket physics kind of game, but instead of magical "this point makes thrust" engines and "this thing does torque" rotators you actually have to make a mass ejector of some sort. Rocket science, not orbital mechanics (but that is in there too).
Ideally, you'll be drawing your rockets, but at the moment there is only a set of pre-drawn ones, since UI is 99% of the effort.
Anyway, if anyone is interested, here it is (300 Kb):
Linux 64 bit: http://orbides.org/etc/rland_160424_lin64.tar.gz
Controls are WASD for the steering and engine, q activates engines, tab drops stages, space pauses.
If the mouse wheel scroll does not work, then use up and down arrows (can happen on a Mac). Held mouse key scrolls.
There are 4 scenarios, A to D, loadable by the buttons on the bottom left.
Both moons should be reachable, especially with the big lander in D, if you could navigate the debris belt and use the fuel sparingly. :)
A ship with boosters:
Lander on the blue moon:
At some point in the past there was a kessler syndrome (to make things interesting):
12.04.2016 - The Banshee, prelude
With the eyes closed, it felt almost like home - the gentle warmth of sunshine on the skin, the light seeping through the eyelids. The colour was off a bit, the warmth was spread across too much skin.
He opened the eyes, and a white hot metal ball hung in front of his face. Bright enough to leave spots in the eyes, yet cold enough to see the bands of clouds if you squirm a little.
He reached for it, the outstretched palm just big enough to cover the whole thing, the liquid metal sticking in-between the fingers of the closed fist. Somehow the brown dwarf always felt like it was within arm's reach, even when it really was almost a million kilometers away, behind the rad-hard glass of the improvised habitat.
This 10 million years old failure of a star was screaming like an infant banshee. It's scream was radiation - unseen, unheard and deadly in minutes on the surface of the moon.
Or should it be called a planet? Radiation notwithstanding, the Banshee wasn't really a star - at 8 times the mass of Jupiter it was too small to sustain nuclear fusion, and it's heat was just the remnants of it's birth.
Somehow it ended up the larges body within several lightyears. The expedition was supposed to determine which theory was right - was it formed from too small a cloud of gas, or was it a planet, ejected from a nearby star? Most peculiarly, why was there one cold moon around it, when the rest of them were still glowing from the heat of their creation?
A moon. Technically wrong, but he didn't feel it right to call the rock below a planet.
07.04.2016 - You've got mail
The user pressed the "Get e-mail" button.
What happens next?
The mail server is a name, the network talks in numbers.
The DNS will a call, and tells the number for the name.
The TCP connection gets established, data split into packets encoded into frames turned into electric signals... There be dragons for another raid.
Over that TCP connection, a plain text hello is sent.
The other side replies with a matching set of algorithms.
It sends a certificate and an invitation.
The certificate is a blob of data in the DER subformat of ASN.1 - type, size, data, type, size, data. In there hides the public key and the signature.
SHA-256 is the hashing algorithm. It takes as many bytes as you have and turns them into a 32 byte string.
We compute it over the certificate.
We then fetch the public key of the authority which granted it and take the signature to it's Dth power modulo N.
The answer is PCKS#1 - a padded SHA256 hash of the certificate.
The two match. Good, the server is genuine!
Now we send our shared secret to it, taken to the Eth power modulo N of it's public key.
The shared secret is a random string.
To get the encryption and hashing keys, we mix the words 'master secret' with the set of random numbers exchanged previously in the hello and invitation.
Just hash is unsecure, and so HMAC was invented after a battle lost and won decades ago.
The mix is the key to HMAC, taken over a recursive set of MD5 and SHA1 hashes to produce a string of bytes.
The string is split into two pairs of 20 bytes for the MAC, then 2x16 bytes for the crypto key and 2x16 more bytes of the initial vectors.
All the prior messages were saved, with the SHA1 and MD5 hashes being taken over them.
Now, we signal the server to begin the coded exchange.
As a confirmation we send the hash above, the 'client finished' string fed to the PRF function with the hash as a key, padded in the PCKS#1, and encoded with the keys above by AES.
Add the protocol version, or someone will fake us into talking on an older, insecure one. Every weird step have a history. A battle lost or won.
The server will reply with the same courtesy, only the 'server finished' line is used.
After the niceties are done, in comes the actual data.
The application data - blocks of AES containing the whatever apps would say.
The signs of ancient battles are seen in them as well - the first block message is just random to confuse potential decoders that figured an in before.
The data follows, completed by a hash.
The MAC, a SHA256 HMAC of the number of the packets sent, the data, it's size and it's purpose.
The end is ceremonially padded, so as not to leave any predictable text that might assist the hackers.
The data goes in and out of a buffer, read and written by the layers over them engaging in further ceremonies.
Ready, says the POP3.
+OK i know you.
+OK You may proceed.
Now, for the actual mail.
LIST, the client asks, +OK the server responds. RECV, RECV, RECV, RECV, DELE, DELE, DELE, DELE...
The client sends a coded ALERT to make the server know not to wait for it at dinner and breaks the TCP connection.
We now have the dumps of data made out of lines with tag: value in them, then the data terminated by two new lines.
What do it say? Where did it came from?
The mess is indescribable, the standards lax, a guess after guess on standard named fields containing data in a free-for-all format.
Americans say Feb 02 2016, the europeans - 02 02 16. Some say +0400, some say PST and EDT.
And that's just the date.
The subject line can be some text. Can be =?UTF-8?B?SGVsbG8ga2l0dHkhCg==?=, can be something even worse. All this must be decoded.
Every language have it's code page, which may not even be provided. We have to guess, to try them all and look for meaning.
The message itself, you might expect, is only text?
Nope, it's MIME. A set of parts, separated by whatever-i-want lines.
In there is a recursive mix of HTML, text versions of it, the files being attached, some signatures, some stuff embedded and some missed never to be seen.
BASE64, QP code, "plain" text in myriads of codepages.
As this final mess is waded through, the status bar approaches 100%...
You've got mail.
01.04.2016 - Hard is easy, easy is hard
Sometimes you do things that are hard and challenging.
Like implementing SSL/TLS stack and fetching google.com over https.
Or making a procedurally generated universe that fits in 1Mb.
And no one cares.
Sometimes you do things that are extremely simple.
Like showing off a 3D printed quadrocopter.
Or reciting something obvious from a podium.
And people are impressed.
The amount of effort put in the first thing is huge, but it's not valued.
The amount of effort you put into the second is about nil, but it's valued.
You, on the other hand, expect to have the payoff be proportional to the effort.
More effort equals more payoff.
It might be tied to the old paradox of doing a good deed.
You spent effort and missed a schedule to help and old lady you found laying across the path to get back home and call a doctor.
You might expect some karmic repayment.
What you get is an existential hurt that there is nothing in the world that would repay you for the deed, no enforcing of fairness like that.
No one cares, other than yourself.
What it should really be:
If you spent a lot of effort it means you did a bad job and learned something.
If you spent no effort, you did a good job, and learned nothing.
Not always, but most of the time.
And this is completely opposite to what your hedonic wiring tells you.
Anything you are good at would seem simple to you, but the fact of the lack of effort at the output makes you feel like that output is worthless.
So you avoid showing it, not wanting to annoy people with "bad work".
Anything that you find impressive would be something that you did for the first time, and so be worthless, but you see it as valuable.
So you show it off, and get hurt by the fact that "even your best" annoys people.
It is a vicious circle of pain and self-improvement that ends up with 99 burnt-out husks for every Napoleon among it's sufferers.
Gonna be a hard bias to compensate for...
22.03.2016 - Hello, thing. What is your name?
When people talk, they use the names of things.
You can't telepathically pass a thought of a thing to someone else.
You can't, in general, show a picture of it.
You can always describe the function, and the other person should get the idea.
That's how many ancestral languages work, synthetic words that combine small patterns into a new concept.
What you often do is to name it, and the other person would know what is being talked about.
To function, names must form a shared knowledge.
But what names a thing?
Suppose you were playing with an air pump, and noticed that it can help you clean up by sucking dust.
Some pipes and bags later, you have a device that sucks air and filters dust out of it.
What is the thing's name?
For you, it would be obvious - it's a "Dust Sucker".
For someone else it will also be obvious - it's a "Vacuum Cleaner".
Another would obviously name in "Antipressure Duster".
Obviously, the three of you don't share a name.
How would you solve that problem?
You might think the easy answer these days is to Google it.
But Google what, exactly?
"Dust Sucker" is an album by some metal band.
"Antipressure Duster" returns something about blowing dust with compressed air, which might be good for outdoors, but inside the house it would just rearrange the mess. Different idea.
Eventually, you might hit the right combination of keywords or stumble upon the description.
What if you made something obscure?
You might call it "Ambient Field Electrostatic Particle Accelerator", while the guys at Berkeley that made it before have called it "Plasma Wakefield Accelerator".
Google away, you'll never find the name without knowing it.
A name does not come with the thing or a concept, it's something people make up when they create it.
How would you know the name of something you thought about or something you made?
It's an open question, not even contemplated by modern search engines.
It might sound irrelevant, but without a name you can't know how your idea was done before, or what reasons prevented it from being done.
Maybe making that thing is dangerous. Maybe the concept you thought of turned out to be flawed.
You can't tell if you don't know the name.
How would you do the "Concept Search", as i would call it?
I don't have a clue, but that sounds like a problem worth solving.