Enjoy it, and let us know if you have any questions about what the experience was integrating with the APIs!
295 karma · joined October 2, 2010
Open Product Curriculum :https://github.com/nicolaerusan/product-curriculum
Blogging at: https://medium.com/clay-labs https://medium.com/@nicolaerusan
Enjoy it, and let us know if you have any questions about what the experience was integrating with the APIs!
http://blogs.wsj.com/digits/2013/02/11/why-user-recommendati...
techcrunch.com/2013/02/11/sailthru-19m-benchmark-gurley/
Part of this is triggers, which seems to be the focus of a lot of the discussion here, but an even bigger piece is personalization. The idea with personalization is to show the user content that is relevant to them. That involves a big analytics and prediction component in terms of figuring out their context, and their interests. We've seen some pretty crazy results in terms of jumps in engagement that emerge from personalizing emails to users, and also engaging users at the right points in time, in the right ways. This is relevant to the triggers conversation as well, in terms of being able to identify and personalize the triggers for each user. We haven't run explicit experiments on that aspect in terms of magnitude, but a trigger system in a vacuum won't give you the same type of power as a personalized/automated one.
Even things like personalizing WHEN you send an email to a user have a dramatic effect on open/click rates. One of our clients experienced a 10% increase in revenue (they were already making substantial revenue) by leveraging Horizon Send Time (Our product that sends an email to a user when they are most likely to open based on that users previous open habits).
The right combination of personalization to users, and appropriate event-based triggers, can really improve the perception of users (oh wow the content being sent to me is actually valuable!), and increase their happiness, and subsequently their life-time value.
Hey, I just uploaded the source - not very well commented, but hopefully illustrates the ideas (combine it along with the explanation above.) Feel free to extend it - I think it would be worthwhile to add the IMDB scores too (although I don't find them all that reliable personally :) ).
Not sure if it's a bug or not in Chrome. But I do recall having made a more complex Chrome extension before, where we were using the same background page strategy to handle the Cross-Origin behavior.
In either case, Chrome Extension documentation is in much better shape than Safari Extension documentation at this point.
So, using Chrome extensions, you're able to inject a javascript file into pages users browse to. You can limit which pages the javascript file is injected into using the Chrome Extensions' manifest.json files (in my case I limit it to injecting only into netflix.com and it's subdomains).
Here's how the injected javascript works in steps:
1. A user browses to a netflix.com page
2. Retrieve all the elements on the page that correspond to movie names (This is done by looking for all DOM elements with a specific class name that Netflix is using to identify the movies, in this case I found that the movie name is stored in the alt attribute of .boxShotImg elements).
Note: If Netflix changes their html so the elements with the class names I'm searching for no longer have the movie name as their alt tag, the script will no longer work and would need to be updated to match whatever classes Netflix changes to.
Now we know the movies on the page, we need to get the ratings from Rotten Tomatoes. - I was going to try to use the Rotten Tomatoes API for this, but they have a rate limit of 10 calls per second, and no way to ask for ratings for multiple movies per call, so this doesn't work well when you have +10 movies per page, per user. - So, given that I couldn't use the Rotten Tomatoes API, and given that Rotten Tomatoes' urls follow a predictable pattern, I did the following:
3. For each movie name, figure out the Rotten Tomatoes URL corresponding to that movie name, e.g. www.rottentomatoes.com/m/[THE_MOVIE_NAME_WITH_UNDERSCROES_FOR_SPACES]
4. Crawl the URL of the Netflix page with an AJAX GET Request. (means we're doing as many AJAX requests as their are movies appearing on the Netflix page)
5. In the HTML that's returned from the AJAX request, search for the element that holds the movie's RT rating, in this case, and element with id #all-critics-meter ~ the HTML in there is the RT rating for that movie (Note again here, that I assume RT has this consistent naming convention on its pages, and in its URL pattern, if any of this changes, again the script won't work).
6. Append the RT rating of each of the movie elements we've retrieved to the corresponding element on the Netflix page. (where I append the RT rating depends on what Netflix page the user is currently looking at, e.g. the Genres page, the home suggestions for you page, or the individual movie page .. but there are not that many pages to take care of with Netflix).
Hope that is somewhat clear and systematic.
One last side note is that when I was porting to the Safari extension, I hit a snag because I was unable to directly make AJAX requests to rotten tomatoes from netflix, because of Cross-Origin ajax restrictions. This is overcome in the Safari extension by communicating from the injected script, to another page that the extension itself has (background.html), which IS allowed to make Ajax requests cross-origin. The background page makes the ajax requests, gets the data we want, and sends it back to the injected script (all communication between the background.html and the injected script happening via Safari extensions' provided messaging protocols.
Also, I wanted to give credit to Matt Blodgett (http://www.mattblodgett.com/2009/07/rotten-tomatoes-netflix-...). He had the closest thing to what I was looking for (in that case it was a greasemonkey script that is a bit outdated). I re-used the portion of his code that translates movie names from Netflix, to the corresponding RT URL.
Do you find it useful? What industries would you like to see interviews for?
What changes would you like to the format?
You as a reader of content also get a wider variety of content - and you're encouraged to post as much as you want, and repost lots of content (as that helps us pick out the good content from the bad), and we have various techniques to avoid duplicate posts at the same time. (A Repost counts like an upvote essentially)
In terms of the cheering section, we did mention to friends that we put this up on HackerNews, and to give a shout out if they like the site. Those people in the comments are all real people, who do actually log in daily, and like the site.
We really just wanted to get the word out to the HN community and to get feedback on what works and what doesn't.
Curious why you think it's half-baked. Would love some feedback on how you think we could make it better!
It'll be interesting to see how it can handle having lots of different groups of people on the system (i.e. you should essentially have a sort of HN for each topic you're interested in).
I'm curious - did you connect your twitter account when you signed up?
I used to work at the MS, and it really did seem removed from the world of startups. And, having worked in shared office space with other startups I've really felt the difference it makes to not be working in isolation. They are definitely making good inroads in Seattle to connect with the community, but something more transformational may be needed.
Perhaps add hackernews as well as an option?
Will also add the ability to create field with a generic web icon.
You'll notice one of the social services is The Shared Web. We're going to be launching The Shared Web publicly soon, so feel free to sign up at www.thesharedweb.com for our beta invite list!
Thanks so much for your feedback. The way we think about it - there's two reasons to organize the thing's you've seen. Self-reference for later, and also, just so your friends have a place to browse it if they want to. I could tell a friend, yah go check out all the advice I've read on pitching - there's lots of good stuff there in my 'pitching' channel :). For those people, they now have a place to browse what you've seen, and they can thank you for posting it, and respond.
The nice thing, is that we're working on ways to make the categorization as automatic as possible (e.g. via crowdsourcing etc) - so that for you its easy to say you saw it, and then it goes into the appropriate topic.
We're also thinking about the ways to differentiate between the links that stand out, and the ones that don't in the long term. For example, based on your friends' reaction to it, your own indication of its importance, and other metrics. That way, this becomes a more useful showcase and memory of your web experience.