Software is full of circular dependencies if you look deep enough. Compilers
written in the language they compile are the most obvious example, but not the
only one. To compile a kernel, you need a running kernel. Linkers, build
systems, shells. Even text editors, if you want to write the code instead of
just downloading it. How do you break this cycle? Since the bootstrapping
problem has first come to my attention, I've been drawn to
this unique area of software engineering. Not out of fear that someone would
try to implement a trusting trust attack, but simply as an interesting
challenge.