Silicon Valley Code Camp : October 8th and 9th, 2011.
Scott Haines is a full stack engineer with a current focus on real-time -highly available – trust-worthy analytics systems. He is currently working at Twilio (as Tech Lead of the Voice Insights team) where he helped drive spark adoption and streaming pipeline architectures. Prior to Twilio, he worked writing the backend java api’s for Yahoo Games, as well as the real-time game ranking / ratings engine (built on Storm) to provide personalized recommendations and page views for 10 million customers. He finished his tenure at Yahoo working for Flurry Analytics where he wrote the (alerts/notifications) system for mobile.
In this session, I will cover using Ruby EventMachine to create a real-time - event driven - web application. This session will cover setting up an EventMachine server, Registering endpoints (unique websocket connections), and handling live or autonomous communication.
<b>Session will cover following ruby technologies</b>
1. RVM - using rvm gemsets with .rvmrc (http://beginrescueend.com/)
- triggering use of custom rvm gemsets from within github repo<br/>
2. Gemfile (for bundle install) (gem install bundler)<br/>
3. Ruby EventMachine (http://eventmachine.rubyforge.org/EventMachine.html)<br/>
4. em-websocket (gem), em-http-request (gem) usage, patterns<br/>
5. JSON object serialization<br/>
6. Concurrent Programming in Ruby<br/>
7. Autonomous Communication
During the course of this session, we will build a real-time, multi-threaded communications platform that can connect to any socket based endpoint, including another user, or HTTP API, or custom endpoint, or protocol. <br/>
- Utilize html5 websockets and Json messaging to build an event-driven communications platform <br/>
- Drive socket based communication utilizing the Observer and Reactor patterns<br/>
- Use blocks (&block) to deliver http responses - from any 3rd party rest API - from your eventmachine server, back down through a websocket to the user who generated the request, or on time-based cycles.<br/>
- Learn how to use Modules (mix-ins)<br/>
- Build configuration files with YAML<br/>
- Accept Command-Line arguments using ARGV<br/>
- Have fun with other Ruby geeks!<br/>