Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions data/contributors.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"generated": "2026-09-12",
"total": 76,
"located": 48,
"located": 49,
"places": [
{
"label": "Shanghai, China",
Expand Down Expand Up @@ -375,7 +375,7 @@
"short": "Chengdu",
"offset": {
"dx": -11,
"dy": 4,
"dy": -8,
"anchor": "end"
},
"count": 1,
Expand Down Expand Up @@ -529,6 +529,26 @@
],
"more": 0
},
{
"label": "Lucknow, India",
"country": "India",
"lat": 26.85,
"lng": 80.95,
"short": "Lucknow",
"offset": {
"dx": -11,
"dy": 4,
"anchor": "end"
},
"count": 1,
"people": [
{
"login": "prakhar1605",
"avatar": "https://avatars.githubusercontent.com/u/182423721?v=4&s=64"
}
],
"more": 0
},
{
"label": "Bengaluru, India",
"country": "India",
Expand Down Expand Up @@ -730,13 +750,13 @@
"more": 0
}
],
"cities": 27,
"cities": 28,
"countryCount": 20,
"regions": [
{
"name": "Asia",
"count": 19,
"percent": 25
"count": 20,
"percent": 26
},
{
"name": "Europe",
Expand Down Expand Up @@ -765,9 +785,9 @@
},
{
"name": "Others",
"count": 28,
"count": 27,
"note": "Contributors whose GitHub profile does not say where they are.",
"percent": 37
"percent": 36
}
]
}
18 changes: 16 additions & 2 deletions tools/locations.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,12 @@
"lat": 18.52,
"lng": 73.86
},
"lucknow": {
"label": "Lucknow, India",
"country": "India",
"lat": 26.85,
"lng": 80.95
},
"jakarta": {
"label": "Jakarta, Indonesia",
"country": "Indonesia",
Expand Down Expand Up @@ -836,6 +842,9 @@
"hyderabad, india": "hyderabad",
"chennai, india": "chennai",
"pune, india": "pune",
"lucknow, india": "lucknow",
"lucknow, uttar pradesh": "lucknow",
"lucknow, uttar pradesh, india": "lucknow",
"ho chi minh": "ho chi minh city",
"saigon": "ho chi minh city",
"dubai, uae": "dubai",
Expand Down Expand Up @@ -1006,7 +1015,7 @@
"United States": "North America",
"Vietnam": "Asia"
},
"//labels": "Where each city's name is drawn relative to its dot, in viewBox units, keyed by label so aliases share one entry. Hand-placed because no automatic rule survives the two crowded corners of the map. Guangzhou and Shenzhen are 100km apart, which is 2.6 units at this scale, so one name goes below its dot and the other to the right; and Dublin, Cambridge, Amsterdam, Berlin and Minsk sit within 94 units of each other on one latitude, where 340 units of names have to be stacked onto separate rows above and below, with Barcelona taking the row under Amsterdam. Anything not listed defaults to `start` a little to the right. `anchor` is an SVG text-anchor: start places the text to the right of the dot, end to its left, middle centres it. A name reads as belonging to the dot nearest its anchored edge, so that is what a new entry has to get right — the dots in those two clusters are close enough that a name 20 units out can sit nearer a neighbour's dot than its own. A name also has to stay inside the map, which is what the eastern edge asks for: the svg does not clip, and on the default `start` anchor New Zealand's name ran 65 units past the map's right edge and into the region list beside it, so it is anchored `end` and drawn below Melbourne's row instead.",
"//labels": "Where each city's name is drawn relative to its dot, in viewBox units, keyed by label so aliases share one entry. Hand-placed because no automatic rule survives the two crowded corners of the map. Guangzhou and Shenzhen are 100km apart, which is 2.6 units at this scale, so one name goes below its dot and the other to the right; and Dublin, Cambridge, Amsterdam, Berlin and Minsk sit within 94 units of each other on one latitude, where 340 units of names have to be stacked onto separate rows above and below, with Barcelona taking the row under Amsterdam. Anything not listed defaults to `start` a little to the right. `anchor` is an SVG text-anchor: start places the text to the right of the dot, end to its left, middle centres it. A name reads as belonging to the dot nearest its anchored edge, so that is what a new entry has to get right — the dots in those two clusters are close enough that a name 20 units out can sit nearer a neighbour's dot than its own. Lucknow and Chengdu are the third case, and what collides there is a name with a dot rather than a name with a name: they are 64 units apart on nearly one latitude, and Chengdu's name reaches 49 of those units back west, so on the default anchor Lucknow's own name ran east under Chengdu's and Chengdu's ran over Lucknow's dot. Lucknow is anchored `end` so its name goes west into the empty Arabian Sea instead, where the nearest dot is Bengaluru's 35 units below, and Chengdu's `dy` lifts it a row above Lucknow's dot — which is the half of this that only moving Lucknow's name could not fix, since it was Chengdu's name that was sitting on somebody else's dot. A name also has to stay inside the map, which is what the eastern edge asks for: the svg does not clip, and on the default `start` anchor New Zealand's name ran 65 units past the map's right edge and into the region list beside it, so it is anchored `end` and drawn below Melbourne's row instead.",
"labels": {
"Shanghai, China": {
"dx": 15,
Expand All @@ -1015,7 +1024,7 @@
},
"Chengdu, China": {
"dx": -11,
"dy": 4,
"dy": -8,
"anchor": "end"
},
"Guangzhou, China": {
Expand Down Expand Up @@ -1108,6 +1117,11 @@
"dy": 19,
"anchor": "middle"
},
"Lucknow, India": {
"dx": -11,
"dy": 4,
"anchor": "end"
},
"Cleveland, USA": {
"dx": 11,
"dy": 12,
Expand Down
Loading