Friday, 13 October 2017

KISS

-Safety, speed, usability, etc. all generally speaking originate from the same source, the system doing as little as possible in the simplest and understandable way possible while achieving the goal of doing a lot of the same thing it's good at.

-Transparency: the system must be transparent and open. It must not do anything behind the users back. The user must be able to view all that is going on in their system and understand it.

-Non-redundancy: in UI there ought to be only one way of doing things so as not to confuse the user or waste their time by making them learn many ways of doing the same thing.

-Limited abstraction: working close to the hardware while maintaining a level of readability and functionality. Unnecessary abstraction leads to waste of time, less speed, worse security and confusion.

-Stay out of the way of the user, never popup anything unless requested, never run anything in the background unless specifically requested.

Visit Russia, find subs, observe Militsiya, get a cold (after two years of health).
WM design ideas:

Applications are allowed to bring themselves on top only once (when they are started within certain time). After that the user must ALT+TAB to bring them on top.

OS/Compiler stuff:

1) Compile a static busybox and copy the files to a HDD image (after making the partition):
mount -o offset=32256 sda.bin tmp
2) mknod a few devices
3) Compile linux kernel
Tools these days...
4) qemu-system-x86_64 -m 512 -kernel bzImage -append "root=/dev/sda1" -enable-kvm -hda sda.bin

5) Modify tcc so it can be compiled into static binary (./configure --extra-cflags=-static), improve the assembler by adding syscall, use statically linked uClibc for startup code (plan: write the startup code entirely from scratch).

x86_64-asm.h: DEF_ASM_OP0(syscall, 0x0f05)
tccpp.c: get rid of ldexp and make your own d = d*((1<<((int)(exp_val-frac_bits))));
tccelf.c: get rid of all things related to libtcc1.a and crt?.o
tcc.c: add missing (dummy) function void __assert_fail (const char *assertion, const char *file, unsigned int line, const char *function) { abort(); }

tcc -DCONFIG_TCC_STATIC -o tcc.o -c tcc.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o libtcc.o -c libtcc.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o tccpp.o -c tccpp.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o tccgen.o -c tccgen.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o tccelf.o -c tccelf.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o tccasm.o -c tccasm.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o tccrun.o -c tccrun.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o x86_64-gen.o -c x86_64-gen.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o i386-asm.o -c i386-asm.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o libtcc1.o -c libtcc1.c -DTCC_TARGET_X86_64 -I./include -static
tcc -DCONFIG_TCC_STATIC -o alloca86_64.o -c alloca86_64.S -DTCC_TARGET_X86_64 -I./include -static

gcc -nostdlib -static -o tcc libtcc1.o alloca86_64.o tcc.o libtcc.o tccpp.o tccgen.o tccelf.o tccasm.o tccrun.o x86_64-gen.o i386-asm.o ../uClibc-0.9.33/lib/crt1.o ../uClibc-0.9.33/lib/crti.o ../uClibc-0.9.33/lib/crtn.o ../uClibc-0.9.33/lib/libc.a
strip tcc

6) End up with standalone 290 kB static C-compiler/assembler.

Boots in a second.

void* syscall(void* syscall_number, void* param1, void* param2, void* param3) {
  __asm__ __volatile__(
    "mov %0, %%rax\n"
    "mov %1, %%rdi\n"
    "mov %2, %%rsi\n"
    "mov %3, %%rdx\n"
    "syscall\n"
    :
    : "g" (syscall_number), "g" (param1), "g" (param2), "g" (param3)
    : "rax", "rdi", "rsi", "rdx");
}

typedef unsigned long int uintptr;
typedef long int intptr;

static intptr write(int fd, void const* data, uintptr nbytes) {
  syscall((void*)1, (void*)(intptr)fd, (void*)data, (void*)nbytes);
}

int main(int argc, char* argv[]) {
    write(1, "Hello, World!\n", 15);

    return 0;
}

_start() {
  __asm__ __volatile__(
    "call main\n"
    "mov $60, %rax\n"
    "mov 0, %rdi\n"
    "syscall\n");
}

7) Compile hello world on a few MB linux installation on a 64 bit CPU.

Monday, 2 October 2017

Belonging, purpose, transcendence and storytelling...

Navier-Stokes, good luck making the code shorter...


