What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 131 Stack Exchange communities.

Who are the top 50 users who gain the most rep per keystroke on SO, including CC-Wiki and Closed questions? (excluding users with a reputation lower than 5000)

share|improve this question
    
comments cannot earn rep so why include that text? –  Troggy Sep 11 '09 at 23:33
    
Ok Im fine to remove comments –  waffles Sep 11 '09 at 23:35
    
Same for Wiki-Questions. You would have to calculate the reputation before it's wiki, and I'm not sure that this is available. BTW, I'm willing to bet that the answer is Jon Skeet anyway :) –  Michael Stum Sep 11 '09 at 23:35
    
Well, a keystroke is a char in the data dump, I know it includes tags and does not include edit, but it is indicative –  waffles Sep 11 '09 at 23:36
    
It not Jon Skeet :p !!! not by a mile ! But Jeff and Joel are in the top 10. –  waffles Sep 11 '09 at 23:36
    
Meh. I wanna see who gets the least rep per keystroke. And comments should be included - no weaseling out by using 'em to avoid edits! –  Shog9 Sep 11 '09 at 23:54
    
@Shog, the bottom of the list is the usual suspects (Masi, JB King, Edward Tanguay) they always tend to be at the bottom of lists, I'm not sure how much diff comments would make but I can check it out at some point –  waffles Sep 11 '09 at 23:58
    
Heh. I tried running a query on StatOverflow, but it never finished... –  Shog9 Sep 12 '09 at 0:00
    
@Shog you are quite a ninja, 1 rep per 30 keystrokes :P and that includes the automatically generated html tags, thats 3 times better than Jon Skeet. I am starting to think the 200 a day rep cap is actually "stop Jon Skeet from getting too much rep Cap" oddly enough it has little effect on Joel and Jeff. –  waffles Sep 12 '09 at 0:02
    
@Shog, it takes less than a second on my machine, granted I run my Sql server on an SSD –  waffles Sep 12 '09 at 0:03
    
I suspect my query is considerably less efficient (single query, two aggregate subqueries joined to the users table) - poor Ian... –  Shog9 Sep 12 '09 at 0:07
1  
@Shog Probably an issue with my pre-query engine itself. I've been neglecting it for quite awhile, but finally plan on coding up the repairs. –  Ian Elliott Sep 12 '09 at 0:42
    
How about the data from other S[FUM]? –  Randell Sep 12 '09 at 19:50
    
@Randell, can not do, no data dump for them –  waffles Sep 17 '09 at 0:35

8 Answers 8

up vote 7 down vote accepted

Ok - now you can browse the top results on DataExplorer: http://odata.stackexchange.com/stackoverflow/q/4417/

