"When he has succeeded in being Caesar's friend, he has none the less failed to get what he was seeking. For what is it that every man is seeking? To live securely, to be happy, to do everything as he wishes to do, not to be hindered, not to be subject to compulsion … If he is not invited [by Caesar], he is hurt, and if he is invited, he dines like a slave at a master's table, all the time careful not to say or do something foolish … When did you sleep more peacefully, now or before you became Caesar's friend?" Epictetus. Book IV, Chapter 1.
"Men in great place are thrice servants: servants to the sovereign or state, servants of fame, and servants of business, so as they have no freedom, neither in their persons, nor in their actions, nor in their times." Francis Bacon. Essays, Of Great Place.
"When, therefore, neither those who are styled kings live as they will, nor the friends of these kings, what free men are left? Seek and you will find. For nature has given you resources to find the truth." Epictetus. Book IV, Chapter 1.
I noticed wikipedia has a new visualization for the Riemann zeta function. However I'm not sure it's quite best way to show it in every case. This is how it looks:
This is a complex function so each point in 2D-plane has phase and amplitude. In the domain coloring scheme the phase is represented by hue (color) and amplitude by value (intensity). This particular image has some modulo coloring of the amplitude etc. and the difference can be most easily seen by comparing it to these 3D-plots I made where the hue independently represents the phase and amplitude is simply represented by the 3rd dimension.
The second image has phase exaggerated quite a lot to make it clear that for these values the true change of phase is quite different from what it appears in the wikipedia image.
While I was at it, I also plotted the Mandelbrot fractal in terms of the complex value after iteration instead of number of iterations as it's usually done. This too resulted in a rather trippy image. Though obviously hue coloring tends to always results in rather trippy images.
Here hue represents phase angle of the complex number and value (intensity) the amplitude. 3D representation is also rather interesting.
Here only hue is varied.
N = 1024;
s = zeros(N, N);
for y = 1:N
for x = 1:N
z0 = (6*x/N-3.5) + j*(6*y/N-3);
z = 0;
iteration = 0;
max_iteration = 256;
while norm(z) < 8 && iteration < max_iteration
z = z^2 + z0;
iteration = iteration + 1;
end
s(x, y) = log(iteration);
S(x, y) = z;
end
end
figure;
imagesc(s);
truesize;
colormap(hot(256));
h = angle(S);
h = h-min(min(h));
h = h/max(max(h));
v = abs(S);
hsv(:,:,1) = h;
hsv(:,:,2) = 1;
hsv(:,:,3) = 1;
% hsv(:,:,3) = v/max(max(v));
rgb = hsv2rgb(hsv);
figure;
x = 6*[1:N]/N-3.5;
y = 6*[1:N]/N-3;
surf(x, y, v, rgb, 'edgecolor', 'none');
shading interp;
figure;
image(x, y, rgb);
imwrite(rgb, 'compmand.png', 'png')
How to test shaders with minimal effort on OSX (though it'll work with relatively minor changes on linux as well)...
How about this shit (http://www.pouet.net/prod.php?which=58666):
[bits 32]
; Use Python to load the SDL library, open an SDL window, mmap us into memory,
; then start the intro.
db `python -c"from ctypes import *;S=CDLL('libSDL.so');`
db `CFUNCTYPE(int)(S.mmap(0,1,7,2,S.open('$0',2),0)+167)`
db `(S.SDL_SetVideoMode(640,480,0,0),S.SDL_PollEvent,S.SDL_Flip);" #`
; Global constants
%define XRES 640 ; X resolution of screen
%define YRES 480 ; Y resolution of screen
%define VOXEL_SIZE 4 ; Size of a voxel (2^VOXEL_SIZE)
%define MAXITS 32 ; Maximum number of iterations when marching
%define ROT_SPEED 120 ; Speed of rotation (larger = slower)
; Pseudonyms for stack addresses within main()
%define SURFACE ebp + 08 ; Pointer to an SDL_Surface
%define SDL_POLLEVENT ebp + 12 ; Pointer to SDL_Pollevent() function
%define SDL_FLIP ebp + 16 ; Pointer to SDL_Flip() function
main:
push ebp
mov ebp, esp
...
This fellow does interesting trick to avoid having to make a proper binary on linux, resulting in 512 byte demo.
One can dynamically (or sometimes even not so dynamically) load function addresses in C as well.
Looks like one can save 4 bytes in the gzip header technique by just leaving last 4 out. They are crc-32, so they aren't really needed. It'll say truncated input, but works just fine. Previous code gives 675 byte executable (Mac).
I'm not troubled by the fact that there are (mathematical) problems which I do not understand. However, I'm deeply troubled that there are problems which I do understand and yet remain unable to solve.
Suppose the Universe is simply a big computer, a deterministic binary calculator, simple naive information, bit flips and other trivial operations. A machine which simply must exist like the value of pi must be whatever it is, something as simple (in relative terms) as natural numbers for some reason. Suppose we’ll never exceed the speed of light or build a time machine because the Universe doesn’t support those ideas. Suppose all known mysteries of math will have a straightforward closure. P=NP, co-primes can be factored in polynomial time, a perfect games of chess can be found, go gets solved. What goes up, must come down. All fundamental principles will be known. Standard model, quantum mechanics and relativity will merge to give us the theory of everything. Life is just a matter of complexity, mind nothing more than a complex machine, free will an illusion. Life after death doesn’t exit. Art is a simple pattern corresponding to our similarity, brain states, math, and evolutionary history of our species. Love just chemistry. Moore’s law hits a limit. Peace on earth, a cure for cancer. All predictable. All controllable by a perfect machine. AI will surpass human capacity in every way imaginable, but will reveal nothing fundamentally unexpected or unpredictable. Suppose normal biological death will be cured so we may live forever if we so desire and choose.
Then what?
What reason will there be to live? Other than perhaps the human compulsion, the need to feel, but will it be any different from the chemical high of heroin? Was it ever different? Ever noble? Does it need to be? Was it always arbitrary? When all is said and done, would it not be better to remain small, to remain stupid and weak, out of control, be able to forget so we might feel again like the first time? But is this not self deception? Does it have value? Does anything have value? Perhaps not really, but it may not matter, because we are small today and will undoubtedly remain small for years to come. Only in the far distant future can we hope to see far enough on our path to give meaningful answers to these questions.
What about living (forever)? Why does it have value? Why does continuity have value? Because I feel so? But why do I feel so? What difference does it make? Perhaps nothing, and it might be that living a million years would be enough, I wouldn’t know, I can't know, until I’ve lived a million years.
Perhaps you really can’t get an ought from an is. Perhaps it all is what it is, trivial.
I still wish I could have my millions of euros, millions of years and millions of lives, for some reason. I wish to be, do and will. And who’s to say there’s anything wrong with that.
But not to give up on hope entirely... There are still wondrous mysteries and things like the infinity appearing in all of math and science, and many wonderful problems, something which might imply the Universe is still a bit more complicated and wonderful than we can imagine. The quantum mechanics possibly implying there is a reality hidden from us containing an amount of information which is possibly infinitely greater than that which we can observe now (or not). Perhaps there is hope and the Universe is still much greater than we've ever been able to imagine. I just hope I get to experience someday at least some of that greatness.
http://en.wikipedia.org/wiki/Necessitarianism
—
Halting problem? What problem? It is well know that “...any finite-state machine, if left completely to itself, will fall eventually into a perfectly periodic repetitive pattern. The duration of this repeating pattern cannot exceed the number of internal states of the machine…”
An ant starts to crawl along a taut rubber rope 1 km long at a speed of 1 cm per second (relative to the rubber it is crawling on). At the same time, the rope starts to stretch by 1 km per second (both in front of and behind the ant, so that after 1 second it is 2 km long, after 2 seconds it is 3 km long, etc).
When will the ant reach the end of the rope?
...the answer in the end.
----
Intel Ivy Bridge CPUs (rdrand instruction) and Raspberry Pi have a hardware random number generator which allows the production of seemingly very secure non-deterministic random numbers from thermal etc. sources for cryptographic purposes.
I also noticed that my MacBook Air uses Ivy Bridge i5 which comes with the rdrand instrunction. However the gcc on MacOS didn't seem to support this instruction so I wrote an assembly program (using nasm) to test if I get random numbers out of it. Seemed to work.
I tested the hwrng on the rpi and found that FIPS 140-2 gives similar results to /dev/urandom on linux, however /dev/hwrng on rpi should be intrincically non-deterministic, or at least similarly non-deterministic as thermal noise. The performance seems to be around 107 kB/s, rdrand appeared to give around 240 MB/s on a single core and single thread. I didn't bother tweaking. The official figure is supposedly at least 500 MB/s.
It's another question whether one can trust these hardware implementations or not as we have no sure way of knowing what they actually do and hardware manufacturer may be collaborating with NSA for example and get pseudorandom numbers anyway which might have a pattern identifiable by someone who knows how it was done.
; nasm -f macho64 rdr.asm ; nasm -f elf64 rdr.asm bits 64 global rdr section .text rdr: rdrand rax ; jnc rdr ; if CF=0, random data not available, try again, however, does not occur on Ivy Bridge so can be ignored at the moment ret ; gcc rdr.c rdr.o #include <stdio.h> int rdr(); int main() { int x; for(x=0; x<256*256*256*2; x++) printf("%c", rdr()); } #!/bin/bash clear dd if=/dev/urandom of=./urandom.bin count=65536 ./a.out > hwrandom.bin echo echo --rdrand--rdrand--rdrand--rdrand-- echo cat hwrandom.bin | rngtest echo echo --urandom--urandom--urandom--urandom-- echo cat urandom.bin | rngtest rngtest: starting FIPS tests... rngtest: entropy source exhausted! rngtest: bits received from input: 268435456 rngtest: FIPS 140-2 successes: 13413 rngtest: FIPS 140-2 failures: 8 rngtest: FIPS 140-2(2001-10-10) Monobit: 1 rngtest: FIPS 140-2(2001-10-10) Poker: 0 rngtest: FIPS 140-2(2001-10-10) Runs: 5 rngtest: FIPS 140-2(2001-10-10) Long run: 2 rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
... this is about 60MS/s, for the xcorr calculation discussed before it would be 2x20 MS/s (2 forwards, 1 backwards).
----
Eating one banana gives you higher dose of radiation than living next to a nuclear power plant for a year. Sleeping next to another human for 100 days equals one dental x-ray.
----
…the answer to the ant problem being about 8.8e43421 years.
(A huge, yet finite number much larger than any quantity in this universe.)