Indeed, I'm also all about the hobbies over anything practical (I'm not reliable enough to be doing anything widely important yet). I just discovered that Perl was great for creating mathmatical algorithms. One could be smart about it and create formulas and derive
your algorithms, but that would be too easy. I personally like to stare at numbers and look for patterns. And Perl, for all it's Perlish reasons, puts me that much closer to the numbers. Once you have your algorithm perfected and running in less than O(n!) (heh, that was unpleasant) time, then you can move it over to C or (good heavens) assembly to suck up that last couple multiples of CPU time for good measure.
My current project (went into v2.0 this weekend bothering to release my O(n!) v1.0 ;) has so far taught me Benchmark, hash generation, that calling subroutines is to be avoided if at all possible, diagnostics, good formatting of diagnostic output, more about references, and various new built in functions. Anyway, I know I promised the algorithm this week, but I reduced the time to O(n^2) or something, am working on O(n) and might even manage O(1) if the Discrete Math Goddess will smile upon me.