Less Wrong Karma Chart Website

post by ScottL · 2016-02-15T12:36:12.932Z · LW · GW · Legacy · 26 comments

As a learning exercise, I wrote a web app which shows some charts on your karma score.

I recommend just going to the website and trying it out, but here is a description of it as well if you're interested. To use it just enter your user id in the text box at the top and then press the go button. It will show that it is loading and after a while five charts will be shown.

Please note that it may take a while to load. I am scraping all the information from your users page. It shouldn't take too long though. On my computer it takes less than a minute to load all the information on my karma score, but it did take around half an hour to load Eliezer_Yudkowsky's karma information. YMMV depending on what computer you are using. It is not your score that determines how long it will take, but the amount of comments and posts that you have made. I recommend using chrome as I haven't tested it in any other browsers.

The karma calculated by LessWrong also might be slightly different to what my web app shows. For example, my webapp shows Eliezers karma total score as 290096 and in LessWrong it is 290174. I am pretty sure that my code is right since I counted one example out and I do know of one bug in the LessWrong code that would effect the total score. There are also other things that LessWrong takes into account that I don't, e.g. karma awards and the troll tax. The difference shouldn't be too major, though, so it shouldn't be a big problem.

The website is hosted on github and the code can be found here.

TLDR: Try out the Less Wrong Karma Chart Website and let me know what you think or if you run into any issues.

26 comments

Comments sorted by top scores.

comment by philh · 2016-02-15T13:25:32.071Z · LW(p) · GW(p)

Neat! And it seems to work on firefox. Some comments:

I think some users have simply been awarded karma, which your app wouldn't be able to catch. It also won't catch karma lost from paying the troll tax (replying to downvoted comments).

Pressing enter with the box focused didn't start the scraping. I had to click 'go'.

I'd put main and discussion upvotes on the same scale. (So the 'main' y-axis is just 10 times the 'discussion/comment' y-axis.) Right now they don't even have zero in the same place, which is really weird. Maybe also make the scale nonlinear.

It's hard to click-and-drag over the whole width or height of the chart.

I'm not sure how easy this would be, but I'd appreciate a distinction between meetups and non-meetups. (But I think some meetups are in main and some are in discussion.)

I'd like more context on posts/comments without having to visit them. For posts, the title; for comments, maybe the title of the attached post plus a few words (like in the sidebar). It might be too noisy to put that in the hover box; if so, perhaps if I click, the hover box expands and stays there until the next click, and includes an actual link?

You don't actually display total karma anywhere. I had to get it from positive-negative on the pie chart.

The pie chart doesn't have a slice for 'neutral'.

I'd also be interested in seeing cumulative karma as a time series, and 30-day karma as a time series. (This can't be calculated like I think LW calculates it - you'd need to do "karma on last 30 days of comments/posts" rather than "karma given in last 30 days")

This has been mostly negative, so I'll say again that this is really cool. Good job!

Replies from: ScottL
comment by ScottL · 2016-02-16T10:36:15.895Z · LW(p) · GW(p)

Pressing enter with the box focused didn't start the scraping. I had to click 'go'.

Fixed

I'd put main and discussion upvotes on the same scale. (So the 'main' y-axis is just 10 times the 'discussion/comment' y-axis.) Right now they don't even have zero in the same place, which is really weird. Maybe also make the scale nonlinear.

I moved main into a separate graph. This should fix the issues.

It's hard to click-and-drag over the whole width or height of the chart.

I could change it so that you can only zoom in on the yaxis like it is here.

I'm not sure how easy this would be, but I'd appreciate a distinction between meetups and non-meetups. (But I think some meetups are in main and some are in discussion.)

Maybe I will look at that later.

I'd like more context on posts/comments without having to visit them. For posts, the title; for comments, maybe the title of the attached post plus a few words (like in the sidebar). It might be too noisy to put that in the hover box; if so, perhaps if I click, the hover box expands and stays there until the next click, and includes an actual link?