N  = 192; dt = 0.25; p = zeros(N, N);
u = zeros(N, N); v = zeros(N, N); ustar = zeros(N, N); vstar = zeros(N, N);
k = pi*[0:(N/2-1) (-N/2):(-1)]; [x y]  = meshgrid(k, k); ds = -(x.^2 + y.^2);
ds(1,1) = 1; px = 0.0; py = 0.0; gx = 0.0; gy = 0.0;
for t = 0:1000
    % constant velocity zone
    u(N/2-10:N/2+10, N/2-10:N/2+10) = 0.2;

    % solve intermediate velocity U*
    [ux uy] = gradient(u);
    [vx vy] = gradient(v);
    ustar = u + (u.*ux + v.*uy + del2(u)/20 - px/20 + gy)*dt;
    vstar = v + (u.*vx + v.*vy + del2(v)/20 - py/20 + gx)*dt;

    % solve Poisson equation: del2(p) = f
    fhat = fft2(divergence(ustar, vstar));
    p = N^2*real(ifft2(fhat./ds));

    % enforce del(U) = 0
    [px py] = gradient(p);
    u = ustar - px*dt;
    v = vstar - py*dt;

    cla; surface(sqrt(u.^2 + v.^2), 'edgecolor', 'none'); drawnow;
end

Espoo is full of furry animals.
Just a basic wave equation...


u  = zeros(192, 192);
du = zeros(192, 192);
[x y] = meshgrid(linspace(-1, 1, 192), linspace(-1, 1, 192));
for t = 0:0.002:0.4
    u = u + exp(-1000*((x-0.7*sin(7*t)).^2+(y-0.7*sin(11*t)-0.2).^2));
    u = u + 0.5*exp(-1000*((x+0.7*sin(5*t)).^2+(y+0.7).^2))*sin(3*31*t);

    du = du + del2(u);   
    u = u + du;
       
    cla; imagesc(u); drawnow;
end


...

Monday, 11 September 2017

I think I might see it slightly differently

I'm not convinced human minds truly understand the meaning of the questions asked or even the meaning of the answers we produce. Perhaps we simply react in a manner which minimizes the error function and this has come to be as a result of our kind of system adapting to the kinds of environments we've evolved in. Maybe the meaning we experience is at least partially illusory and related to emotional mechanisms which in turn are related survival and such.

Espoo
It seems that for a consciousness memories can be material as much a computer to its user so at least that part of the human being can be identical to a Philosophical zombie. We can lose our computers and still remain conscious even if without our computers we are in some ways lesser begins. However, if we keep continuously losing all our memories, are we ourselves anymore from one moment to another even if some kind of consciousness remains?

Inkoo
Basically, there is no scientific interpretation of the Schrödinger equation or Einstein equation. Science is just the best prediction, interpretations are philosophy. Though, in the end both philosophy and physics are just practical human endeavours which only deal in conditionals.

Lähderanta
Objects in relativity always "move" at the "speed" of light. Under normal circumstances, while they are stationary (relative to the observer), their "speed" is fully in the "direction of time". If they begin to move (in the normal sense), part of their available "speed" is "spent in spatial direction" and less remains for the "temporal direction". Similarly, gravity curves spacetime and the aforementioned "direction", so the objects direction of "movement" results in relative time dilation.

Beetle
I think it is safe to say that nobody knows what the nature of the universe was prior to big bang, but it's plausible that time loses meaning between Planck time and zero. So talking about time before the big bang is likely nonsensical. Some other (speculative) dimensions relevant to certain concerns might still exist, but they wouldn't have the same meaning to us as time does. Time doesn't exist as the kind of independent dimension our intuition makes it appear anyway so it's not so far fetched that the meaning of time might vanish entirely in the beginning.

Sunday, 23 July 2017

Many worlds interpretation and the hard problem of consciousness

According to the Everett many-worlds interpreration of quantum mechanics the huge dimensionality of the many-particle wave function implies existence of parallel universes in which all possibilities occur simultaneously. While this interpretation might appear to be at odds with Occam's razor it has far fewer postulates than its competitors. It is also true that the information related to alternative histories in some form or another is currently required to predict experimental observations.

