Computer science is built on a shaky tower of abstractions, but we've been distracted by other things until we believe it is reality. And we've imposed this on our users in ways we no longer even realize. Yet as developers we have two users: the mechanical users of our software, and the people who will use this code in the future to change this software. This talk teases apart some of the tangled abstractions that have become so common they are invisible yet impact important decisions. I cover languages, tools, platforms, and burrow all the way down to fundamental concepts. This wide-ranging keynote answers these questions and more: * Why does my keyboard look the way it does? * Why is the iPad is the most revolutionary device in the last 30 years? * Why do some people hate Maven so much? * Is hiding always a good thing?