Rank | Buddy score | User pair |
---|---|---|
#1 | 189 | cperciva<->tptacek |
#2 | 160 | jbooth<->yummyfajitas |
#3 | 134 | jacquesm<->tptacek |
#4 | 116 | patio11<->tptacek |
#5 | 109 | marshray<->tptacek |
#6 | 103 | tptacek<->yummyfajitas |
#7 | 95 | jrockway<->tptacek |
#8 | 93 | lawnchair_larry<->tptacek |
#9 | 85 | pg<->tptacek |
#10 | 81 | rdl<->tptacek |
#11 | 78 | gruseom<->tptacek |
#12 | 75 | kenjackson<->rbanffy |
#12 | 75 | axod<->mattmaroon |
#13 | 69 | axod<->jrockway |
#14 | 68 | rayiner<->tptacek |
#14 | 68 | gojomo<->tptacek |
#15 | 63 | axod<->tptacek |
#16 | 60 | tedunangst<->tptacek |
#16 | 60 | anamax<->jbooth |
#17 | 59 | rbanffy<->tptacek |
#18 | 58 | rbanffy<->recoiledsnake |
#18 | 58 | cperciva<->pg |
#19 | 57 | michaelochurch<->tptacek |
#20 | 55 | AnthonyMouse<->rayiner |
#21 | 53 | davidw<->tptacek |
#22 | 52 | larrys<->tptacek |
#22 | 52 | anigbrowl<->tptacek |
#23 | 51 | sneak<->tptacek |
#24 | 50 | Silhouette<->tptacek |
#24 | 50 | ErrantX<->jacquesm |
#24 | 50 | DanielBMarkham<->tptacek |
#25 | 48 | davidw<->pg |
#25 | 48 | betterunix<->rayiner |
#25 | 48 | Tichy<->tptacek |
#25 | 48 | Retric<->yummyfajitas |
#26 | 46 | mindslight<->tptacek |
#27 | 45 | tptacek<->waterlesscloud |
#27 | 45 | samstave<->tptacek |
#27 | 45 | jlgreco<->tptacek |
#27 | 45 | chc<->tptacek |
#27 | 45 | _delirium<->yummyfajitas |
#28 | 43 | rhizome<->tptacek |
#28 | 43 | btilly<->tptacek |
#29 | 42 | pg<->rms |
#29 | 42 | ivankirigin<->pg |
#29 | 42 | ajross<->tptacek |
#30 | 41 | guelo<->tptacek |
#30 | 41 | grandalf<->tptacek |
#31 | 40 | jlgreco<->rayiner |
#31 | 40 | jlgreco<->mpyne |
#31 | 40 | hga<->tptacek |
#31 | 40 | abstractbill<->axod |
#31 | 40 | Retric<->tptacek |
#31 | 40 | 001sky<->tptacek |
#32 | 39 | dfc<->rdl |
#32 | 39 | crusso<->rayiner |
#32 | 39 | angersock<->tptacek |
#33 | 38 | rayiner<->yummyfajitas |
#33 | 38 | kragen<->tptacek |
#33 | 38 | jacquesm<->jrockway |
#33 | 38 | ChuckMcM<->tptacek |
#33 | 38 | Alex3917<->tptacek |
#34 | 37 | yequalsx<->yummyfajitas |
#34 | 37 | raganwald<->tptacek |
#34 | 37 | pg<->staunch |
#34 | 37 | mattmaroon<->unalone |
#34 | 37 | jbooth<->tptacek |
#35 | 36 | mechanical_fish<->tptacek |
#35 | 36 | _delirium<->tptacek |
#35 | 36 | Natsu<->tptacek |
#35 | 36 | Alex3917<->tokenadult |
#36 | 35 | stcredzero<->tptacek |
#36 | 35 | mindcrime<->tptacek |
#36 | 35 | joe_the_user<->tptacek |
#36 | 35 | dragonwriter<->tptacek |
#36 | 35 | anigbrowl<->jlgreco |
#36 | 35 | CWuestefeld<->jbooth |
#36 | 35 | Alex3917<->yummyfajitas |
#37 | 34 | tptacek<->zedshaw |
#37 | 34 | tptacek<->tzs |
#37 | 34 | mattmaroon<->tptacek |
#37 | 34 | jrockway<->stcredzero |
#37 | 34 | gaius<->tptacek |
#37 | 34 | clicks<->rayiner |
#38 | 33 | run4yourlives<->tptacek |
#38 | 33 | fallentimes<->mattmaroon |
#38 | 33 | barrkel<->tptacek |
#38 | 33 | Tichy<->davidw |
#38 | 33 | DanielBMarkham<->jacquesm |
#39 | 32 | thaumaturgy<->tptacek |
#39 | 32 | swombat<->tptacek |
#39 | 32 | philwelch<->tptacek |
#39 | 32 | nostrademons<->pg |
#39 | 32 | nitrogen<->rayiner |
#39 | 32 | jdp23<->tptacek |
#39 | 32 | iuguy<->tptacek |
#39 | 32 | dragonwriter<->rayiner |
#39 | 32 | coldtea<->pjmlp |
#39 | 32 | briansmith<->tptacek |
#39 | 32 | Alex3917<->pg |
#40 | 31 | tptacek<->trevelyan |
#40 | 31 | moe<->tptacek |
#40 | 31 | jlgreco<->tedunangst |
#40 | 31 | jerf<->tptacek |
#40 | 31 | jacquesm<->mpyne |
#40 | 31 | euroclydon<->tptacek |
#40 | 31 | curi<->yters |
#40 | 31 | Retric<->anamax |
#40 | 31 | DanielBMarkham<->davidw |
#41 | 30 | steveklabnik<->tptacek |
#41 | 30 | staunch<->tptacek |
#41 | 30 | btilly<->yummyfajitas |
#41 | 30 | anigbrowl<->rhizome |
#41 | 30 | ThomPete<->tptacek |
#41 | 30 | JoachimSchipper<->tptacek |
#42 | 29 | jlgreco<->sliverstorm |
#42 | 29 | hga<->jbooth |
#42 | 29 | cperciva<->jacquesm |
#42 | 29 | coldtea<->tptacek |
#42 | 29 | acqq<->tptacek |
#42 | 29 | SwellJoe<->rms |
#42 | 29 | AnthonyMouse<->tptacek |
#42 | 29 | AnthonyMouse<->anigbrowl |
#43 | 28 | rms<->yters |
#43 | 28 | pg<->robg |
#43 | 28 | peterwwillis<->tptacek |
#43 | 28 | pbsd<->tptacek |
#43 | 28 | nitrogen<->tptacek |
#43 | 28 | mike-cardwell<->tptacek |
#43 | 28 | kenjackson<->yummyfajitas |
#43 | 28 | jacquesm<->pg |
#43 | 28 | jacques_chester<->vacri |
#43 | 28 | davidw<->jacquesm |
#43 | 28 | daeken<->tptacek |
#43 | 28 | btilly<->jacquesm |
#43 | 28 | aston<->pg |
#44 | 27 | tptacek<->wmf |
#44 | 27 | jacquesm<->swombat |
#44 | 27 | gte910h<->tptacek |
#44 | 27 | fnordfnordfnord<->tptacek |
#44 | 27 | dllthomas<->dragonwriter |
#44 | 27 | cooldeal<->rbanffy |
#44 | 27 | baddox<->tptacek |
#44 | 27 | StavrosK<->tptacek |
#45 | 26 | timr<->tptacek |
#45 | 26 | rbanffy<->stcredzero |
#45 | 26 | jacquesm<->philwelch |
#45 | 26 | ghshephard<->tptacek |
#45 | 26 | davidw<->patio11 |
#45 | 26 | bane<->tptacek |
#45 | 26 | _delirium<->jacquesm |
#45 | 26 | MichaelSalib<->tptacek |
#45 | 26 | Locke1689<->tptacek |
#46 | 25 | pyre<->tptacek |
#46 | 25 | palish<->pg |
#46 | 25 | mattmaroon<->rms |
#46 | 25 | icebraining<->jiggy2011 |
#46 | 25 | hga<->rdl |
#46 | 25 | davidw<->gaius |
#46 | 25 | burgerbrain<->tptacek |
#46 | 25 | axod<->swombat |
#46 | 25 | axod<->jacquesm |
#46 | 25 | arethuza<->gaius |
#46 | 25 | anamax<->tptacek |
#47 | 24 | tptacek<->wglb |
#47 | 24 | tomjen3<->tptacek |
#47 | 24 | rayiner<->rdl |
#47 | 24 | jrockway<->rbanffy |
#47 | 24 | javajosh<->tptacek |
#47 | 24 | fnordfnordfnord<->mpyne |
#47 | 24 | davidw<->rms |
#47 | 24 | btilly<->rayiner |
#47 | 24 | aston<->rms |
#47 | 24 | arethuza<->jacquesm |
#47 | 24 | Tichy<->curi |
#47 | 24 | Tichy<->axod |
#47 | 24 | RiderOfGiraffes<->jacquesm |
#47 | 24 | MichaelSalib<->yummyfajitas |
#47 | 24 | Confusion<->tptacek |
#47 | 24 | ChuckMcM<->jacquesm |
#48 | 23 | tptacek<->webwright |
#48 | 23 | saurik<->tptacek |
#48 | 23 | rms<->tptacek |
#48 | 23 | rbanffy<->wmf |
#48 | 23 | rayiner<->twoodfin |
#48 | 23 | nikcub<->tptacek |
#48 | 23 | mpyne<->nitrogen |
#48 | 23 | m0nastic<->tptacek |
#48 | 23 | jfager<->yummyfajitas |
#48 | 23 | jbooth<->protomyth |
#48 | 23 | jacquesm<->patio11 |
#48 | 23 | icebraining<->tptacek |
#48 | 23 | huhtenberg<->tptacek |
#48 | 23 | dragonwriter<->lutusp |
#48 | 23 | dllthomas<->lutusp |
#48 | 23 | declan<->tptacek |
#48 | 23 | dcurtis<->pg |
#48 | 23 | clicks<->tptacek |
#48 | 23 | byrneseyeview<->pg |
#48 | 23 | brlewis<->pg |
#48 | 23 | brl<->tptacek |
#48 | 23 | belorn<->tptacek |
#48 | 23 | anigbrowl<->yummyfajitas |
#48 | 23 | anamax<->anigbrowl |
#48 | 23 | Tichy<->yummyfajitas |
#48 | 23 | Karunamon<->tptacek |
#48 | 23 | DanBC<->tptacek |
#49 | 22 | tptacek<->xlnt |
#49 | 22 | rdl<->samstave |
#49 | 22 | pg<->run4yourlives |
#49 | 22 | haberman<->tptacek |
#49 | 22 | gaius<->rbanffy |
#49 | 22 | drivebyacct2<->tptacek |
#49 | 22 | dctoedt<->tptacek |
#49 | 22 | danielweber<->tptacek |
#49 | 22 | alecco<->tptacek |
#49 | 22 | aaronblohowiak<->tptacek |
#49 | 22 | Nrsolis<->tptacek |
#49 | 22 | DanBC<->jlgreco |
#50 | 21 | smokeyj<->tptacek |
#50 | 21 | sachinag<->tptacek |
#50 | 21 | rbanffy<->ugh |
#50 | 21 | protomyth<->tptacek |
#50 | 21 | paraschopra<->patio11 |
#50 | 21 | michaelchisari<->yummyfajitas |
#50 | 21 | jules<->tptacek |
#50 | 21 | jshen<->yummyfajitas |
#50 | 21 | jrockway<->wmf |
#50 | 21 | jerf<->kenjackson |
#50 | 21 | jacquesm<->jules |
#50 | 21 | hugh3<->jacquesm |
#50 | 21 | dllthomas<->dredmorbius |
#50 | 21 | derefr<->tptacek |
#50 | 21 | curi<->rms |
#50 | 21 | caf<->tptacek |
#50 | 21 | byrneseyeview<->nostrademons |
#50 | 21 | betterunix<->tptacek |
#50 | 21 | ars<->tptacek |
#50 | 21 | _delirium<->philwelch |
#50 | 21 | Tichy<->mattmaroon |
#50 | 21 | Tichy<->jacquesm |
#50 | 21 | Tichy<->ars |
#50 | 21 | RiderOfGiraffes<->pencil |
The whole Hacker News comments database is publicly available, so I wanted to play around with it a bit to see if I could find anything interesting.
Idea: People can reply to each other's comments. Could you tally up who tends to respond to whom, and make a kind of "best friends" list out of that?
A friendship is pairs of people who tend to reply to each other's comments a lot. Friendships need to be two-way. Unrequited love is not counted here, people have to exchange messages.
If Alice replies to a comment from Bob, and then later on Bob responds to a different comment from Alice, the Alice<->Bob friendship gains one point. In other words, if there are x comments from Alice to Bob and y comments from Bob to Alice, then their "friendship score" is min(x, y).
I downloaded HNCommentsAll.json from here. That dump seems to be rather old. If you have a newer dump and want to re-run the toplist, here's how to do it.
First you need ijson. It's a JSON parser that works as a stream, so that the entire 9GB comments dump doesn't need to be loaded to memory.
pip install ijson
Each step builds a file that the next step uses, so that if something goes wrong in the middle you can pick up where it failed.
python build_author_dict.py
python replies.py
python best_friends.py
Note that this could take hours to run. There are millions of comments, and the code hasn't been optimized. It took about 2 hours on my late 2013 MBP with the 9GB dump file. If you do update the list, please send a pull request so I can include your more up-to-date toplist here.
Thanks for reading!