Software has become critical to nearly every aspect of our civilization. Consequently, the complexity of our tools and our needs for dependability have increased immensely. Programmers need scalable tools and methodogies to keep complexity in check. Generic programming, with roots in computer algebra and symbolic mathematics, is one of the promising approaches to scalable and dependable software contruction. This talk explores recent accomplishments and lessons learned from fruitful interactions between tools support for principled programming and computational mathematics. Examples come from modern C++, OpenAxiom, symbolic mathematics, algorithmic differentiation and beyond. I will touch upon on-going projects, challenges ahead, and possible paths to solutions.