Introduction to reactive programming