Learning C The Hard Way