(converted from an old StatOverflow query, added waffle's coalesce suggestion during the conversion to SQLServer-flavored SQL)

share|improve this answer
1  
Waka-waka, that is good looking. –  random Sep 13 '09 at 0:55
    
nice, the discrepancy between my list and yours, I think, is due to the fact im counting title lengths as well. –  waffles Sep 16 '09 at 7:45
    
Actually, i'm summing the title and the body lengths. –  Shog9 Sep 16 '09 at 14:07
    
Something is weird there, I think you need to add a coalesce around the title, cause null + 100 = null –  waffles Sep 17 '09 at 0:29
    
Also, it points out a bug in my query, datalength in sql server will count 2 char for each unicode char. So my lengths are all doubled. Fixing that now. –  waffles Sep 17 '09 at 0:31
    
Also I noticed you are not excluding wiki questions so I guess that is the other discrepancy –  waffles Sep 17 '09 at 0:34
    
Can you normalize this to rate/month of membership? –  Sinan Ünür Oct 9 '09 at 16:56
    
Interesting. With all the talk of John Skeet, he didn't even make the list. –  RobH Oct 9 '09 at 17:34
    
@Sinan: how do you mean? Do you want a graph showing the rate over time? That'd be rather difficult - old posts collect rep long after they've been posted. –  Shog9 Oct 9 '09 at 17:49
2  
Link is now broken. –  Jon Seigel Jun 18 '10 at 14:45
1  
@Jon: corrected. –  Shog9 Jun 18 '10 at 17:20

Huh, I get completely different data from you, using the following query at the sandbox

select 
  u.DisplayName, sum(length(p.Body)) as keystrokes, 
  u.Reputation, 
  (sum(length(p.Body))/u.Reputation) as rate 
from 
  users u, posts p 
where 
  p.OwnerUserId = u.Id 
  and u.Reputation >= 5000 
group by u.Id 
order by rate asc

My results (some names truncated by my lack of OpenOffice-fu):

User         Keystrokes   Reputation   Keystrokes per Rep
Leon Timmer      89445      11544       7.75
SilentGhost      69347       6636      10.45
Readonly         55616       5312      10.47
John             83115       7803      10.65
ocdecio         162012      15205      10.66
Andy Lester      73388       6525      11.25
Galwegian       194495      16963      11.47
Brad Wilson      94456       8111      11.65
John Sheeha     169968      14077      12.07
Ben Gottlie      90425       7376      12.26
Ben Hoffste      86613       6936      12.49
Ned Batchel      93970       7477      12.57
Gulzar          259712      19577      13.27
Cody Brocio     117107       8775      13.35
yesraaj          75624       5512      13.72
Bombe           103291       7470      13.83
Paul Tombli     364405      26015      14.01
Alex Fort        80378       5606      14.34
jop              79816       5560      14.36
Jon B           126926       8792      14.44
BoltBait         80310       5452      14.73
dF              163451      10994      14.87
David Arno       87383       5787       15.1
Robert Gamb     183487      12095      15.17
Greg            357433      23558      15.17
mad-j            77762       5121      15.18
edg             161120      10578      15.23
cobbal           79607       5199      15.31
ceejayoz        145566       9495      15.33
RichieHindl     179341      11648       15.4
Jeremy Rute     205898      13356      15.42
Chris Upchu     109327       7070      15.46
Sean Bright      95790       6187      15.48
Lars Truije      86416       5560      15.54
EBGreen         104721       6713       15.6
mquander        158458      10072      15.73
John Millik     230122      14520      15.85
Greg Hewgil     689012      42839      16.08
Adam Wright      95252       5915       16.1
Jason Cohen     180693      11150      16.21
chaos           295597      18080      16.35
recursive        84042       5101      16.48
Welbog          150209       9086      16.53
Ferruccio       212614      12816      16.59
Gerald          101581       6112      16.62
moonshadow       87391       5220      16.74
Eran Galper     194523      11537      16.86
jjnguy          158406       9370      16.91
Naveen          103211       6049      17.06
mgb             156303       9104      17.17
share|improve this answer
2  
The statoverflow data is something like 3 months old now - that might account for some of the discrepancies. –  Shog9 Sep 12 '09 at 0:19
    
also I included question titles as well... and used datalength which is a must for text columns –  waffles Sep 12 '09 at 0:28
1  
Yes very old :) I guess I'll patch that tonight. –  Ian Elliott Sep 12 '09 at 0:43
    
Please do refresh it with the latest dump, have dead bodies to rise against. –  random Sep 12 '09 at 0:48
4  
I don't know what random is saying, and i don't want to know what he does with StatOverflow. –  Shog9 Sep 12 '09 at 0:55
1  
Database was updated (changes should fully propagate over the next 15 minutes), which will hopefully give a much more current result. @Random feel free to use against what ever dead bodies you wish. –  Ian Elliott Sep 12 '09 at 7:27
    
Hmm, there is no such thing as datalength in mysql, which is the DB flavor in the sandbox. Besides, you asked for keystrokes, and I don't think that bytes is the same thing as keystrokes. –  ベレアー アダム Sep 12 '09 at 13:23
1  
char_length() would probably be appropriate then. –  Shog9 Sep 12 '09 at 16:19

I find this list pretty interesting, it kind of shows who can get away with the smallest amount of work per reputation, I know Jeff is constantly editing stuff so its a bit unfair. But Jon Skeet still needs to type in 9 times the amount of text that Joel does to get the same reputation.

Its an interesting list, nothing groundbreaking just another bit of data mining. (FYI masi is at the bottom of the list, he has to work mighty hard for his rep)

User              Reputation KeyStrokes KeyStrokes per Reputation 

