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
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'?
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!
This is awesome. Having computed a reasonable distance function between users, you should be able to use this distance function as edge weights in a big graph. Rendering this graph with a force-directed layout algorithm like Fruchtermann-Reingold might create visually appealing results by clustering related users.
I've done this before on different datasets and would love to cooperate with you on it...
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."
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 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.
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).
Based on what other people here are reporting, I wonder if there's a bias towards matches with a large number of comments (e.g., pg, patio11, edw519, etc.). Perhaps there's some normalization needed?
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.
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.
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.
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.
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.
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.
How is "word choice" similarity calculated? If you have a high similarity with someone, does that mean your range of words is the same (perhaps because you write on the same topics) or that your word frequency is the same (because you have similar patterns of speech)?
This is a cool question. Two things: the first is that I stopped using the colins_pride account and subsequently started using the riffer account, so the co-commenting commonality is not particularly high. The terminology score is substantially closer. The other thing is that because the dataset is tilted towards the recent, the colins_pride user is only lightly represented.
Interesting both of my co-founders (tolmasky and boucher) showed up on most of my lists. I guess that means it works, since we tend to talk about similar things.