ICFP 2007
Aug 10 2007, 23:40 EDT [updated Aug 10 2007, 23:48 EDT]
Like past years bobsalive and I did the ICFP contest right. Our purchase list consisted of Omaha steaks, Akona coffee, Yeungling larger, and Jefferson's Reserve burboun (and a liberal sprinkling of eggs and bacon). Grads students may kick our ass in the final tally but we'll eat and drink better getting there. We've done the ICFP as a BBQ/beers/hang out for the past five years with varying levels of seriousness and it always turns out to be a good time.

Bob is a singer who dances - an Electrical Engineer who does some programming. I'm a dancer who sings - a Computer Engineer who has an oscillascope but doesn't use it. The straight programming aspect falls on my shoulders with Bob as a gut check to keep me from doing anything stupid. The easiest thing to do wrong is to misinterpret the problem so two heads are much much better than one.

Unfortunately for us this year's task favored large teams (like last year). It had a strong "hunt the wumpus" component where following clues meant as much as decent programming. We found the first clue by chance: our image rendering program did the "composite" operation back-to-front so the wrong bitmap was displayed. The organizers had left a clue that was supposed to be immediately over written but our error made sure it was pushed to the top every time.

Unfortunately like last year Python just wouldn't cut it for the implementation. Some years the problem lends itself to rapid development and flexibility and python shines. Some years the problem requires bare knuckle speed and C is the only way to go. We had a working implementation in just a couple hours (good) but it only ran the simulated language at 25 iterations per second (bad). The provided program was 7MB and required 2 million iterations to run so our version took hours to do one run. Other teams were claiming 20k-40k iterations per second so I knew we could do better.

I rewrote the interpreter in C and it ran at -- 10 iterations per second! And it was buggy. Sh*t. I managed to up that to 250 iterations per second but our weekend was essentially over. We had a whole day left but were out of steam. The "Sealab Technicians" finished at 150 out of the 350 teams that actually submitted scores.

To add insult to injury bobsalive smashed up my car Monday morning while leaving his Jeep unscathed. He honked his horn and shouted "screw you and the horse you rode in on!" or maybe it was "sorry, there isn't usually a car there. Let me know about the door."

Will we do it again next year? Hell yeah.

This was the social post about the ICFP. I'll have a couple follow ups about the geekier bits. One will be a contest HOWTO and the other will describe the implementation of the interpreter I did after the contest that runs at a blazing 200k iterations per second (1000 times faster than my first attempt). I don't write C much anymore and my ego wouldn't allow me to stop with a half assed implementation.

Here are two of my older writeups (I don't do them every year). 2002 and 2004.

Archives
  • None Yet

0.01 seconds
jackdied.com 2003-2007