There is an interesting discussion at LtU about difference between DSL and API. I think the difference is less technical and more semantic, in scope and in the role that each of them play. Considering what they mean the difference is on two levels - domain/application and language/interface. [Continue]
You end up using Domain Specific Languages (DSLs) without explicitly realising. The strongest possible reason for this is that there is not much learning curve to adopting them. They provide total value by serving a specific set of tasks in a domain. [Continue]
Ola Bini has listed some great techniques for metaprogramming in Ruby. Hal Fulton has a more basic introduction to metaprogramming for Ruby. Metaprogramming can very useful to create another language, like a Domain Specific Language (DSL) and usually involves using insides of the language. [Continue]