Yesterday, Anna and I coded an implementation of the ASU (Aho Sethi Ullman) DFA minimization algorithm (it is described in the dragon book, for instance). We did it in Perl - using some neat constructs, like a triple-hash (hash of a has of a hash), to represent a 3-dimensional array, which itself was held inside a hash. The algorithm minimizes any DFA to the minimal DFA that accepts the same language. I needed it for work (the NFA minimization we use is similar to DFA minimization).
On a completely different topic: I decided to log my mistakes and triumphs at work. Too many times I bang my head against the same problems. "I've seen this before", I say, and fight a bug for two hours. I'll now try to write down the problems I have, and how I fix them. Hopefully it will help in the long run.