ICFP results are out and this year I’m pretty satisfied with 53rd position. Last year (2017) we didn’t even qualify as the judges could not run our solution in their test box.

Again this has been a terrific experience and even if I played support and did not write a single line of code that improved our score I’m very happy with the results.

We did not implement any multiple bot strategies but relied only on single bot path heuristics so half of the leaderboard is good enough.

Improvements on 2017

Everyone being in the same physical space has helped a lot, especially since we are a lot (7+), this should be a must next year.

Having more tools instead of a single player process (like in 2017) helped. We split up things and in the end we had a VM to check and score the traces locally, a scoring server with all the best solutions we could find and everyone interested could whip out something to experiment.

What I’m going to use/do next year

Django. Incredibly useful tool for creating a simple CRUD app like the scoring server and trace/model visualizer we did. A real time saver.

The best part of the contest is between 2AM and 4AM when everyone in the team is either sleeping or very quiet, I was so much more productive that I will propose a (enforced) quiet zone.

What did not work?

I copied the contest visualizer and botched up something that would display traces and models directly from our database but no-one used it (?), maybe it needed a good integration with the local tools but I’m still dubious.

The alternative was using the contest visualizer and that’s what we relied on, very bad user experience but it works.

Preparation for 2019

This year the task was interesting and easy to get started but I still need some more experience in some tools that we had to build. Most importantly the instruction language for the bot was very crude so a necessity (in the end) was a nicer language transpiling to the target.

As always we fell short on abstracting things and in the end complexity bit us. A nice language with generic movements and a compiler to the bot language set of movements would have been extemely helpful. Then the development could have branched to developing more strategies (multiple bots, better use of harmonics) and finding good optimizations in the compiler, two things that could have been done in parallel yielding both better scores.