| I'd recommend doing a startup and/or side project involving interesting functions of massive datasets. Technology-wise, at least consider... - learning SML or OCaml or Erlang - learning Python - going deeper into Python. It's a fantastic way to express oneself. It beautifully offers (generators, coroutines, multithreading, subprocesses, and networking) for piping and distributing your computation, a flexible blend of functional and imperative, and its syntax is the most conducive to elegance, simplicity, and rereadability of anything I've tried. ...then building the core algorithms in C/C++ with SWIG wrappers, the tip of the iceberg with Django, and everything else in pure Python. A must-read: "Generator Tricks For Systems Programmers" http://www.dabeaz.com/generators/Generators.pdf |
For my company/startup (http://greaterscope.com) I'm also building online storefront software, which has plenty of interesting problems. It can involve massive datasets (for me), clever algorithms, etc. It has been the perfect opportunity for me to harden and field-test my tools. This is written in PHP, because it's the language I know best, and I feel like the problem isn't "solved" for PHP yet.
But those are beside the point because I've started to think more about "what I really want to do" and how to "not get stuck doing something I don't want to do". So I defintely feel the need to find something I like doing even more than storefront software in PHP.
Thanks for the technology recommendations. Python is high on my list at the moment. I'm on the lookout.