study notes and codes from "C Interfaces and Implementation" by David R. Hanson