The rise of Node.js has pushed event-driven programming under the noses of server-side developers like never before. Commonly used in client-side GUI coding, event-driven development can be a useful tool for structuring server-side apps as well, helping you separate concerns, handle non-blocking I/O and distribute your application's workload. Faye is a Ruby project that aims to make pub/sub messaging between server and client as simple as possible. You'll find out how it works under the covers, and learn some common event-driven patterns that it uses to keep things modular and maintainable. You'll also learn how you can script and test heavily asynchronous applications without overdosing on callbacks.