Signal processing on graphs is a framework for non-parametric function estimation and hypothesis testing that generalizes spatial signal processing to heterogeneous domains. I will discuss the history of this line of research, highlighting common themes and major advances. I will introduce various graph wavelet algorithms, and highlight any known approximation theoretic guarantees. Recently, it has been determined that the fused lasso is theoretically competitive with wavelet thresholding under some conditions, meaning that the fused lasso is also a locally adaptive smoothing procedure. We propose a generalization of the fused lasso, called graph trend filtering, which not only extends spatio-temporal structure to general graph structure, but also to higher-order smoothness. We demonstrate the flexibility of this framework, discuss fast solvers, and recent advances in our theoretical understanding. This methodology has some limitations, and we will discuss future work on related localized graph filter banks. I will conclude with new applications of graph structured signal processing that are emerging in the transportation sciences, social network modelling, and sensor network applications.