Programming Languages represent a challenging domain for design, because of the large, multi-dimensional space of both designs and objectives, and because design decisions tend to be highly coupled. The PL community has excellent tools for evaluating formal properties of entire designs. But the process of language design, and how design decisions are documented, is largely ad-hoc. Daniel Jackson has recently proposed a promising new way to think about software design focused on concepts: abstract mechanisms designed to fulfill a purpose. In this talk, I'll provide a brief introduction to design by concept, describe how I've been applying the idea to the design of programming languages, and report on the lessons I've learned so far.