Time evolution of the wave function in general is always deterministic. Thus when we ask questions such as why we experience one future instead of another the typical answer is that there is nothing special about any particular world since all possible worlds exist and we ask the same question in all of them (at least in all relevant to this question). Quantum jumps are a consequence of short timescale decoherence, but decoherence itself is also governed by deterministic evolution of the wave function.
One can imagine a machine that doubles a person in a way where one half of their brain is original and the other copied. Both of these now full brains (with half copied and half original) are going to ask why they are the one they are instead of the other. For them the outcome appears random, but from the point of view of the operator (of the copy machine) there is nothing random about it at all. This copy process can be considered as branching of the multiverse and it corresponds to natural evolution of the wave function and it is not in a relevant way subject to the no-cloning theorem.

The experience at least in some sense is deterministic even for the consciousness, it's just that something violent is continuously happening without its knowledge, but if the consciousness knew everything there is to know about the world, it could predict what's going to happen to them as much as a split brain patient or anyone about to experience a qualia they've never experienced before can ever be expected to be able to understand what's in store for them (ignoring the fact that they can't know everything there is to know about the world).

The practical expectation values are among other things a result of the number of universes in which particular outcomes happen. One has to calculate the sum of all possible wave functions (from all the universes) to find a priori probability distributions, but that's another story. Anyway, such a theory allows one to make physically meaningful predictions which are accurate and highly consistent with observations.

However, while for an objective observer there is no particular problem as one branch of the multiverse is as real as any other, an individual conscious observer will likely be quite unsatisfied by the lack of practical deterministic predictions, but even if there was no problem from the point of view of the physicist, for a philosopher the hard problem of consciousness remains.

The hard problem of consciousness is basically asking what if any is the difference between a person who experiences consciousness and a system which simply reacts identically to a conscious person, but doesn't truly experience anything? Not everyone believes there is any problem associated with the question, but one has to consider that according to general relativity time isn't unique or fundamental in a way that would appear necessary for the experience of present, i.e. there is no passage of time and no unique present exists, rather time may simply be a kind of dimension no different from space. How then could consciousness ever experience the passage of time as we appear to experience it? The question becomes what sets apart the present moment from the past and the future for the consciousness when physically there doesn't appear to be anything that could do so?

It has been suggested that time is an entanglement phenomenon and arises from quantum mechanics. Such a time is meaningful only in relation to some other quantum variables often considered to be of thermodynamical origin. Thermodynamics itself appears nothing more than unlikely (low entropy) microstates evolving (chaotically) into likely (high entropy) microstates (that greatly outnumber low entropy ones). The standard problem of time is asking why the universe appears to have started in a highly unlikely low entropy state (perhaps anthropic), but that's separate from the problem of time in relation to consciousness. In a static set time evolution is simply a direction. How could this give rise to a meaningful present moment necessary for consciousness is at best unclear.

Friday, 16 June 2017

Why does the universe exists?

Certain interpretation of Gödel's incompleteness theorems states that not all truths associated with particular systems can be seen from within the system (this is basically a consequence of liars paradox). Does this suggest that there must always be something more than simply the system itself? Maybe not, it may simply be that not all truths can be known even if they're there. However, if it had to be the case, then perhaps it would be necessary that there will always be more complexity "somewhere out there". Then maybe we could claim that it is necessary that the cosmos (all of existence) is necessarily infinitely complex. Perhaps knowing that the cosmos is infinitely complex, is one of those things that cannot be known. Never the less, if that were the case, it could solve a lot of foundational problems, because in such a cosmos nothing is fiction. We would expect to find anything somewhere within that set, even something like the birth of our universe and emergence of human consciousness.


"Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth."

Compared to the previous, questions asked by your everyday physicist seem almost trivial. We can always build scientific models and fit all available observations from our local neighborhood of the cosmos, the observable universe. Sooner or later that is. These models will explain the universe within reason and give rational and justified expectations of how it likely evolved in the past and how it can be expected to evolve in the future. These models are by definition our best guess and they will to the best of our ability serve the goals we have given them.


There remains, however, one deeply mysterious question. What is the nature of consciousness? Since we are the observer, the one who experiences finite rate for the passage of time among other things (generally speaking physics is tenseless as a consequence of general relativity), it is nontrivial to arrive at an understanding of how human consciousness could come to be. We can imagine a machine that externally speaking reacts to stimuli as we do, but it is less obvious what (if any) separates us from such a machine. If consciousness is nothing more than states of information evolving in time at a finite rate (that can be counted relative to some other states such as global entropy), it still isn't entirely obvious how our experience of the present can exist. Is it somehow complementary to something in the universe like certain aspects of quantum mechanics? Or is that too one of those questions that simply cannot be answered from within?

At least it seems quite likely that simply by constructing certain configuration of matter, the matter will acquire consciousness like we do. This is mind the problem might not be so severe. The question then becomes is there something special about the universe that is related to consciousness in some special way? Like nonlocality of quantum mechanics or perhaps the many worlds interpretation? Suppose there isn't anything particularly special about any of this, then in fact the most important postulate waiting for proof (to the extent anything can be proven) might be that the cosmos is necessarily infinitely complex. Given that, everything more or less follows.

The determinism of many worlds interpretation would be less problematic if there was no consciousness, because then there is nothing special about one path over another. What is, is the whole of multiverse. It's consciousness that experiences only one path and one present that is mysterious, because we would like to understand what determines we experience this path instead of some other. Perhaps one could inject free will and consciousness somewhere in there somehow, or not.

Saturday, 10 June 2017

What determines which universe you're going to experience?

1) Munchhausen's trilemma: Nothing can be proven unconditionally (as far as we know).

