My first thought was that while this was really cool, it does seem to have only a finite tape; I would be quite prepared to believe it was possible to have an unbounded tape, but my mind would be blown. The author admits that the tape is indeed finite.
If the conversation is concerned with running Hello world it doesn't matter that an AppleII can't do everything, for our purposes it can do anything. If we expand the conversation a little but though we realize this machine is unable to run many things we find useful today.
I am really laughing with their publications:
For example skip to page 114, "Automated Distributed Execution of LLVM code using SQL JIT Compilation" with such gems as:
"The resulting PL/pgSQL code can then be executed
on any database system, as long as that database system
"Another solution to distributed programming has been
proposed by Microsoft with their innovative Excel system. In large companies, distributed execution can be achieved using Microsoft Excel by having hundreds of people all sitting on their own machine working with Excel spreadsheets. These hundreds of people combined can easily do the work of a single database server"
"For easy reproducibility, we have included a SHA-3 hash
of the complete source code . If you want to reproduce the experiments, simply reverse this hash and run the provided source code. "
I'm not putting more quotes because they would be spoilers.
"Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."
You can, of course, safely drop the "C or Fortran" part.
Every program I've ever written, if it keeps getting used, maintained and expanded after ~2 years it gets it's own programming language, and therefore usually becomes turing-complete.
The most powerful abstraction one can make in an application is the ability to quickly combine large parts of the application into new functionalities, effectively implementing a programming language. Usually this starts with "macros": the ability to specify sequences to be executed in series with either fully implicit data-passing (e.g. we're always acting on this global state), and then someone points out that variables would be really good, and then you do that : local, named variables in macros. And there's your programming language.
And this is why I like emacs so much: within it customisability and extendableness is a product of the programming paradigm, and you don't even need to allow the user explicitly. The online docs, the debugger that automatically comes up when needed, the lisp mechanisms like advices and live editing of the running program furnish a great environment where one is not confined to the application designer's decisions, and where making customisations and extensions are really approachable.
kill -BOVIK -1 # send SIGBOVIK to all processes, permissions permitting
GunPoint: boss made the presentation mandatory; attendance is checked.
Disap-Point: presenter forgot laptop in hotel, uses overhead projector with markers.
NeedlePoint: presenter applied cross-stitch simulating Script-Fu in GIMP to images; people at the back clean their glasses and squint in disbelief.
CounterPoint: presenter keeps jumping ahead twenty slides and working backward, then forward again.
StandPoint: large crowd shows up, enticed by free snacks.