I'm interested in hard problems.
Recently, I've started thinking a lot about what CP6AN might look like.
Class::MOP and the Perl 6 Metamodel make me more excited than I'd like to admit.
Also expect occasional wordy technology-related rantings.
All this discussion of side-effects has reminded me of something.
A particular bit of code has, potentially, a return value, and side-effects. Other parts of the program have a dependency on a bit of code if they rely on either the code's return value, or side-effects. Think of return values as explicit dependencies, and side-effects as implicit dependencies.
Purely functional programming languages are easier to paralellize because all of the dependencies in the code are explicit.
It would seem that parallelization of non-functional programming languages would be possible (without explicit design by the programmer) if we had a better way of analyzing code to map out dependencies.
I'll expand on this a little bit when I have more time.