There is much discussion on the creative power of making your own tools, but what are tools made from, but other tools? What does this mean for the apparent increase of freedom in with the increase of depth of knowledge? For example the lower level the language, the more busy work the program needs to do, like managing memory. If you go right down to machine code the whole program appears to do little but manage memory, occluding the high level concept of what this program means and does. What is the appropriate level of abstraction (depth) of description for a particular project? Are some concepts ideally represented in machine code? Are other concepts clearest in OOP, or data-flow languages?