learning c the hard way from http://c.learncodethehardway.org/