2) There is at least one consciousness that experiences things change at a finite rate (mine). It's probable that others exist as well.

3) Quantum mechanics is incomplete, because experimental results are best predicted by probabilistic models and probability is related to incomplete information.

4) General relativity implies that space and time are not independent of each other, fundamental or independent of mass-energy or in general information and events related to them.

5) Entropy grows with time.

6) Science cannot explain why the cosmos exists, only how the observable universe evolves. It tells us what future bets are justified based on the past. This is likely the best anyone can ever hope to do.

7) Purpose of postulates is to add to the predictive power of our existing models of reality. Supernatural is not a useful postulate as it does not make predictions that could be tested. Supernatural is not nonsense because it's probably false, it's nonsense because the postulate cannot be justified.

8) Fine-tuning of the observable universe either doesn't exist or the cosmos is infinitely complex and we must by necessity find ourselves somewhere within such set.

9) The observable universe probably hasn't always existed. The cosmos probably has, to the extent that it even has time. The origin of the observable universe is likely atemporal and thus talk of a cause is likely nonsense.

Thursday, 25 May 2017

How to win 1 M€ with 99% probability?

Play no limit roulette and bet 1 M€ on either black or red and always double your bet until you've made 1 M€ profit (then stop and never look back).

The joke is that you need to be able to go 127 M€ into debt to have 99% probability of winning 1 M€ as you need to be prepared to double in case you lose to win back your money and reach your goal. Your expectation value is always negative as you are likely to lose quite a lot when you do, but if you happen to have access to 127 M€, your chances of winning 1 M€ are approx. 99%.

A rational agent should never bet on negative expectation value, but given 99% rate of success, how many of us wouldn't? Besides of course banks and such to whom 127 M€ is nothing and only cumulative long term profits matter.


European roulette has slightly better odds than American since European has only one 0 instead of two (0 and 00). I wonder what's the limit in Monte Carlo?

If you have only 7 M€ limit (and start with 1 M€ bet), your chances of winning 1 M€ are still around 86%. If you have 100 k€ debt limit and start with 100 k€ bet, your chances of winning 1 M€ are 5.6%.

Beware the Barrenness of a Busy Life

clear all
MAXDEBT = 127;
for x = 1:1e6                       % test the strategy
    money = 0;                      % start with no money
    bet = 1;                        % starting bet
    while money < 1                 % play until you made 1 unit
        money = money - bet;        % bet
        if rand < 18/37             % roulette (18 red, 18 black and 0)
            money = money + 2*bet;  % if you win, you win double your bet
        end                         % otherwise lost the bet
        bet = 2*bet;                % double the bet after each round
        if money-bet<-MAXDEBT       % stop if at the limit
          break;
        end
    end
    mon(x) = money;
end

Ex = mean(mon)                      % ~ -0.2
MIN = min(mon)                      % -127
Pwin = sum(mon>0)/x                 % ~ 0.99