Up: Foolishnesses | [Related] «^» «T» |
Tuesday, March 7, 2000
My Turing Machine
By Paul Ford
I made my own Turing Machine. Or perhaps I am a Turing Machine and I'm just looking in the mirror.
Recently, I've been reading a lot about the history of computers, and dusting up on my study of Alan Turing, who, in addition to really enjoying a children's BBC radio program me about lambs well into his 30's, also made some contributions to the theory of computation.
I took up his challenge, and decided to see if I could actually do all my work writing Ftrain on a Turing machine, so I went down to my workshop last weekend and coded my own binary-state infinite computation kernel in assembler (which is, I know, sort of cheating). Today, it runs above the Linux kernel as a virtual machine. I'm hoping to bootstrap my 400 MhZ Intel box in the next 2 weeks with the new Turing Kernel, bypassing Linux entirely.
To show you my progress, I wanted to provide some screenshots of the system's user interface, which I think is both novel and elegant. They're greatly reduced from full screen size, but I think each captures the essence of the OS very well. In case you're wondering, the input comes from hitting the space bar to represent a value of "0" and hitting the enter key to represent a value of "1." Pure interface simplicity, in under 20 bytes of code (in the future I hope to get the OS down to no more than 1 bit).
Screenshot 1: Initial Phase/Bootup
I was pretty excited when I got my Turing machine to boot for the first time and saw this screen.
Screenshot 2: The Soundex Algorithm
The system has launched and is applying a modified, internationalized version Donald Knuth's Soundex algorithm to a corpus of texts generated by a large (but not infinite) number of lemurs leaping across a 20 meter membrane Unicode keyboard. It is simultaneously running the Emacs text editor, on which I am editing this entry by referring to the binary ASCII codes for each letter and then entering them against the one-bit stack. It's all very technical, and extremely advanced stuff, so I won't keep hammering on the details.
Screenshot 3: New Color Scheme
I found the regular binary color scheme too flat, so after reading the Apple Macintosh usability guidelines, I added blue and brown and got rid of the overpowering black. Blue or brown both indicate a non-null binary value, so the basic nature of the system is preserved; the brown is just there as eye candy, like the transparent sliders on Macintosh's new "Aqua" interface. The system is computing all the primes over 5.8 Ã 10 in size, a computation which will take at least all the time left in the universe.
Screenshot 4: The Blue Screen of Death
On crashes, this is the standard error/debug screen. Clean interface, no bells and whistles.
Screenshot 5: Viewing the Ftrain Web Site via the Power of SMP
I wrote a beta Web browser in the last ten minutes (full ECMAScript support, no XML or CSS2 support), but found the single-bit model incredibly slow; in order to speed the process of viewing and rendering HTML pages, I'll need to operate several Turing machines in parallel, which, at a cost of $2000 per computer and due to the complexity of networking, may take some time to coordinate. The above is a simulated parallel array of Turing machines rendering this HTML page at several bits a minute (1/100th scale). In the future I may look at quantum Turing machines, which will process binary data in trillions of parallel universes at once.
That's it for now! If you'd like to contribute to the development, please drop me a line, remembering that my time is extraordinarily scarce due to my involvement in such high-level, and frankly necessary, engineering projects as this one.