Forum Karma: view stats and find highly-rated comments for any LW user

post by Max H (Maxc) · 2023-07-01T15:36:28.881Z · LW · GW · 16 comments

This is a link post for https://forumkarma.com/

Contents

  Limitations and caveats:
None
16 comments

I've been posting and commenting pretty frequently over the last few months, and I was curious about some stats. What started as a few GraphQL queries and some Python scripting turned into an interactive web app:

Enter a username, and it will give you some stats and a graph, broken down by post and comment karma. You can use the slider to adjust the date range, and the stats are automatically recalculated for the selected time period.

Another feature is the list of "Gems" - comments with at least a few votes that have the highest net karma score, i.e. comments that received strong upvotes from high-karma users, and few downvotes. I found that this often gives a better sense of a user's best comments than just looking at the highest-scoring ones.

It can be useful for finding your own historical top comments, or to get a sense for the best contributions of other users, which are often buried in their comment history and hard to access directly.[1]

Interesting example users:

It works for the EA forum too, though you have to specify a full profile URL to disambiguate:

Limitations and caveats:

Aside: this was the first nontrivial greenfield project that I've developed since GPT-4 was released. I used some technologies I was less familiar with (GraphQL, Chart.js, Tailwind CSS), and had GPT-4 write as much of the code as possible. I've been using GitHub Copilot for day-to-day programming for a while, but this was another level. The code quality wasn't always great, and I'm not sure how much time it really saved me in the end, but it definitely helped me get up to speed with unfamiliar libraries faster, and it was pretty wild to just ask GPT to re-arrange or format the elements on the page and have it produce something that looked pretty good on the first try.

