Friday, July 11, 2008

ICFP 2008 Rules: A Geeky Disappointment

The annual ICFP Programming Contest is one of the highest profile programming contests in the world. They publish a task --- e.g., write a program which processes a contrived formal language or which implements a strategy to win a novel game --- and give 3 days to solve it. (Or 1 day; see below.) While the contest is associated with the International Conference on Functional Programming, it is open to anyone in the world.

Many years I have tuned in to check the announced task, and decided whether it looks like enough fun to do. Only once has a fun task and a good mood coincided, and I entered the "lightning" subtournament (with only 24 hours to produce a solution) for the 2004 contest. This year the task will be announced this afternoon, so I checked the website to look at the rules. And ugh.

For years, the contest designed have done clever things to dodge the difficulties of running all conceivable user-submitted program on their test machines. It's not a trivial problem. There are the usual problems of malicious programs. The contest encourages entries in all possible programming languages --- one of the main "prizes" is an announcement, at the conference, of bragging rights for the language used in the winning programs. And the contest has the usual anti-credentialist esthetic of the mathematical sciences, proudly taking entries from anywhere, even some marginal surplus MacII kept running in a junior high-school outside Jakarta.

Many entries in various previous years have finessed the problem by (roughly speaking) requiring entrants to send in the results of their programs, rather than sending in executable programs in standard programming languages. Alas, I find that this year they've switched to a brute force solution that I don't much like like in principle, and which in practice looks like too much trouble for me. Now they want the participants to download a standardized version of Linux and get their programs running under that. It's not a terrible solution, but it isn't particularly elegant either, and it would call for me to spend at least an hour or two downloading and preparing before the contest. I can't be bothered, given that I probably only had a 25% chance of being motivated by this year's task anyway.

Can I redirect my frustrated geeky energies to something more obviously productive? Um.