  The MM principle is a device for creating optimization algorithms satisfying
the ascent or descent property. The current survey emphasizes the role of the
MM principle in nonlinear programming. For smooth functions, one can construct
an adaptive interior point method based on scaled Bregmann barriers. This
algorithm does not follow the central path. For convex programming subject to
nonsmooth constraints, one can combine an exact penalty method with distance
majorization to create versatile algorithms that are effective even in discrete
optimization. These proximal distance algorithms are highly modular and reduce
to set projections and proximal mappings, both very well-understood techniques
in optimization. We illustrate the possibilities in linear programming, binary
piecewise-linear programming, nonnegative quadratic programming, $\ell_0$
regression, matrix completion, and inverse sparse covariance estimation.
