This document discusses modeling and programming, arguing that they are not the same but should be integrated. It advocates programming at different levels of abstraction and viewpoints. Modeling tools and programming tools are different worlds that should be mixed by integrating models and programs through AST navigation and query. A language workbench approach is described that can freely define languages and integrate them with powerful editing, testing, and debugging tools. Both big languages and modular languages with optional concepts are discussed. The concrete example of Mbeddr, an extensible C for embedded systems, is presented.