Then, I started drilling down, thinking about the computations I might want to do, trying to figure out what primitives they could be built up from and how they could be automated as much as possible.