This talk is about mathematical optimization in Python and the hard problems that can be solved with with linear programming and integer programming methods. It will cover getting started with the excellent linear programming library PuLP, pitfalls and best practices, and a little bit of theory: why some programs are solvable and why some take a lifetime.