So, for me, the best bit of ICFP was a common theme which underpinned a few of the talks. It was the idea that you can use programming as a way to learn stuff, rather than just a way to produce programs to run. In other words, the primary outcome of your programming session is an “aha” moment in your head, and if you get a runnable program too then that’s a secondary benefit but not the main objective.
So I’m not talking about learning how to program better. I’m talking about using a programming language as a way of writing down ideas. The act of writing them down often clarifies your mind. But then, as you write down more stuff you might notice commonality – and programming languages often let you capture that commonality and express it quite cleanly. And, perhaps, the resulting version will be something you didn’t ever anticipate – perhaps letting you see that two seemingly unrelated areas were in fact just two facets of one common underlying idea.
This theme came out clearly during the talks by Dan Piponi (sigfpe) and Conal Elliott; I didn’t manage to follow everything they covered, but to me they were both examples of this kind of approach. Very sweet, and much more interesting than ‘programming for programmings sake’.