Solving the "Brooklyn Problem"

  • 6,992 views
Uploaded on

Better UX through cheap hacks

Better UX through cheap hacks

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,992
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
31
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Solving The Brooklyn Problem: Better UX through cheap hacks Kellan Elliott-McCrea, Etsy @kellanThursday, April 21, 2011
  • 2. Thursday, April 21, 2011
  • 3. Thursday, April 21, 2011
  • 4. Thursday, April 21, 2011
  • 5. 1. UI/UX can be improved by applying ambient location informationThursday, April 21, 2011
  • 6. 1. UI/UX can be improved by applying ambient location information 2. It’s easy.Thursday, April 21, 2011
  • 7. The Brooklyn ProblemThursday, April 21, 2011
  • 8. The Brooklyn Problem Brooklyn, New York Brooklyn, AlabamaThursday, April 21, 2011
  • 9. if ($query == ‘Brooklyn’) { return ‘Brooklyn, NY’; }Thursday, April 21, 2011
  • 10. Thursday, April 21, 2011
  • 11. Thursday, April 21, 2011
  • 12. Thursday, April 21, 2011
  • 13. Thursday, April 21, 2011
  • 14. Solr 3.10, Maxmind world populations dataset, bash, and an “algorithm”Thursday, April 21, 2011
  • 15. Solr geo-spatial extension 3.10+ schema.xml: <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> .... <field name="latlong" type="location" indexed="true" stored="true" required="true" />Thursday, April 21, 2011
  • 16. ALL THE CODE! <?php $fh = fopen(worldcitiespop.txt, r); $row = fgetcsv($fh); // discard headers for($i=0;$i<100;$i++) { $row = fgetcsv($fh); $json = array(add=> array(doc => array( terms => $row[2] . . $row[0], // city country population => $row[4], latlong => $row[5] . , . $row[6], // "latitude,longitude" gets parsed ))); curl_post(json_encode($json)); } } function curl_post($json, $url=http://localhost:8983/solr/update/json) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADERS, array(Content-Type: application/json)); curl_setopt($ch, CURLOPT_URL, $URL); } ?>Thursday, April 21, 2011
  • 17. “a custom Solr scoring function to re-rank results based on social geo-relevance”Thursday, April 21, 2011
  • 18. div(geodist(),sqrt(sum(population,1))Thursday, April 21, 2011
  • 19. http://localhost:8393/solr/ placesuggest/select? q=b*&sfield=latlong&pt=37.7749295 ,-122.4194155&sort=div(geodist (),sqrt(sum(population,1)))%20ascThursday, April 21, 2011
  • 20. OM G CO NT http://localhost:8393/solr/ EX TS placesuggest/select? GE EN q=b*&sfield=latlong&pt=37.7749295 OC SIT O D IV ,-122.4194155&sort=div(geodist IN E PE (),sqrt(sum(population,1)))%20asc G! RS !!!! ON AL IZ EDThursday, April 21, 2011
  • 21. Done!Thursday, April 21, 2011
  • 22. the tear down * Solr 3.10+ working geo-spatial extensions * 2.6 million points == 380Mb index * the data sucks, and it doesn’t matter (much) * a few days of work, 85% increase in data quality.Thursday, April 21, 2011
  • 23. .Wanjialing, ChinaThursday, April 21, 2011
  • 24. Brooklyn NY, population: 0Thursday, April 21, 2011
  • 25. So why aren’t people doing this?Thursday, April 21, 2011
  • 26. Thursday, April 21, 2011
  • 27. Thursday, April 21, 2011
  • 28. Thursday, April 21, 2011
  • 29. Solr 3.10, Maxmind world populations dataset, bash, and an “algorithm”Thursday, April 21, 2011
  • 30. Thank you! http://www.etsy.com/listing/59401151/vintage-coffee-bean-bag-chairs http://www.flickr.com/photos/darn/141009324/ http://www.flickr.com/photos/21953562@N07/5539813593/ http://www.maxmind.com/app/worldcities http://www.lucidimagination.com/blog/2010/07/20/update-spatial-search-in- apache-lucene-and-solr/ http://www.etsy.com/listing/66013923/triceratops-forged-copper-maskThursday, April 21, 2011