Feel free to report bugs or suggest features in the comments here. (No promises that I'll keep working on it any time soon though.)

  1. ^

    GreaterWrong supports sorting user comments by top scoring or old, which can also be useful for this purpose, but there's no option to filter by a date range.

16 comments

Comments sorted by top scores.

comment by jefftk (jkaufman) · 2023-07-02T02:36:50.231Z · LW(p) · GW(p)

Neat! Looking over my "gems" brings up a few comments that I should revisit to consider turning into top level posts.

Replies from: Dagon
comment by Dagon · 2023-07-02T02:48:38.789Z · LW(p) · GW(p)

Neat, agreed!  I am a little confused by "gems" - is that basically selecting for things with the higher proportion of strong upvotes (and no/few downvotes)?  Are there other ways to have karma per vote be higher than 1?

Replies from: Maxc
comment by Max H (Maxc) · 2023-07-02T02:57:15.741Z · LW(p) · GW(p)

The gems list is the head of the list when comments are sorted by karma per vote (baseScore / voteCount), filtered for comments that received at least 3 votes. The only way to have this be higher than 1 is to receive a strong upvote, or a weak upvote from someone with >1000 karma. It can also be much less than 1, if the comment also got downvotes. I explicitly decided not to add a "controversial" sort, i.e. comments that received a lot of votes with karma (or karma per vote) close to 0.

comment by Max H (Maxc) · 2023-07-01T17:30:23.983Z · LW(p) · GW(p)

Disclaimer I forgot to put in the OP: The stats are intended to be for informational and curiosity-satisfaction purposes; I don't want to encourage people to Goodhart on karma / upvotes more than they already do.

One of the things that the Gems vs. Top comments feature shows is that the highest-karma comments are not always the user's best or highest-effort contributions. Many very-highly upvoted comments tend to be top-level comments on popular / general-interest posts, while higher-effort contributions are buried deep in a nested comment thread. In my experience, comments at even one level of nesting tend to receive far fewer votes than top-level comments, regardless of their quality.

Replies from: Vladimir_Nesov
comment by Vladimir_Nesov · 2023-07-01T18:09:28.644Z · LW(p) · GW(p)

Effort is cost, not value.

Replies from: pktechgirl
comment by Elizabeth (pktechgirl) · 2023-07-02T03:48:00.479Z · LW(p) · GW(p)

This is true, but I think Max is correct that karma breaks down at the edges as a measure of value. My highest karma comment was just "I like that you included this bit" on a popular post.  Some of my others are great and detailed, others you could at least argue were insightful even if they were short and low-effort, but that comment was an applause light I happened to say before anyone else did. I'm glad someone said it and seems fine that it was me, but jesus christ that comment did not deserve 106 karma. 

I think the applause light problem has gotten a lot better since agree/disagree voting was implemented, but it karma still has some applause light function. It doesn't even try to track counterfactuality ("would someone else have said this if I didn't?") so there's no way it could be a perfect measure of value. 

Replies from: Vladimir_Nesov
comment by Vladimir_Nesov · 2023-07-02T06:41:52.574Z · LW(p) · GW(p)

My comment is a specific aside on using effort interchangeably with value, "higher-effort contributions" as an expression of approval, thereby implicitly valorizing effort. This is not good for a forum, a norm that asks for participation to be painful.

Effort is some sort of proxy for value, when there is a process that converts higher effort into higher value, but goodharting it is predictably a problem, so it's prudent to avoid putting it in the role of a proxy. When it's more hedonic to only participate in a lower-effort way, but still manage to select higher-value things to say, that can be vastly better than aiming for effort and ultimately leaving because effort is less comfortable.

Replies from: Raemon
comment by Raemon · 2023-07-02T06:47:47.093Z · LW(p) · GW(p)

I think I've noticed a few places lately where you make what's intended to be a local correction, without engaging with the broader point being made. (I think you've stated explicitly this is intentional although I can't remember offhand)

I vaguely recall a few cases where people interpreted you as making a point about the overall validity of the broader OP, with a resulting confused back-and-forth. 

In this case, I'm guessing you'd agree with "One of the things that the Gems vs. Top comments feature shows is that the highest-karma comments are not always the user's best or highest-effort contributions", if the "or highest effort" was removed? Assuming so, I think it might be worth erring a bit more on spelling out how your local point relates to the broader point being made? (and hopefully save everyone a round trip of comments). 

i.e something like "I agree highest karma comments aren't necessarily the best, but, I want to flag that effort is cost, not value".  (Or, if you do still disagree with the broader point, or don't have an opinion on it, maybe state that instead. But, like, make the intended scope more clear. The brevity of the initial comment seems outweighed by the subsequent back-and-forth IMO)

(edited a few times for hopefully more clarity)

Replies from: Vladimir_Nesov, Maxc
comment by Vladimir_Nesov · 2023-07-02T07:18:27.709Z · LW(p) · GW(p)

I think it might be worth erring a bit more on spelling out how your local point relates to the broader point being made?

It often doesn't. I think allowing some misunderstanding is efficient [LW(p) · GW(p)], and nuance that makes things clearer [LW(p) · GW(p)] can still be loss of efficiency.

Nuance that frames decoupling [LW · GW] in disclaimers feeds the norm [LW(p) · GW(p)] of contextualizing, making decoupling higher-effort. Avoiding the disclaimers directly makes the asides less cumbersome, and works against the expectation that asides are something they are not.

Trivial inconveniences [LW · GW] are key to what actually happens. Norms that make some things more inconvenient are key to what actually happens all the time. Making discussion of local validity more effortful hurts sanity of the conversation [LW · GW] in the long term.

comment by Max H (Maxc) · 2023-07-02T11:09:20.738Z · LW(p) · GW(p)

I actually agree with @Vladimir_Nesov [LW · GW]'s reply to my initial comment (and wasn't planning to reply at all until I read this, haha). I have now used reactions to indicate precisely how I feel about it.

Re-reading my own comment, I definitely didn't intend to "implicitly valorize effort", so if people were reading it that way, the correction / clarification was helpful.

I was more trying to say: comments and threads with the highest ROI for the reader are often not the ones with the most karma, so readers may benefit from making some effort to seek out high-value content in less-obvious places (e.g. nested comment threads, replies to less popular posts). But I'm not trying to valorize that effort either, just pointing it out as something that exists and which can have a distorting effect on karma sometimes.

comment by Zach Stein-Perlman · 2023-07-01T17:26:20.616Z · LW(p) · GW(p)

Nice.

I have an EA Forum linkpost that was backdated to 1972 [EA · GW], which makes my karma-over-time graph pretty funny!

Replies from: jkaufman
comment by jefftk (jkaufman) · 2023-07-02T10:46:27.101Z · LW(p) · GW(p)

Is it normal for link posts to have their dates adjusted to the content, or was this a joke?

Replies from: Zach Stein-Perlman
comment by Zach Stein-Perlman · 2023-07-02T10:48:31.075Z · LW(p) · GW(p)

It's not normal but during the forum's "Decade Review" old linkposts were encouraged and were all backdated (because posts had to be from before 2021 to qualify).

comment by MondSemmel · 2023-10-05T15:38:01.746Z · LW(p) · GW(p)

I enjoyed browsing a few of the top comments in the linked profiles, so thanks for making this <3.

comment by philh · 2023-07-03T11:51:29.790Z · LW(p) · GW(p)

Neat! I found it interesting that 8/10 of my top comments by karma are from pre-LW 2.0. At least some of that is because the rationality quotes threads were good for karma farming, but apparently there were also just way more votes being cast.

This will be slightly inaccurate for contributions from before strong voting was introduced, and more inaccurate for contributions from before self-voting was introduced.

Not important, but I guess there'll also be some inaccuracies to do with vote strength changing. (Out of interest, do you calculate vote strength based on current karma, or their fuzzily-back-computed karma at the time they made the comment/post?)

Replies from: Maxc
comment by Max H (Maxc) · 2023-07-03T14:01:03.942Z · LW(p) · GW(p)

I do take the way the user's vote strength can change over time into account, yes. The algorithm looks like:

  contributions.forEach((c) => {
    if (c.type === "comment") {
      const karma = c.baseScore - userSmallVotePower(cumulativeKarma);
      cumulativeKarma += karma;
    } else {
      const karma = c.baseScore - userBigVotePower(cumulativeKarma);
      cumulativeKarma += karma;
    }
  });

Where userSmallVotePower and userBigVotePower are taken directly from the LW codebase.

I could make these functions take a date param though, and then return 1 if the postedAt date is before strong voting was introduced, and 0 if the date is before self-voting was introduced. I think these rules have changed a bit over time though, and I couldn't find a comprehensive timeline of when all the changes were introduced.

There are still two remaining ways this can be inaccurate:

  • The calculation assumes that all karma is received at the time the comment or post is first submitted, which might result in the calculating users' self-votes as being worth more than they actually were at the time.
  • Users can go back and adjust their self-votes after they get enough karma to change how much their votes are worth. (You can unvote and re-vote on your own old stuff. This doesn't change your own karma, but it can change the score on an individual post or comment by a small amount.)