One of the most interesting questions of our time is "what is computation?". This raises all sorts of additional intriguing questions like "in what sense is a JavaScript evaluator the same as a PDP-11?", "is an iPhone more powerful than an abacus, and if so, why?", "can the human mind be mapped onto a physical medium?", and more. The first two questions can be answered with the use of a model of computation called a Turing Machine (named after its creator, Alan M. Turing).
Now, a Turing Machine is probably not anyone's first choice when posed with a typical programming problem. It lacks much of the richness that characterizes most modern languages (for instance, it doesn't even provide a way to create subroutines), but where it really shines is its delightful simplicity.
This repository contains the source code for a web app that allows you to create and run Turing Machines of your own design. I hope you have as much fun using it as I did writing it.