There’s something about geeky DIY projects that strike a nerve with the Internet. Case in point, the homebrew Turing Machine built by Mike Davey. He had no ulterior motive than to make something satisfying for himself, and literally overnight he was an Internet sensation. The video has been watched almost two hundred thousand times, and he’s been in contact with the blokes at Bletchley Park and the Computer History Museum. I spoke with Mike by email and telephone recently to learn a little more about the man, and his creation.
CG: First and foremost, we want to know who is Mike Davey, and what does he do?
MIKE: I’ve worked in the printing industry all my life. I’ve never had any formal training in EE, CS, fabrication, machining, or math much beyond algebra for that matter. I strongly believe in Wisconsin’s goal of life long learning though and have picked up many of these things as I’ve needed them. I got my first computer in 1979 and have been programming ever since. Like many people in robots and technology I started taking things apart at an early age. Over the years I’ve built many things like: telescope, metal lathe, CNC router, furniture, RC boats and planes, robots, clocks. I really just enjoy building things, and it’s best if there is no pressure to get it done. I now spend most of my work time developing Web based e-commerce systems for the printing industry. And just to really throw all stereotypes out the window, I’m a partner in a fish farm that raises and sells tilapia fry and fingerlings to schools for use in agriculture training.
CG: So what was the motivation for making the Turing machine? How long did it take?
MIKE: I love to build things, it’s never been done, and the picture I had in my head of it was just too cool to not build it. When I realized it could be done, I just had to. I wasn’t really keeping track of time on the project but I’m guessing it’s in the 150 – 200 hour range. I know I started the end of last October and I finished the end of February. So that works out to maybe 18 weeks and I can’t get more than about 10 hours a week worth of work into a project, normally it is much less.
CG: Reader James Rowland asks on our original post “Why did you not just use dots for your bits. There is a lot of excess involved in drawing out ones and zeroes while hardly any functionality is added.”
MIKE: This is something that has come up a few times. For me it was really about aesthetics and not about efficiency. When it come to something like this the real question is where do you stop. My goal was “the” Turing machine that I see in my mind when I think about them. That Turing machine is the one described in Turing’s paper, with numbers and letters written on a strip of paper. Using dots on the tape would have been much faster and more efficient, but if I went that far then why even write on the tape at all, the bits could be written as magnetic fields saved on a ferric tape. I could go on, but I’m sure you get the point. For me, in this project, it was all about how it looked and worked. Thinking about it now, I also think that’s why the Turing machine I built hit a nerve with so many geeks, it fit the vision that so many of us have in our minds about what a Turing machine should look like.
CG: Our own Devin Coldewey wanted to try to compare the Turing machine with modern-day computer specifications. Namely, “the machine’s memory is limited only by the tape, but how many positions are on the 1000′ roll? How long would a megabyte be? And what is its maximum speed, assuming it is reading one position after another? If each read/write is considered an operation, you could probably extrapolate Hz.”
MIKE: I have given some thought to as to how my Turing machines compares to what we now think of as computers. Each cell on the tape is 1.125″ wide, so there are about 9500 cell on the 1000′ tape. The way the machine runs now, writing only two characters, the tape will store about 1150 bytes of data, or just over 1K. You’d need about 870 of these 1000′ rolls to save a megabyte of data. Not really very efficient and as a friend said, I priced infinite tapes and they weren’t in my budget. The interesting part is that while magnetic hard drives are limited to storing ones and zeros only, my Turing machine tape could be written with a larger character set. If you had a character set of 256 symbols to write on the tape, then the 1000′ tape could hold 1150K worth of data.
Each operation of the Turing machine takes a different amount of time. Each operation of the Turing machine consists of three parts, reading, erasing, and writing. While every operation requires a read, there are times when the tape is only: written to, only erased from, or both erased and written to. If only a read is needed the operation takes about 1 second. If all three functions are needed in an operation the total time is closer to 9 seconds. Most of the sets of states that make up a Turing “program” are a mix of operations so the speed of the machine is dependent on the program that it is running. The subtraction example I have done averages about 3.1 operations per second. The Busy Beaver programs spend a lot more time erasing and writing so its average is slower at 6.2 seconds per operation.
In comparison to even the very first electronic computers this is very very slow. This will be a gross over simplification but here goes, the first PCs ran at 5Mhz and operated on an 8 bit byte. So that’s 5,000,000 * 8 or 40,000,000 bits per second. My Turing machine averages about 0.25 bits per second. So what took one of the early PCs 1 second to accomplish the Turing machine could do in just five short years. (Now there is a lot of rounding in my math there, and I know the PC didn’t do one operation per clock cycle, but the contrast is still remarkable. )
After a round of back-and-forth over email, Mike and I had a chance to chat by telephone for a bit. I don’t take particularly good notes during phone calls, but the conversation yielded some interesting observations, which I’ll summarize here. Any errors or omissions in what follows are strictly mine.
Mike was a member of the Chicago Robotics Group for a long time, and even served as the president of that organization for a spell. It’s a four hour drive from his home in Wisconsin to Chicago, IL, and on the long drives to and from ChiBots meetings Mike would engage in lots of idle technical conversation with carpooling roboticists. Mike’s pretty sure that the first idea for building the Turning machine occurred on one of these treks. He really had no impetus to build the thing aside from pure self satisfaction.
It’s easy to acribe all manner of secondary benefits — like computer theory education — to the Turing machine, but none of these were in Mike’s mind as he built it. He simply likes to build things! When asked whether any of the educational benefits of the Turing machine resonate with Mike, he responded that he thinks that “people need to just do things! Don’t wait for someone else to build something for you!”
We spoke a little about the design decisions Mike made, and how the device might be improved (or built more faithfully, sans a microcontroller, for example). In line with his “just do it” attitude, Mike critiqued the geek fascination with perfection. There are undoubtedly lots of ways in which Mike could have built a better Turing machine, but this effort did what he envisioned, and did it “well enough”. A hard-core perfectionist might build a specific device to cut the gears used in the Turing machine, leading to a kind of factory factory factory situation (see also: yak shaving), and the Turing machine would never get built. This is a very real instance where “the perfect is the enemy of the good”: had Mike waited to perfect every aspect of the machine, he’d never have finished it!
Mike, like me, is a technology generalist: he’s not formally educated in any technology disciplines, and all of his programming and hardware skills are self-taught. Mike thinks this generalist attitude make a “good enough is good enough” approach perfectly acceptable for his personal projects. That’s not to say that Mike is a slacker. He admits that he likes a well designed, beautiful product as much as the next geek; but even those beautiful devices have compromises.
Math is cool, logic is cool, and Turing machines are cool, but I don’t find them interesting enough to argue the finer points of the difference between 2 character and 3 character Busy Beaver problems. (Maybe that’s a little harsh, but the really fine details of a concept aren’t really that import to me, being a generalist has served me well enough all these years.)”
I’m with you 100%, Mike!
Mike has shared most of the data necessary for enterprising hackers to build their own Turing machines. He’s been in contact with a couple of college professors who are probably going to create their own, based on Mike’s work. As for the original, he’s going to show it off at a couple speaking engagements in the coming months, and then he’s not sure. He’s talking with the Computer History Museum, as well as a couple of other possible homes for his creation.
What’s next for Mike?
I’m currently working on an all wooden clock. I’ve always liked clocks. I built my first grandfather clock when I was 17. Thirty plus years later I still have it and it still runs. Clocks seem to always be a fascination for geeks, I guess I’m no different. I’m also an avid RC pilot and have a few planes in the works. I have no idea what the next robotics/electronics project will be. No doubt I’ll see something that sparks an idea and off I’ll go again.
Thanks a lot to Mike Davey for not only making a very cool Turing machine, but for taking the time to talk to us about it. Now get out there, geeks, follow Mike’s example, and build something cool!!