David             5996       32102      5.35                      
Joel Spolsky      7261       42643      5.87                      
Leon Timmermans   11847      72650      6.13                      
Jeff Atwood       15029      106200     7.07                      
John              8153       63859      7.83                      
ocdecio           18415      160511     8.72                      
Justin Standard   10744      94706      8.81                      
Andy Lester       6761       60242      8.91                      
Galwegian         18348      163420     8.91                      
SilentGhost       9183       82716      9.01                      
Readonly          5947       53863      9.06                      
Ben Hoffstein     7402       69687      9.41                      
Brad Wilson       8815       83619      9.49                      
Pat               7504       72127      9.61                      
Ben Gottlieb      8032       80007      9.96                      
John Sheehan      16371      164322     10.04                     
Niyaz             7110       71547      10.06                     
Haacked           7838       80779      10.31                     
Patrick McElhaney 10283      106139     10.32                     
eduffy            5333       55265      10.36                     
Gulzar            20222      215708     10.67                     
dF                11657      125562     10.77                     
Sean Bright       8712       94165      10.81                     
cobbal            6404       70836      11.06                     
jop               6017       67568      11.23                     
Cody Brocious     9108       102609     11.27                     
Bombe             9849       112078     11.38                     
Greg              30586      349344     11.42                     
Jon B             9590       109767     11.45                     
Ned Batchelder    10812      123900     11.46                     
BoltBait          6015       68964      11.47                     
yesraaj           6087       70601      11.60                     
Rich Bradshaw     5646       65532      11.61                     
Ray Vega          5355       62883      11.74                     
Checkers          5718       67518      11.81                     
Robert Gamble     12762      150880     11.82                     
Paul Tomblin      27740      329422     11.88                     
Chris Upchurch    7397       88417      11.95                     
Jeremy Ruten      14316      172717     12.06                     
edg               11180      135008     12.08                     
Alex Fort         5736       69620      12.14                     
Ayman             7243       89192      12.31                     
Manni             6486       81396      12.55                     
ceejayoz          13110      164848     12.57                     
jjnguy            11983      150684     12.57                     
Esteban Araya     5052       63751      12.62                     
recursive         5638       71466      12.68                     
David Arno        6080       77721      12.78                     
mquander          10813      138203     12.78                     
Lars Truijens     6700       85629      12.78                     

The SQL:

 
select OwnerUserId, (DATALENGTH(Body) / 2) + isnull(DATALENGTH(Title) / 2,0) as Total into #Counts from Posts 
-- ( / 2) is to compensate for nvarchar taking up 2 bytes for each char


select top 50 
    OwnerUserId as UserId, 
    DisplayName as UserName, 
    Reputation, SUM(Total) as [KeyStrokes],
    cast (SUM(Total) / (Reputation + 0.0)  as numeric(6,2)) as [KeyStrokes per Reputation]   
into #t
from #Counts
join Users on Id = OwnerUserId
where Reputation > 5000
group by OwnerUserId, Reputation, DisplayName
order by [KeyStrokes per Reputation] asc 

exec spShog9
share|improve this answer
    
Wow, gotta give Greg props - 30K at 22 keystrokes a point! –  Shog9 Sep 12 '09 at 0:05
1  
I find Leon fascinating, almost all of his answers are a simple to the point code snippet. kudos to him. –  waffles Sep 12 '09 at 0:10
    
Ohhh can you run mine? :D –  Spencer Ruport Sep 12 '09 at 1:35
    
Does this consider the cap? –  please delete me Sep 12 '09 at 2:19
    
Wow, I have no idea how I managed that –  Greg Sep 12 '09 at 7:52
    
@Spencer 47.58, your are pretty high up there, its one completely artificial metric in which you beat Jon Skeet :p whatever that means –  waffles Sep 12 '09 at 8:52
    
I take my victories where I can get them. ;) –  Spencer Ruport Sep 14 '09 at 13:57
    
I'm on the list!!!!!!!!!! –  jjnguy Sep 17 '09 at 0:56

One thing to remember here is that vote != repuation. Many users from the first few pages get lots of votes that earn them zero rep. So a more-interesting metric might be votes / keystroke.

share|improve this answer
    
