I like the intersection of language research and implementation. I can greatly enjoy pointer arithmetic as well as working towards avoiding it.
I am working on a JIT for the R language, called Ř. The compiler uses context dispatch to specialize functions to different dynamic contexts and it has a custom IR to handle R reflection and laziness.
If you want to know more about how the JIT is implemented read this.