https://levelup.gitconnected.com/5-mathematical-concepts-that-every-programmer-should-know-b8e1813751ef