How I Learned to Love Domain-Specific Languages (in Three Parts)