ICFP Contest 2008

This year’s ICFP programming contest was this past weekend. This year’s contest was to write a program to control a simulated Mars rover and get it to its home base. While avoiding Martians. 🙂

Before the contest, we (my ‘team’) were planning on working in D. A mate of mine had wanted an excuse to learn it, and he figured since in past contests we had to drop back into C for various things, we should use something closer to the metal. But when it came time for the contest, he flaked out, so I went with Python. It’s kind of my default if-all-else-is-equal thing, as it makes life easy.

I got off to a bit of a slow start – couldn’t get their test server running on my machine. After tinkering with video drivers and setting up a quick hack to just send ‘forward’ commands, I had my little rover running quickly into craters. Progress! To be fair to the organizers, they had a LiveCD in which everything ran fine. But I wanted to develop in my environment, and I was having trouble running it in VMWare on my really-in-need-of-replacing home laptop.

Then came the hours (late Friday night my time) of trying to remember math I hadn’t really needed to use in a decade. TDD was really nice when it came to the “get the angle I need to be aimed at to get home” bit – I could come up with test cases where I knew the answer, but I kept messing up the formula (you shouldn’t code while sleepy). But at least I knew when I was done.

I had the basics working ok on Saturday, but then I migraine took me out for a bit, and a bunch of stuff came up on Sunday, and by Monday I just needed a break. Oh well, there’s always next year. 🙂

I didn’t have quite as much fun with it as past years. Mostly because the people I was going to work on it with didn’t have time. But also there were a lot of details that you needed to get under control but which didn’t really excite me. I think about the point I read the bit about needed to change TCP/IP settings to get it to run fast enough I started getting a sinking feeling about it all. Didn’t have the same completely-unlike-my-normal routine that past ones did. Also, the past few years had a way to upload things as you went along and see how you were doing on a scoreboard. I can understand why they didn’t this year (they are going to have a tournament at the end), but I think having a scoreboard of how teams were doing against some hidden, fixed set of maps would have been a lot of fun and more motivating.

Not that I didn’t have any fun with it. It was fun to see the little guy go. The visualization was a nice touch. In past years, I’ve often wanted some sort of visualization, but it always fell lower in the priority list than other things and never got done. It’s very motivating to *see* things.

I also loved that it got me doing things I don’t normally do, remembering things I haven’t used in a while. And I look forward to reading the write-ups. I often learn new-to-me data structures and algorithms (like Ropes), which is really one of my favorite parts.