https://www.viasion.com/blog/what-is-ic-programming/