update from hlint on this file
adds remaining ch04 stuff
add gitignore
gitignore only allows files with extensions