01: Universal Redirect Locomotive
Did you ever lie awake at night wondering if the HTTP spec was Turing-complete? Just me? Damn.
First, a bit of background. The hypertext transfer protocol is the web’s standard way of piping bits around the globe. It’s the agreement between servers and clients for how to send, retrieve, modify, and delete data (and properties of that data) over the web. For the purpose of this exercise, we can ignore everything in the spec but the URL and the response headers. Those are all you need to build a computer.
The Universal Redirect Locomotive is a stateless web application that serves Turing Machines. It relies on two premises: first, a Turing Machine (its program, input, and current state) can be represented in a URL; and second, web clients will follow a redirect response sent by the server. All the server needs to do is read the machine’s representation from the request and iterate the machine one step. The server is only concerned with the transition that corresponds with the current state and the character currently under the read-write head. Then it sends the modified representation back to the client as a redirect.
If the web client follows the redirect, the changing representations bouncing back and forth are what perform the computation. Yes, you heard that right: the program executes by following a redirect loop to its bitter end. The process continues until the machine halts by either reaching a state where no transition exists (the current state and given input have no matches in the transition list) or by running the read-write head off the end of the tape.
Announcing!

1010: Ten Computers in Ten Months
1010 is a scope-restricted, long form variant of the “N in N” schemes you may have heard of before (7 in 7, 4 in 4). But instead of a fast-paced but freeform event, 1010 will be slow and focused and bounded: I will build ten computers in ten months.
My motivation? I miss hacking hardware. As a coder it’s easy to forget about the secret world of silicon and copper. So to get back into it, I’m going to design and build some hardware, and you’re going to keep me honest. I’m not talking about assembling my own Linux box with some fancy motherboard and high-end graphics card and lots of cursing about drivers. Oh, no. I’m going to get neck deep in implementation details, sketch out machine architectures, devise instruction sets, and wire data busses by hand. This is gonna be hardcore.
The rules:
Build one Turing-Complete computation device each month for ten consecutive months. (Bonus points for esoteric hardware that still computes.)
Devices must be started and completed in the same calendar month. (Yes, August has advantages over February; deal.)
Each computation device needs to be user-programmable to run arbitrary code. Devices will be documented and posted on the this site by the last day of the month, with example code.