In this talk we are interested in distributed algorithms for solving separable optimization problems. Many problems in engineering can be formulated as separable optimization problems, i.e., minimizing the sum of P functions subject to the intersection of P sets. Our goal is to solve such problem when the P functions and sets are not known at a single location, but rather distributed across a network with P nodes, each node having access to just one function and set. We present an algorithm based on the alternating direction method of multipliers that requires less communications than the state-of-the-art algorithms. Applications of this work include average consensus, distributed compressed sensing and SVMs, Internet protocols, and distributed model predictive control.