I am submitting Kayak to category #1 of the Essies. I hereby give the judges permission to distribute the archive for their own nefarious purposes. Abstract (excerpted from kayak.html): Kayak is a programming language in which every primitive operation, and hence every program, is invertible. Any Kayak procedure can be run either forwards or backwards, or even both within one invocation of the program. The syntax of Kayak is such that running a procedure in reverse is equivalent to running a characterwise reversal of that procedure forward. Of course, there are many useful operations, such as sorting, which inherently lose information about the input. Programmers wishing to implement such operations in Kayak can dump the unneeded information into an optional system-supplied bit bucket. Indeed, they must do so, because there is no other way to get rid of it. Building and running details: The Kayak interpreter is written in C++ using the STL. I have tested it only with Visual C++ 6.0, but it should work with any standards-compliant compiler. bf2kayak.pl is written in Perl and should be very portable (though you might have to change the first line). To run a Kayak program just specify it on the command line. You can also specify it in reverse; see the html file for details.