The Sun lights the globe where it really is (wwwroot/js/sun.js, the Astronomical Almanac's low-precision solar coordinates): the day map shaded by the Sun's height and the Earth–Sun distance, warm city lights on the night side, and a twilight blend about 13° wide between them. It shows now, refreshed every 30 s, or the moment of the hovered, focused or pinned post: a click on a card pins it, and the subsolar point travels there the shorter way round. The panel's top corner shows that moment, the phase of the day and solar time at the post's place, and the season in its hemisphere (or in both, for a post without a place). Its tooltip shows the subsolar point, declination, axial tilt, distance, irradiance, day length and the next equinox or solstice. Land borders are thin paths. Country names are in the reader's language and appear as the camera comes closer: largest countries first, away from the globe's edge, never overlapping. They come from world-atlas 2.0.2 (Natural Earth 1:50m), prepared by tools/globe/prepare-countries.py, and are vendored with their hashes in SOURCES.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
2.9 KiB
The globe's vendored files
Copied once on 2026-10-04 from the npm registry (registry.npmjs.org) and, for the day texture, from NASA
(eoimages.gsfc.nasa.gov); the build and the app never fetch them from anywhere else. To update, download the new files,
copy them the same way (the day texture through tools/globe/prepare-day-texture.py, the countries through
tools/globe/prepare-countries.py), and replace the hashes.
NASA's mosaic does not wrap cleanly at the 180° meridian near the poles (a lighter strip at its east edge), which the globe, drawing each pixel at its exact place, shows as a line from each pole; the script blends that strip into the map on both sides, only on rows where the two sides agree, and gives the rows within half a degree of each pole one colour.
| File | From | Licence | sha256 |
|---|---|---|---|
globe.gl.min.js |
globe.gl 2.46.2, dist/globe.gl.min.js (UMD, defines window.Globe) |
MIT, LICENSE-globe.gl |
2c3e445c04d121215910a89688b96091c8a72071c122a4f830081a39b636c94c |
earth-blue-marble.jpg |
NASA Visible Earth, Blue Marble Next Generation with topography and bathymetry, December 2004 (world.topo.bathy.200412.3x5400x2700.jpg, sha256 a9f0088972dee0254610af851c4d6838ca3f2cf79176987e0a5713e2c15ec042), seam repaired and scaled to 4096×2048 by tools/globe/prepare-day-texture.py |
NASA, public domain | 1334612d91d5104afb0e48cce916e100575c2969baf99e21454c23535f4ce713 |
earth-night.jpg |
three-globe 2.45.3, example/img/earth-night.jpg, 4096×2048 |
NASA Earth Observatory "Black Marble" (city lights), public domain | 355ab23dd1323315b393d7b91dd2d7ee223a1cbaaba2b48dc72ba90d371ced24 |
countries.json |
world-atlas 2.0.2 (tarball sha256 032e7765f2ce00edaeafec23ff22bc3b77e42987c257da944cc585b452c05b97), countries-50m.json (sha256 04342cdc1e3016bcd7db1630de95684d67b79fe3c8c460321e87aef469502394): land borders and name positions, by tools/globe/prepare-countries.py; two-letter codes from Debian's iso-codes 4.20.1 (iso_3166-1.json, LGPL-2.1, only the code mapping is used) |
Natural Earth 1:50m, public domain; world-atlas ISC, LICENSE-world-atlas |
5194ad47c539b4c89826a48616ddbef2b2d2fbd2ca9a368dd6d2bced81e0d74f |
globe.gl.min.js bundles its dependencies: three.js r185 (MIT, © 2010–2026 three.js authors), three-globe (MIT, © 2019
Vasco Asturiano), @tweenjs/tween.js (MIT), kapsule and accessor-fn (MIT, © Vasco Asturiano), and d3 modules (ISC, ©
Mike Bostock). Their notices are in LICENSES-bundled.txt.
Country names are not in countries.json beyond Natural Earth's English ones: the globe asks the browser
(Intl.DisplayNames) for each two-letter code in the reader's language, and falls back to the English name for the
few areas without a code (Kosovo, Somaliland, Northern Cyprus, …).
The service worker leaves this folder out of the offline precache (service-worker.published.js): the feed page
loads it the first time it shows the globe.