The software industry is in the midst of a major transformation in the way programs are built and deployed. In this new world, the applications are but small bits of computation within a web of middleware. The main issue facing application developers is increasingly how to connect the bits, rather than the bits themselves. One can think of this as a shift from micro to macro programming. This shift has created many new challenges. One important challenge is overcoming the phenomenon of being "stuck in the middle" -- of applications not performing as expected due to middleware. In this talk we briefly review what middleware is, why middleware is increasingly important, and the paradigm shift mentioned above. We then discuss issues in performance, and why middleware will increasingly become the main bottleneck in application performance. In coming to grips with this problem, we will offer a few principles in optimizing middleware, and give some example projects that provide efficiency gains by utilizing these principles.