HTML and CSS Reference
Now that we've laid some foundation for the app and reviewed some of the programming languages we'll be using to
build it, you can start getting familiar with the new technologies that will come into play.
First, let's get acquainted with Pusher, which will be responsible for the realtime interaction on our site. In
this chapter, we'll explore the origins of Pusher, the underlying technology, some of the tools they provide to help
development, and get our hands dirty by building a simple realtime activity tracking app.
A Brief History of Pusher
Pusher is part of a relatively new trend on the Internet known as software as a service (SAAS) . These companies
provide a useful tool, utility, service, or other value to other developers for a fee. This allows us to use incredibly
powerful new technologies without spending days—or weeks—trying to solve issues such as scalability and
In early 2010, cofounders Max Williams and Damien Tanner were running one of the most successful Ruby On
Rails shops in the UK. When they saw the need to synchronize data between their team members, they built a small
tool to utilize the new HTML5 WebSocket API.
Once they realized how easy it was to create realtime applications using their infrastructure, they saw an
opportunity that went beyond internal management tools.
Since then, Pusher has grown to become a dominant force in the realtime SaaS market, boasting an impressive
client list that includes Groupon, MailChimp, and SlideShare.
Why Use Pusher?
One of the key reasons for using a hosted service like Pusher is that it speeds up the development process by making
a previously complex goal much more achievable. One of the key parts of this is the speed at which that goal can be
reached. But there are others, too. Since we are using the Pusher hosted service, it's worth highlighting some of the
benefits of doing so.
One of the first things a cloud-based SaaS offers is the promise of scalability, and Pusher is no different. It provides
and scales realtime infrastructure so that we can focus on adding realtime interactive functionality to our application.