How does this particular tool work? It's based on the threads a given person comments on, who else comments on those threads, and how the topics and terminology of threads and comments relate to each other. Karma on the relevant threads is used as a subtle authority metric. Incorporating voting relationship histories would almost certainly make the tool better. Particularly at finding interesting (and not merely similar) stuff.
That said, it'll be interesting to hear what folks think.
I commend you on an elegant UI. Would you mind explaining a bit how exactly you anticipate using voting relationship histories in future revisions? Also, am I correct in assuming that there is some sort of distance function involved in computing 'similarity'?
A big part of it is that the default settings reward comment karma fairly heavily. Try moving the sliders around. For example, with the defaults, patio11 is the top result for your username, but at the karma slider midpoint he's out of the top 12.
Interestingly, nostrademons and pg are the top two for me, so I wonder what would produce one but not the other. I'd love to see if comments could be separated into [user1]-like comments and [user2]-like comments.
This is interesting, thanks for pointing this out. The top result is actually getting filtered out from the displayed results (don't ask). spolsky is going from being the second result, to the first result, to the second result in your examples.
I recently changed my user name from antiismist to idoh. When I moved the karma setting to Diamonds in the Rough, it listed idoh as the #2 most similar user to antiismist. Nice!
I just realized I have paid no attention at all to anyone's name. I know my brother's name when I see it, but that's it. Now I'm wondering if I am liked. Probably not >.<
I actually typed "chris" as my username in the form the first time, wondered why no results showed up, and then realized my username is actually chrischen.
Very interesting. Depending on how I adjusted it I was judged similar to pg, unalone, and a couple other people on the leaderboard. I guess that means my comments are on the right track....
Are there any other details about the algorithm or how it works. I'm curious about what exactly the different weightings mean.
I like my company. I don't know if they feel the same way about me.
One newer participant whose posts make me think "I wish I had posted that" doesn't show up on my list of associated participants. But I show up on his. Maybe that is because of the karma setting in the default operation of the search. Interesting.
Excellent question. Middle ignores karma in the quantitative ranking. Far to the right gets lower karma users. Users who consistently get almost all 1s and/or negative points are separately filtered out since they generally don't make for interesting recommendations. Users who sometimes have negative comment scores but also make lots of 2+ comments are included (these users are rare but are arguably the most interesting).
A few weeks ago, I tried searching through old threads to find where PG had an archive of old comments and server stats. Does anybody have link(s)? Thanks in advance. (This post is meta enough that it's probably as good a time as any.)
I'm guessing either such a corpus was used here, or it's based on a cache of recent comments.
Most of the techniques for this sort of thing don't work that well for sparse datasets. So given a choice between showing bad results for users with relatively few comments, and not showing any results ... especially when users can search not just for themselves but also for folks they know and enjoy ... Also, scraping the full history of HN is not cool.
A while ago, pg posted an archive of HN comments, specifically so that nobody would have to scrape them. (It was coupled with comments on how the arc server was holding up, IIRC.) I haven't had any luck searching for it, though - there are too many discussions about the ethics of scraping comments, archive file formats, and the like.
I remember that too. It was, as you say, a while ago, meaning long time outdated. And I indeed recall it to be pg-posted, but instead all I can find is this non-pg release with all links broken: http://news.ycombinator.com/item?id=173045. I looked for in all links to tar and zip archives, could've missed something.
Interesting. After the obligatory vanity search I tried searching for people I know have different (more technical, less startup/strategy(marketing) taste than me. And it seems to work quite well. I have nothing in common with those guys :-)
For instance the top pick for tptacek is cperciva, which seems natural. Doesn't work the other way around though, so there's still some work to be done...
Thanks for the feedback, you bring up a very interesting point: reciprocity. If I am closer to you than anyone else, does it follow that you are closer to me than anybody else? I'm not sure the right answer to that is yes ...
Definitely not in the general case of points in n-dimensional Cartesian space. For instance, in the 1-d case, consider points at 0, 10, and 12. 10 is the closest point to 0, but not vice-versa.
Put another way, it seems as though the algorithm considers tptacek more distinct (from all other HN users) than cperciva.
S W G W einstein
newton
+------------------------+
| edw519 | liebniz
+------------------------+
turing
===========||=============
carnegie
Co-Commenting..SEMANTICS..
Word Choice tesla
godel
=====||===================
escher
Leaderboard.....KARMA.....
Diamonds in the Rough..... bach
edison
This site has no
affiliation with Hacker galois
News or Y Combinator
patio11
1) If I understand correctly the first slider ranks greater similarity in commenting on the same threads the farther left you go and similar word choice the farther right you go. Why not make this two separate sliders?
2) For each of the matches could you show some of the data used to compute the matches... e.g., for semantic matches, show the top X (maybe five?) common words or phrases you matched on. For threads, show the parent or OP of the five most recent threads... something like that.
3) Really neat. I like this. It's quick too. How did you do it? Did you replicate the entire HN database? Third suggestion: post the source or just post an explanation of how it works.
Yeah, that's one of things to consider. All of the logic for this was originally developed for another purpose, and it got applied to HN for fun. The human connection element makes it very cool, and so do the possiblities for applying it to so many different applications.
This is fun to consider. Are you thinking of people who have completely different interests? Or folks who are interested in similar things but disagree?
Thanks. Most of the comments of those users are about programming which I don't often discuss here. Erikstarck doesn't really comment in the programming discussions but his comment style is definitely different from mine.
I could probably turn this into a blog post (and will later), but there are a lot of microoptimizations of default settings for B2C apps that make huge differences in conversion:
- Defaults should be almost sufficient to use the app. (i.e. if it has some workflow, you should be able to pretty much hit "Next next next" and get it to work. Bonus points for making the number of nexts as low as possible.)
- Pick something that results in visually impressive output rather than a blank page. See Balsamiq for inspiration here -- they start you with a mockup in progress that demonstrates most of the highlights of the software.
- Ever seen Firefly? I really like how they use the word "shiny". Ideally, your defaults should show the shiny in your app. In Hollywood they have a saying: make sure your budget makes it onto the screen. In B2C apps, make sure the stuff you did all the work on makes it into the user experience most of your users will see.
- Assume your user is a novice at both your software and the problem domain until you have evidence otherwise. A lot of people ask the user "Hey, are you a novice?" That is one way to do things, but it makes your core workflow one stage longer and every stage costs you conversion. I prefer "Assume they are and give them a discrete 'skip ahead' button" or "Assume they are and watch them for evidence that they are not".
- If your app is supposed to make the user feel like they just killed an effing lion, then your default settings better have a lion bound and gagged sitting under a forty-ton weight suspended by a weak string which passes through an open pair of scissors next to a sign saying "Snip this."
- (Do this if nothing else.) Track actual usage of the app and modify your defaults based on actual usage. Bonus points if you can do it dynamically, if that makes sense for your app. For example, if you pick A as the default and 25% of your users go out of their way to change it to B, then that probably should have been B. (You can split test and see how many people would have changed it to A if it had defaulted to B.)
While all of these are true, I find that they usually derive from a simpler rule: Have a laser focus on the users you're trying to reach, and everything you do should make their lives easier in some way.
When I find people breaking these sorts of rules, it's usually because they're thinking of themselves or some non-customer stakeholder.
edited to add a corollary: until you've done the sort of testing patio11 advocates, you don't know who that customer is.
I think what you are saying is good advice, but don't think it is necessarily co-extensive with what I'm suggesting.
For example, say you're targeting teachers. Keeping a laser focus on what teachers want is important. However, I think you need to put extra focus on making their first five minutes absolutely amazing. (And their first 30 seconds. And their first 5 seconds.) My reason for this is simple: almost all apps are going to leak an amazing number of their customers between first and second use. I don't have my report in front of me at the moment, but I think something like 40% of BCC users never complete their first bingo card and never log in again. Essentially none of these people buy the software. On the other hand, roughly 2.4% of trialers convert, or roughly 4% of users who succeed in their first interaction with the app. Increasing my bottom line by 5% requires converting 5% more of that second group -- which, let me tell you, is hard freaking work -- or, in the alternative, improving the first run experience of three out of every 40 users who fail to complete Task #1.
It is really hard to optimize your entire application, user experience, value proposition, etc to get +5% conversion. However, polishing your first five minutes until it freaking shines is not nearly as difficult. Do you present people with a blank page currently? Spend an hour and put something on it. I will put money on that helping. Does it take a critical mass of friends/input/lions slain to get fun? Do the work for them. Fake it if necessary.
And, yeah, instrument everything. Can I plug Mixpanel here? plug Every time I think "You know I should really build more instrumentation into my app..." I remember "Oh, wait, it takes a twentieth of the time to just throw it on Mixpanel -- no visualization code or complicated controls to refine the data range required, praise be."
111 comments
[ 7.5 ms ] story [ 155 ms ] threadhttp://news.ycombinator.com/item?id=701
And recently, too:
http://news.ycombinator.com/item?id=1036247
How does this particular tool work? It's based on the threads a given person comments on, who else comments on those threads, and how the topics and terminology of threads and comments relate to each other. Karma on the relevant threads is used as a subtle authority metric. Incorporating voting relationship histories would almost certainly make the tool better. Particularly at finding interesting (and not merely similar) stuff.
That said, it'll be interesting to hear what folks think.
edit: just realized that by default it's only returning the rockstars of the site (e.g. people high up on the leaderboard).
Not sure what that means though.
http://news.ycombinator.com/item?id=181868
:-)
Another route might be clustering ('technical', 'political', etc.)
Start here: http://www.swimwithoutgettingwet.com/hnusers/?user=profquail...
The next two 'clicks' to the left (towards co-commenting) don't have 'spolsky' in my list: http://www.swimwithoutgettingwet.com/hnusers/?user=profquail...
But one more click to the left, and he reappears in the list: http://www.swimwithoutgettingwet.com/hnusers/?user=profquail...
http://www.swimwithoutgettingwet.com/hnusers/?user=antiismis...
The only name I recognize is pg, and since I save my username and password, sometimes I forget my own username too.
Are there any other details about the algorithm or how it works. I'm curious about what exactly the different weightings mean.
works: http://news.ycombinator.com/user?id=SapphireSun
doesn't work: http://news.ycombinator.com/user?id=sapphiresun
One newer participant whose posts make me think "I wish I had posted that" doesn't show up on my list of associated participants. But I show up on his. Maybe that is because of the karma setting in the default operation of the search. Interesting.
I'm guessing either such a corpus was used here, or it's based on a cache of recent comments.
Most of the techniques for this sort of thing don't work that well for sparse datasets. So given a choice between showing bad results for users with relatively few comments, and not showing any results ... especially when users can search not just for themselves but also for folks they know and enjoy ... Also, scraping the full history of HN is not cool.
http://news.ycombinator.com/item?id=271066
I'd check the Internet Archive for the files & Google for the filenames.
Id say thats a good thing. In general the whole list is people I would happen to be even somewhat similar to.
For instance the top pick for tptacek is cperciva, which seems natural. Doesn't work the other way around though, so there's still some work to be done...
Put another way, it seems as though the algorithm considers tptacek more distinct (from all other HN users) than cperciva.
I take it that means I am the cheese.
I think that only really says something about HN, not about my comments :)
Neat little utility, thanks.
If three things were to get added to this, what should they be?
- username has period afterward, for self-linking back to site
- various ratios next to each user name in a table, maybe linking to searchyc ie http://searchyc.com/user/riffer
2) For each of the matches could you show some of the data used to compute the matches... e.g., for semantic matches, show the top X (maybe five?) common words or phrases you matched on. For threads, show the parent or OP of the five most recent threads... something like that.
3) Really neat. I like this. It's quick too. How did you do it? Did you replicate the entire HN database? Third suggestion: post the source or just post an explanation of how it works.
osteele erikstarck zedshaw atarashi matthavener clemesha alrex021 cliff NateLawson jefffoster mrcharles fix3r
This was done with the karma effectively off (same as the karma slider in the middle). What do you think? Anybody there you think shouldn't be?
How about displaying the values used to order the result set, so you could compare weightings across users? reply
- Defaults should be almost sufficient to use the app. (i.e. if it has some workflow, you should be able to pretty much hit "Next next next" and get it to work. Bonus points for making the number of nexts as low as possible.)
- Pick something that results in visually impressive output rather than a blank page. See Balsamiq for inspiration here -- they start you with a mockup in progress that demonstrates most of the highlights of the software.
- Ever seen Firefly? I really like how they use the word "shiny". Ideally, your defaults should show the shiny in your app. In Hollywood they have a saying: make sure your budget makes it onto the screen. In B2C apps, make sure the stuff you did all the work on makes it into the user experience most of your users will see.
- Assume your user is a novice at both your software and the problem domain until you have evidence otherwise. A lot of people ask the user "Hey, are you a novice?" That is one way to do things, but it makes your core workflow one stage longer and every stage costs you conversion. I prefer "Assume they are and give them a discrete 'skip ahead' button" or "Assume they are and watch them for evidence that they are not".
- If your app is supposed to make the user feel like they just killed an effing lion, then your default settings better have a lion bound and gagged sitting under a forty-ton weight suspended by a weak string which passes through an open pair of scissors next to a sign saying "Snip this."
- (Do this if nothing else.) Track actual usage of the app and modify your defaults based on actual usage. Bonus points if you can do it dynamically, if that makes sense for your app. For example, if you pick A as the default and 25% of your users go out of their way to change it to B, then that probably should have been B. (You can split test and see how many people would have changed it to A if it had defaulted to B.)
When I find people breaking these sorts of rules, it's usually because they're thinking of themselves or some non-customer stakeholder.
edited to add a corollary: until you've done the sort of testing patio11 advocates, you don't know who that customer is.
For example, say you're targeting teachers. Keeping a laser focus on what teachers want is important. However, I think you need to put extra focus on making their first five minutes absolutely amazing. (And their first 30 seconds. And their first 5 seconds.) My reason for this is simple: almost all apps are going to leak an amazing number of their customers between first and second use. I don't have my report in front of me at the moment, but I think something like 40% of BCC users never complete their first bingo card and never log in again. Essentially none of these people buy the software. On the other hand, roughly 2.4% of trialers convert, or roughly 4% of users who succeed in their first interaction with the app. Increasing my bottom line by 5% requires converting 5% more of that second group -- which, let me tell you, is hard freaking work -- or, in the alternative, improving the first run experience of three out of every 40 users who fail to complete Task #1.
It is really hard to optimize your entire application, user experience, value proposition, etc to get +5% conversion. However, polishing your first five minutes until it freaking shines is not nearly as difficult. Do you present people with a blank page currently? Spend an hour and put something on it. I will put money on that helping. Does it take a critical mass of friends/input/lions slain to get fun? Do the work for them. Fake it if necessary.
And, yeah, instrument everything. Can I plug Mixpanel here? plug Every time I think "You know I should really build more instrumentation into my app..." I remember "Oh, wait, it takes a twentieth of the time to just throw it on Mixpanel -- no visualization code or complicated controls to refine the data range required, praise be."