What's aged best here isn't "make DSLs" — plenty of people preach that — it's
that they treat tooling for the new language as first-class: error messages
phrased in terms of the DSL, not the host. That's exactly where most in-house
DSLs die. Anyone can grow a macro layer in a weekend; almost nobody follows
through on the debugging story, so six months later you have a bespoke language
with stack traces that leak the implementation and one person who understands it.