Abstraction Layers in Programming - Jonathan Blow