Turing Drawings Followup
Late last night, I was surprised when a friend informed me that a fork of my Turing Drawings project had made its way to the front page of Hacker News. The fork by Darius Bacon includes new features such as the ability to make the rendering faster or slower, as well as a new backend which compiles the Turing machines to asm.js instead of interpreting them, offering impressive speedups. The Hacker News community responded with great enthusiasm and found many interesting drawings, some of which I’ve collected below:
- Scooty lightning
- Spilled drink
- Donkey kong
- Sewing machine
- In 3 acts
- Laser rain
- Gothic Sierpinski
Posters also contributed interesting bits of information. It seems that the idea behind Turing Drawings is not entirely new, but rather an independent re-discovery of an existing formalism called a Turmite, with a finite tape instead of an infinite one. Another poster had the following insight:
The world is finite, so every drawing eventually loops. However, the state space is something like k * 2^18 * n^(2^18), where k is the number of states and n the number of symbols. For the default (4, 3) this is 3.125 * 10^125080, so you could be waiting for a while :)
Someone associated with Wolfram even suggested that it may be possible to participate in a summer school project involving 2D Turing Machines:
Wolframite here: these would make a good summer school project for our summer school (plug: the 2013 one is coming up, apply at https://www.wolframscience.com/summerschool/ if you’re interested in this kind of stuff and want to do a 3-week project).
In fact I studied the space-filling behavior of precisely these 2D Turing machines in 2009. For low numbers of states and colors you can enumerate them exhaustively and calculate the distribution of space-filling efficiency (log-normal, if anyone is interested).
The full spectrum of behavior is quite fascinating to catalog. All these kinds of simple computational system have a character and ‘zaniness’ all their own.
The idea behind Turing Drawings came to me while pondering generative art. I had already experimented with various approaches, such as plotting mathematical functions of two-variables, but had little success in creating interesting patterns. Intuitively, it seemed that Turing machines would be an ideal formalism because, even if they were randomly generated in a naive fashion, they would have a high likelihood of creating complex (and potentially interesting) visual patterns as a side effect of their computational process.
Users of Turing Drawings may find themselves clicking the “random” button many times before seeing anything interesting, but through the power of crowdsourcing, it becomes possible to explore hundreds of thousands of patterns in a relatively short time. Turing Drawings is a toy, but it’s interesting to observe the dynamics of chaos and entropy at play, and to see order come out of randomness and very simple rules.
It’s the first time one of my hobby projects gathers so much attention online (even foreign blogs are covering it :)). I’m happy to see that by making it open source, it’s been possible for Turing Drawings to take on a life of its own. Someone has already informed me that they were interested in adding features to visualize the transitions and better analyze the behavior of the machines. I anticipate that after the Hacker News coverage, more forks are likely to occur.
In case anyone is interested, I should also mention that I tried to apply the idea of Turing Drawings to procedural music generation, with moderate success. The project is called Turing Tunes, and is also open source.