Just a quick observation: writing software is like carving. You start with the computer and all of its potential, and you whittle away the possibilities, constraining the program until you get what you envisioned.