My favorite quote from this video, that I wish more languages would embrace is:
"I went from application to application trying to use the same techniques. The most encouraging thing is that they would work. After 2-3 years during which time the language had grown by accretion, it grew and grew, eventually I found it was shrinking.
Essentially the idea was once you look at enough different applications you begin to see what is the general notion. So I came to generalisations that allowed me to take out whole chunks of special things I had put in.
Furthermore to my surprise it turns out the general ideas are usually much simpler to understand than any of the special cases."