This document outlines principles of reactive programming as presented in a talk. It defines reactive programming as a paradigm oriented around data flows and propagation of change. The main principles discussed are being message-driven, using non-blocking and asynchronous operations, and implementing back pressure in data flows. Code examples and links are provided to illustrate asynchronous programming and the actor model as approaches to reactive programming. The talk argues that reactive programming raises the level of abstraction to focus on interdependent events rather than implementation details.