Building refer.me
11th July 2012 - Codeaholics.hk
@MatthewRudy
Slide 2
Slide 2 text
Good bye Armen!
Slide 3
Slide 3 text
The Site
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
The Features
Slide 6
Slide 6 text
refer.me
• Ask - ask for referrals
• Refer - suggest things to your friends
• Save - collect your favourite things
• Explore - find interesting things around you
Slide 7
Slide 7 text
Ask
• Ask a Question
• Send it to your friends
• Listen to their Suggestions
Slide 8
Slide 8 text
Refer
• Find something you
love
• Tell your friends
about it
• Share it on
Facebook
Slide 9
Slide 9 text
Save
• Collect your
favourite things
• Share them with
your friends
• Share them with
the world
Slide 10
Slide 10 text
Explore
• Surf content
• Dig down by
location and
category
• Do some clever
algorithmic stuff
Slide 11
Slide 11 text
The Challenges
Slide 12
Slide 12 text
Avoiding Duplicates - Challenge
• We just want one
definitive version of
“Carrots”
• But maybe there is also
a film called “Carrots”
• Or a book
• Or a restaurant
Slide 13
Slide 13 text
Avoiding Duplicates - Solution
• Crowd source it
• Always offer an
existing item first
• Adding a new one is
a last resort
• Bubble the best
content to the top
Slide 14
Slide 14 text
High Quality Photos - Challenge
• The design is very
visual
• We need good
photos to pull it off
• But we’ll lose users if
its complicated
Slide 15
Slide 15 text
High Quality Photos - Solution
• Make it really easy
to add an image
• Search for the
item’s name
• Bing Image Search
• Paste a URL and
grab the images
Slide 16
Slide 16 text
Good Content - Challenge
• We want detailed,
specific data
• Users just want to
click and go
Slide 17
Slide 17 text
Good Content - Solution
• Take control of
content after its
added
• Incentivise Users
to be Curators
Slide 18
Slide 18 text
Everything has Location - Challenge
• We want to do
Geosearch
• But some Items don’t
have a location
• Doing lat-long
calculations
everywhere isn’t ideal
Slide 19
Slide 19 text
Everything has Location - Solution
• Define a discrete set of
“Localities”
• Geocode everything;
• Users, Items,
Questions, News
Feeds, IPs
• Assign objects to their
nearest locality
Slide 20
Slide 20 text
Technology
Slide 21
Slide 21 text
The Back End
• Ruby 1.9.x
• Rails 3.2.x
• PostgreSQL 9.1.x
Slide 22
Slide 22 text
Core Libraries
• Devise - for authentication
• Carrierwave - for uploads
• Tire - for search
• Delayed Job - for background workers
• Rspec - for testing
• Rails Admin - for CRUD
Slide 23
Slide 23 text
Deployment
• Heroku Cedar
• Amazon S3
• Memcachier
• Bonsai Elasticsearch
• New Relic
Slide 24
Slide 24 text
The Front End
• HAML
• SASS
• Coffeescript
• Twitter Bootstrap
• Backbone.js
Slide 25
Slide 25 text
Geocoding
• Google Geocoder
• Maxmind GeoIP
Slide 26
Slide 26 text
Other APIs
• Bing Image Search API
• Facebook Open Graph
• Mailchimp’s MandrillApp