sure, I reckon Jon would be up there if it was votes per key stroke, the rep cap denies massive amounts of rep from him –  waffles Sep 12 '09 at 1:46
    
You can find out total non-CW votes easily enough, if you want to rerun your queries... either from the data dump or from stackoverflow.com/questions/… –  Jon Skeet Sep 12 '09 at 8:13
    
I ran the stats, Leon is #1, Jeff and Joel are in the top 10. Some first page users creep in to the top 50. First page users put in a massive amount of effort and do not seem to optimise for minimal keystrokes. –  waffles Sep 12 '09 at 13:09
    
I posted a second answer, just for you. –  waffles Sep 17 '09 at 0:51
3  
"First page users put in a massive amount of effort and do not seem to optimise for minimal keystrokes." Of course they don't. They've learned hard lessons about the dangers of premature optimization. –  Super Long Names are Hilarious Sep 17 '09 at 1:35
    
@Chris its not entirely true, Mehrdad and Greg Hegwill, optimise for minimal key strokes :) –  waffles Sep 17 '09 at 5:15

Here is a version on the official data explorer.

share|improve this answer
    
Can't. cloudexchange.cloudapp.net doesn't allow the length function. –  Randolpho Jun 18 '10 at 14:56
1  
@Randolpho It works with len instead of length. –  jjnguy Jun 18 '10 at 14:57
    
Hm, my rate is 17 on SO and 7 (third lowest) on Meta. Maybe I should just stick with my strength. –  mmyers Jun 18 '10 at 15:03
    
@mmyers haha. I think you should help out on SO too, the Java tag needs you. –  jjnguy Jun 18 '10 at 15:06
    
Jon Skeet has expended 6.9 million keystrokes in SO. That's staggering. And that doesn't even include comments. –  mmyers Jun 18 '10 at 15:06
    
@mmy that is ridiculous. That doesn't count for edits either. –  jjnguy Jun 18 '10 at 15:09
    
1.6 million more on comments, according to this query. I have a mere quarter of a million in comments myself, and half a million in posts. –  mmyers Jun 18 '10 at 15:24
    
@mmy My fingers hurt just thinking about it. –  jjnguy Jun 18 '10 at 15:35
    
@mmyers: you made me wonder just how chatty our peers are. Here's the query I made: odata.stackexchange.com/stackoverflow/q/4390/… –  Randolpho Jun 18 '10 at 15:42
    
and now I think I may have broken the ODAta site... –  Randolpho Jun 18 '10 at 15:43
    
@randol You should include comments too. –  jjnguy Jun 18 '10 at 15:57
    
I tried to calculate the ratio between post keystrokes and comment keystrokes, but it broke the site. I think maybe it needs a temporary table or something (or else I just did it wrong). –  mmyers Jun 18 '10 at 16:05
    
@Justin 'jjnguy' Nelson: I keep trying, but every query I run dies. –  Randolpho Jun 18 '10 at 16:35
    
@Justin 'jjnguy' Nelson: Ok, done. Had to do some nasty sub-selects to get it to work, but bam: odata.stackexchange.com/stackoverflow/s/207/… –  Randolpho Jun 18 '10 at 16:41

I dont know about this one. Certain things are summed up in a sentence, others take paragraphs and up and down votes are never consistent, so I think the data would be kind of useless and flawed. Do you consider a low or high value good or bad?

share|improve this answer
    
@Troggy, I do not consider this good or bad, just interesting, see my answer. –  waffles Sep 11 '09 at 23:52
1  
The only thing worse than flawed information, is no information at all. –  Brad Gilbert Sep 12 '09 at 4:23

Cause the front page users really want an appearance (and the rep limits seem to be removing them from the original list), here is the ratios looking at upvotes and accepted answer votes compared to length. This excluded wiki, but rep caps have no effect.

User               TotalUpvotes Reputation KeyStrokes KeyStrokes per Upvotes 

