Skip to content

7imon7ays/web-telephone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

www.theworldsbiggestgameoftelephoneever.com

About

This is a web port of the party game Telephone, sometimes known as Paper Telephone or Telephone Pictionary.

Read the rules here.

In the web version anyone visits the site and contributes based on a prompt left by a previous user. The game allows any thread to branch out into infinitely many new threads. Players can also send their submissions as a prompt to someone else. After contributing, players scroll down the list of their thread's prior contributions and hilarity ensues.

Reception

The World's Biggest Game of Telephone Ever(.com) was picked up by a number of online forums and some die-hards even gave it a subreddit. It hit 100, 000 submissions within a week of its launch. Unfortunately, many (most?) of those were PG-13.

The World's Biggest Game of Telephone Ever(.com) is currently on hold while its creators think of ways to moderate it at scale.

Performance

The World's Biggest Game of Telelphone Ever(.com) had to evolve to stay snappy. Here's what changed over time.

Background Jobs

User submissions are geocoded. They also trigger an email if the user whose prompt they're responding to chose that option. These are both slow processes so The World's Biggest Game of Telelphone Ever(.com) uses Delayed Job to run those in the background without interrupting the user's experience.

Unicorn

Switched the server from Thin to Unicorn. Unicorn requires more configuration but allows the app to scale memory usage when simultaneous requests come in. That was a big improvement because Thin was dropping too many requests.

Efficient DB Querying

Whenever you navigate to The World's Biggest Game of Telelphone Ever(.com), the app pulls up a prior submission to prompt you with. Under the hood it's running through all previous threads, finding the longest ones--excluding the last one you were shown-- and returning the most recent contributions that have not yet been flagged as inapropriate. These would be simple instructions in an imperative Ruby script, but that would mean opening several connections to the database and iterating over some long arrays in plain Ruby. Since this query runs for every visitor, it had to confined to one database connection. See the results here.

About

Paper telephone for the web!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published