Introducing

Quine-Relay

Java

The purpose of this task was to understand the Ken Thompson paper Reflections of trusting the trust, and how a self-replicating program can be used to create a theoretically invisible security flaw in the compiler. The program would be started by a provided runner.sh file and would begin compiling, print one character of "Gabe Huinker" and then rewrite itself into the new Ouroboros.java file. Because eventually after printing all characters in "Gabe Huinker" the program will be how it was at the beginning of execution, the program is considered an Ouroboros program.