Programming Languages through the Lens of Program Generation by Jacques Carette.
A few year's experience in doing program generation (typed and untyped, in quasi-quoted, AST and string form, for OO, imperative, functional and logic target languages, for a variety of applications) has given me a different perspective on programming languages. In particular, my view of what is important and what is incidental in a program has changed dramatically. One example: I now find all mainstream programming languages to be simultaneously too low level and too high level. In this talk, I will explain what I mean, through a series of examples.