I have updated this. Try it out and let me know what you think.

You don't actually display total karma anywhere. I had to get it from positive-negative on the pie chart.

I fixed the total chart to have title that shows the total score.

The pie chart doesn't have a slice for 'neutral'.

The pie chart is meant to show the total score. Since neutral has 0 score I don't think it should be in the graph.

I'd also be interested in seeing cumulative karma as a time series

Would that be something like this with the total score moving up and down over time. I would do this by ordering the comment/post scores by their dates.

and 30-day karma as a time series.

Would this be similar to the cumulative chart above, but just for 30 days.

Replies from: philh
comment by philh · 2016-02-17T00:09:50.035Z · LW(p) · GW(p)

I have updated this. Try it out and let me know what you think.

Yep, this is an improvement, thanks. I'd probably change the styling slightly, but I'm not sure exactly how. Right now the three

Oh, and I'd recommend adding the year to the timestamp, instead of making me read it off the x-axis.

Re timeseries: for cumulative, I mean the y-axis is "total karma accumulated on all things posted by date X", so essentially the integral of the existing graph. I guess it might look similar to the thing you posted, but (at least for me, and for others who mostly post neutral/positive things) it would only rarely go down.

The 30-day one would be "total karma accumulated on all things posted in the thirty days preceding X".

Replies from: ScottL
comment by ScottL · 2016-02-18T11:29:50.223Z · LW(p) · GW(p)

I'd recommend adding the year to the timestamp, instead of making me read it off the x-axis.

Done

I also did the cumulative chart. I will think about allowing the user to set the dates that are shown on the cumulative chart. It would start with the first comment/post and end with the last, but it would allow you to change the start or end dates if you want.

comment by plex (ete) · 2016-02-22T14:49:50.036Z · LW(p) · GW(p)

Aaron Swartz's highest ranked LW posts can be found with this. I bet a lot of people would love to be able to find his highest rated posts, and share some more widely.

comment by Vaniver · 2016-02-15T17:48:28.610Z · LW(p) · GW(p)

You might want to force the 0 line for both axes to be the same; when mine first loaded my first thought was "why do I have so many negative red boxes?". That the points on the time series are clickable links is a very nice touch.

Replies from: ScottL
comment by ScottL · 2016-02-16T10:38:31.906Z · LW(p) · GW(p)

I moved the main posts into a separate chart.. It should be less confusing now.

comment by Viliam · 2016-02-17T14:19:31.291Z · LW(p) · GW(p)

Is this purely client-side? If there is a database available, it could be useful to cache the scraped data, just in case there are too many people wanting to see the results for Eliezer. The cached data could expire after a week.

Replies from: ScottL
comment by ScottL · 2016-02-18T11:16:21.973Z · LW(p) · GW(p)

Is this purely client-side?

Yes. I hosted it in Github Pages because it's free. The down side is that it only serves static content.. I might be able to use something like firebase, but I don't really want to. I will see how easy it is to create a link that allows you to download the data to a csv file.

comment by Mati_Roy (MathieuRoy) · 2020-04-25T15:27:05.727Z · LW(p) · GW(p)

It doesn't seem to be working anymore. Maybe add this info at the top of the post.

comment by MarkusRamikin · 2016-02-28T22:01:38.481Z · LW(p) · GW(p)

This app pleases me.

Iamnotnarcissisticatall.

comment by Elo · 2016-02-17T05:15:29.258Z · LW(p) · GW(p)

Any chance at getting all comments and posts on one of those graphs? For all users over time? I'd like to see which posts score >=5 and <5 karma..

Replies from: ScottL
comment by ScottL · 2016-02-18T10:56:46.615Z · LW(p) · GW(p)

I don't think so. See Vaniver's comment which describes what the site is doing. I don't know the process, but maybe you can submit a DB request to the trike apps team for this data.

Replies from: Elo
comment by Elo · 2016-02-18T10:59:21.529Z · LW(p) · GW(p)

