Hashing (this documentation is a work in progress. Feel free to contribute a nice intro to hash functions!)