The uncertainty principle says that a function and its Fourier transform cannot both be arbitrarily well-localized. Different forms of this principle require different methods of proof. For example, the Heisenberg inequality just requires Plancherel's theorem and integration by parts -- real variable methods, while Hardy's theorem ultimately boils down to the maximum principle from complex analysis. Other versions still require `phase space' methods. This talk will be largely expository, pointing out relationships between various forms of the uncertainty principle and their proofs. Some open problems, including phase space versions and finite uncertainty principles will also be mentioned.