For those who cannot decipher it themselves:
The main idea is to build the output string from the source itself. The main function J just returns characters at given positions (it can return more than one). There are several ways how to get the positions, including octal literals, functions returning numbers, or some other tricks. Note that 42 is present in both versions, the place that generates "h" generates it from itself,
ack is mentioned, and
system does not do anything bad here. I also like
hex 16 in the second version, it might be fun to include
oct 8 as well.