https://medium.com/@monocosmo77/working-with-nonsmooth-convex-functions-part1-machine-learning-2024-f9bd3d9f8b0c