Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Refer.me

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Building Refer.me

Presented at Codeaholics HK on Wednesday 11th July 2012.

An account of building Refer.me as a project using;
Ruby, Rails, PostgreSQL, ElasticSearch, Memcache, Heroku, Amazon S3, Bing Image Search, Google Geocoding API, and a lot more.

Avatar for Matthew Rudy Jacobs

Matthew Rudy Jacobs

July 11, 2012
Tweet

More Decks by Matthew Rudy Jacobs

Other Decks in Technology

Transcript

  1. refer.me • Ask - ask for referrals • Refer -

    suggest things to your friends • Save - collect your favourite things • Explore - find interesting things around you
  2. Ask • Ask a Question • Send it to your

    friends • Listen to their Suggestions
  3. Save • Collect your favourite things • Share them with

    your friends • Share them with the world
  4. Explore • Surf content • Dig down by location and

    category • Do some clever algorithmic stuff
  5. 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
  6. 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
  7. 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
  8. 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
  9. Good Content - Solution • Take control of content after

    its added • Incentivise Users to be Curators
  10. 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
  11. Everything has Location - Solution • Define a discrete set

    of “Localities” • Geocode everything; • Users, Items, Questions, News Feeds, IPs • Assign objects to their nearest locality
  12. Core Libraries • Devise - for authentication • Carrierwave -

    for uploads • Tire - for search • Delayed Job - for background workers • Rspec - for testing • Rails Admin - for CRUD
  13. The Front End • HAML • SASS • Coffeescript •

    Twitter Bootstrap • Backbone.js
  14. Other APIs • Bing Image Search API • Facebook Open

    Graph • Mailchimp’s MandrillApp