Lisp has that whole homoiconicity thing going, the code-is-data syntax that makes macro writing super convenient. The thing about Common Lisp, though, is that you have to learn an awfully big chunk of it before you can start building interesting things. That's why I recommended Emacs Lisp. Sure, it's small and has dynamic rather than lexical scoping, but it still has macros. Think about the great development environment it's built into. If you learn E-Lisp, not only can you start doing interesting things from day 1, you gain better command of a useful tool even if you later decide not to continue with Lisp.