script should be able to be run on http://lesswrong.com/comments/ without much modification...

Replies from: Vaniver, ScottL
comment by Vaniver · 2016-02-22T15:00:31.809Z · LW(p) · GW(p)

Yeah, I recommend against scraping LW that way instead of making a DB request / building a page that makes that DB request.

Replies from: Lumifer
comment by Lumifer · 2016-02-22T15:54:57.586Z · LW(p) · GW(p)

instead of making a DB request

Can one? In general, is there an available (and working) API to LW?

Replies from: Vaniver
comment by Vaniver · 2016-02-22T16:21:20.524Z · LW(p) · GW(p)

The following is what I had in mind for that section:

maybe you can submit a DB request to the trike apps team for this data.

There is an API but I think it doesn't have the ability to do everything that we'd like it to. See this issue as an example of a missing feature.

But if you have the ability, building that feature and submitting it as a pull request is better than doing it the long way (since it also helps everyone else who wants to do that sort of thing in the future).

Replies from: Lumifer
comment by Lumifer · 2016-02-22T17:14:35.722Z · LW(p) · GW(p)

building that feature

A feature that allows anyone on the 'net to bang on your backend database is not something to be taken lightly :-)

I think LW first needs a coherent API spec, then a framework (including thing like auth tokens, rate limiters, etc.), and only then specific abilities to e.g. ask for all comments of a particular user.

comment by ScottL · 2016-02-18T11:57:52.557Z · LW(p) · GW(p)

You are probably right. I would assume that I can also get the post information from this: http://lesswrong.com/r/all/recentposts/ . A graph with this much data probably wouldn't be useful as it would be too busy. I will look into writing something else to get this data into a usable format.

Edit: Your link only has the main comments, not the discussion ones. I'm not sure what to get all the comment information from.

Replies from: Elo
comment by Elo · 2016-02-18T20:46:32.457Z · LW(p) · GW(p)

maybe 3 months worth; for the past 3 years? 12 graphs in total; showing the trend...?

I figured that with the zoom it would be able to be use-able. but separate graphs work too.

comment by Elo · 2016-02-16T16:20:29.598Z · LW(p) · GW(p)

not sure how long it's supposed to take; any chance of a % bar? 5-10 minutes total.

excellent visualisation, very helpful. Used it to see which discussion posts of mine were good. Generally the ones I spent more time on and felt like they were higher quality posts. my one concern for myself is the difference between a top notch post and a crappy one is about 5 karma. Bad discussion posts by me are around 4 karma or less, good ones are 9+ with some in-betweeners. Doesn't seem like they are far apart in score even though they are far apart in quality (to me). Going to think about it and see if I can take further strides upwards from here...

Replies from: Vaniver
comment by Vaniver · 2016-02-16T19:12:51.214Z · LW(p) · GW(p)

not sure how long it's supposed to take; any chance of a % bar? 5-10 minutes total.

The way it works is by going to the relevant section of someone's user page and hitting the 'next page' link until it runs out of results. You only figure out how many comments someone's made at the end, and so a % bar isn't that possible. (One could display the number of comments scraped so far.)

Replies from: philh, Elo
comment by philh · 2016-02-17T00:09:56.292Z · LW(p) · GW(p)

Going that route, I'd suggest 'date of oldest comment scraped so far' instead of/as well as the count.

Replies from: ScottL
comment by ScottL · 2016-02-18T11:26:41.217Z · LW(p) · GW(p)

I combined the above suggestions. While it is scraping the data, it now also has a table showing the last scraped elements posted date, the number of items scraped and the scraped score. This is split into two rows one for comments and one for posts.

comment by Elo · 2016-02-16T23:12:10.149Z · LW(p) · GW(p)

I think that would be better than nothing. Also the example of EY; and his karma score made it seem like it could handle a 1000 karma score in a few seconds.

comment by Brillyant · 2016-03-17T21:53:26.464Z · LW(p) · GW(p)

This is so good. Great work.