python the hard way