https://medium.com/the-innovation/as-a-programmer-you-need-to-understand-these-about-files-b542c60d9285