Leon Timmermans    1274         11847      72650      57.03                     
Ben Hoffstein      1063         7402       69687      65.56                     
Joel Spolsky       594          7261       42643      71.79                     
David              446          5996       32102      71.98                     
ocdecio            2069         18415      160511     77.58                     
Andy Lester        743          6761       60242      81.08                     
SilentGhost        977          9183       82716      84.66                     
Galwegian          1883         18348      163420     86.79                     
Jeff Atwood        1200         15029      106200     88.50                     
Ayman              1004         7243       89192      88.84                     
Readonly           584          5947       53863      92.23                     
RichieHindle       3143         21247      290177     92.32                     
Mehrdad            7662         46795      710156     92.69                     
Ben Gottlieb       860          8032       80007      93.03                     
Cody Brocious      1090         9108       102609     94.14                     
Brad Wilson        879          8815       83619      95.13                     
Greg Hewgill       7320         52579      704304     96.22                     
Niyaz              741          7110       71547      96.55                     
eduffy             557          5333       55265      99.22                     
Greg               3468         30586      349344     100.73                    
Sean Bright        930          8712       94165      101.25                    
Gulzar             2102         20222      215708     102.62                    
dF                 1215         11657      125562     103.34                    
John Millikin      2359         17997      245021     103.87                    
jop                644          6017       67568      104.92                    
Neil Butterworth   6241         34628      656571     105.20                    
Haacked            767          7838       80779      105.32                    
Ned Batchelder     1174         10812      123900     105.54                    
cobbal             671          6404       70836      105.57                    
John Sheehan       1530         16371      164322     107.40                    
Robert Gamble      1404         12762      150880     107.46                    
Bombe              1035         9849       112078     108.29                    
Jon B              1009         9590       109767     108.79                    
Paul Tomblin       3006         27740      329422     109.59                    
Rich B             973          7897       107252     110.23                    
Pat                642          7504       72127      112.35                    
mquander           1215         10813      138203     113.75                    
Alex Fort          608          5736       69620      114.51                    
chaos              3525         28425      403880     114.58                    
jjnguy             1295         11983      150684     116.36                    
Jeremy Ruten       1451         14316      172717     119.03                    
Checkers           567          5718       67518      119.08                    
John               535          8153       63859      119.36                    
Manni              678          6486       81396      120.05                    
Chris Jester-Young 2216         19790      267535     120.73                    
Rich Bradshaw      538          5646       65532      121.81                    
yesraaj            577          6087       70601      122.36                    
edg                1101         11180      135008     122.62                    
ceejayoz           1337         13110      164848     123.30                    
recursive          577          5638       71466      123.86                    

Messy SQL:

select OwnerUserId, (DATALENGTH(Body) / 2) + isnull(DATALENGTH(Title) / 2,0) as Total into #Counts from Posts 

-- 1 for upvote, 2 for accepted answer
select p.OwnerUserId, total = SUM(case when VoteTypeId = 1 then 2 else 1 end)
into #upvotes
from Votes v
join Posts p on PostId = p.id
where VoteTypeId in (1,2) and CommunityOwnedDate is null
group by OwnerUserId


select 
    top 50 
    c.OwnerUserId as UserId, 
    DisplayName as UserName,
    up.total as TotalUpvotes ,
    Reputation, SUM(c.Total) as [KeyStrokes],
    cast (SUM(c.Total) / (up.total + 0.0)  as numeric(6,2)) as [KeyStrokes per Reputation]   
into #t
from #Counts c
join Users u on u.Id = c.OwnerUserId
join #upvotes up on up.OwnerUserId = u.Id 
where Reputation > 5000
group by c.OwnerUserId, Reputation, DisplayName,up.total
order by [KeyStrokes per Upvotes] asc 


spShog9
share|improve this answer
1  
This shows that Jon Skeet does not optimise for short answers and works really hard for his rep, he is a true machine :) –  waffles Sep 17 '09 at 0:50

Without even considering the complexity issues (Troggy's point); this figure also means that people who regularly "keep going" long after the rep cap are going to rate relatively low. I humbly submit that this is one of the reasons that neither Jon nor myself appear anywhere in the first 500.

But I'm guessing that the urge to provide a complete answer (including touching on caveats/edge-cases) is the main reason.

share|improve this answer
2  
Marc, my second answer ignores the rep cap. you are at number 299 and Jon is at 100. You work hard for your rep, real hard. its people like Joel who simply need to blurt out something random to get reputation lotteries. –  waffles Sep 17 '09 at 5:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .