Back in April I built SOLSTICE, a page that watches the sky over Chaco Canyon in New Mexico, the same sky the people who built its great houses were watching a thousand years ago. This fall I came back to it with everything I’ve learned from forge3d since, and ended up rebuilding most of it. The big idea of the new version is simple: at Chaco, the horizon isn’t flat. The canyon walls are the horizon, and the skyline is the calendar.
Chaco Canyon on the summer solstice, June 21, 2027, just after sunrise · USGS 3DEP lidar · NAIP 2022 aerial photography · rendered with forge3d 1.40.1
delays June sunrise
at Pueblo Bonito
on a flat horizon
its own skyline
for the flyover
The flight
The camera flies the length of the canyon on the morning of the longest day, with the Sun placed where it will really be, low in the northeast, and the shadows running west down the canyon ahead of it.
- Fajada Butte. It opens east of the butte that holds the Sun Dagger, swings around it, and turns west.
- Una Vida and Hungo Pavi. Two of the oldest great houses, tucked in close under the north wall.
- Chetro Ketl and Pueblo Bonito. The heart of the canyon. Bonito’s big D-shape is still in the cliff’s shadow while the canyon floor in front of it is already lit.
- Kin Kletso to Peñasco Blanco. Out along the north wall to the great house at the west end, near the painted panel often linked to the supernova of 1054.
The skyline is the calendar
The first version compared each day’s sunrise to one number. The new one starts with the land. For eight of the sites, a small Python script walks outward from the site in every direction, a quarter of a degree at a time, across USGS lidar elevation (metre-scale near the great houses, 5-metre in the rest of the canyon, 30-metre out to 80 kilometres), and keeps the highest point it can see, allowing for the curve of the Earth. That gives each great house its own skyline. Then, for every day of the year, it finds the moment the Sun’s top edge clears that skyline.
The difference is bigger than I expected. On a flat horizon, the summer solstice Sun comes up at 5:55 AM. At Pueblo Bonito, which sits right under the canyon’s north wall, it doesn’t clear the rim until about 7:11, more than an hour later and ten degrees further around, at 70.4°. At Una Vida, even closer in under the cliff, it’s later still. Up on the mesa at Pueblo Alto and out at Peñasco Blanco, the skyline is nearly flat and sunrise lands within a few minutes of the textbook time.
On the page, the horizon calendar draws each site’s real skyline and puts every sunrise of the year on it, so you can watch the Sun walk north along the rim toward June and back toward December. It also marks where the Moon rises at its extremes, which brings in the slow one: the Moon’s 18.6-year standstill cycle. The last major standstill was the winter of 2024–25, so we’re just past it now. The next minor standstill is around 2034.
Summer solstice sunrise, June 21, 2027, 6:18 AM.
Same camera, winter solstice sunrise, December 21, 2027, 7:48 AM. The Sun has moved sixty degrees along the horizon.
What changed
Going back through it carefully, I found a few things I’d taken on trust in April that didn’t hold up. Fixing them was honestly the best part, because each one taught me something about the place.
- The Casa Rinconada number. The old page waited for the sunrise to reach 66.5°. That number is 90° minus the tilt of the Earth’s axis, not a sunrise direction, so the alignment light could never switch on. At Chaco’s latitude the summer solstice Sun rises at about 59.8° on a flat horizon, and at 61.6° over Casa Rinconada’s own skyline.
- The Casa Rinconada story is debated. Light through a northeast window does reach a wall niche after solstice sunrise, but that part of the wall was rebuilt after the 1930s excavation, and a roof post would likely have blocked the beam. The page now tells it that way.
- The sites moved. Some of my site markers were off by a few hundred metres, and Wijiji by four kilometres. All eleven now come from OpenStreetMap and Wikipedia and were checked against 0.6-metre aerial photos.
- The supernova panel is at Peñasco Blanco, at the west end of the canyon, not near Fajada Butte. And the citation I’d attached to Casa Rinconada was really about the Moon markings on Fajada Butte.
- The Moon’s phase was being guessed from how much of it was lit, which can’t tell a waxing Moon from a waning one. It now uses the Moon’s angle from the Sun.
The full list is in the project’s README.
forge3d with no graphics card
In April I wrote that rendering on GitHub’s servers “isn’t practical,” since they have no GPU. It turns out it is, just slowly. forge3d draws with Vulkan, and Mesa ships a software Vulkan driver that runs on an ordinary CPU. With a virtual display in front of it, the forge3d terrain viewer runs headless on a GitHub Actions machine. Each frame takes about twenty seconds, so the 1,651 frames of the flyover are split across thirty jobs that run side by side, then stitched together with ffmpeg and committed back to the site.
- The shape is USGS lidar. The whole canyon, about 22 by 20 kilometres, drawn in layers so the ground near the camera is as sharp as the data allows (more on that below).
- The colour is NAIP. The USDA’s 2022 aerial photos of New Mexico, colour-graded after forge3d’s Bryce Canyon example.
- The light is the real Sun. forge3d’s solar calculator places it for the date and minute on each image, and the viewer works out the shadows and the shading in the folds. A few lines of Python paint the dawn sky.
One thing I learned the hard way: the viewer won’t tilt the camera flatter than five degrees below level. Ask for a lower look and it quietly raises the camera instead, which put all my labels in the wrong place until I copied that behaviour into the label code.
Pueblo Bonito from the north rim, summer solstice sunrise.
Update: half a metre
A day after this went up, I wanted the ground sharper, so I went looking for better lidar. It turned out the lidar was already good. The catch was forge3d’s viewer, which squeezes any terrain down to about 2,048 points across. Spread over 22 kilometres of canyon, that’s one point every 11 metres, however fine the data underneath. The fix was to draw every frame in layers with the same camera and the same Sun: the whole canyon for the horizon, a few kilometres around the camera a little sharper, and the ground right below it sharpest of all. Each layer stays under the limit, and the finer one wins wherever it has ground.
Then came the real surprise. USGS’s finished elevation product has a hole right over the canyon core, the square kilometre around Pueblo Bonito, and it fills the hole with much coarser data. A newer survey was flown over Chaco but only published as raw point clouds, so I borrowed the trick from Project Kiva: download the tiles near each great house, keep the laser returns that reached the ground, and grid them at half a metre. That’s 89 tiles with 10 to 17 ground points in every square metre.
The same 600 metres around Pueblo Bonito. Left: what the USGS elevation service returns. Right: half-metre ground built from the raw point clouds.
That made room for a new view on the page: Pueblo Bonito from above the canyon floor on the June solstice, about an hour after the Sun first touches the open horizon, with the Sun low on the right raking across the walls.
Pueblo Bonito, summer solstice morning, 6:54 AM. The rubble against the back wall is Threatening Rock, which fell from the cliff in 1941.
The better ground made the skylines better too. With the canyon walls right next to the great houses now drawn from the new lidar, a few sunrises and sunsets moved by several minutes. Pueblo Bonito’s June sunrise is five minutes later than I first had it, and Una Vida’s nine. The flyover, the stills and the calendar on the page all use the new ground.
What’s on the page now
- Right now: the live Sun and Moon over Chaco, computed in your browser, and whether Pueblo Bonito is in sunlight yet or still behind the canyon wall.
- The horizon calendar for eight of the sites, with the solstices, today, and the Moon’s standstill limits on each skyline.
- Two dawns, one camera: the summer and winter solstice sunrises side by side, plus the view from the north rim and the Pueblo Bonito close-up.
- The Sun Dagger on Fajada Butte, and where we are in the Moon’s 18.6-year cycle.
- A sight-line map that draws the solstice sunrises and the standstill moonrises from any site.
- The places: eleven sites with notes I’ve tried hard to get right.
Last thing
A daily job still updates the sky every morning, so the page keeps watching even when I’m not. Thanks again to Milos Popovic for forge3d; this is the first time I’ve run it without a graphics card at all, and it held up beautifully. And the most important line on the page belongs here too: Chaco Canyon is the ancestral homeland of the Pueblo peoples and the Diné, and a sacred place to them today.
Live at brooksgroves.com/solstice · code at github.com/bdgroves/solstice · the first build post is here.
Data: USGS 3D Elevation Program, including the CO_CONMGaps_D24 lidar point clouds; USDA NAIP 2022 via Microsoft Planetary Computer; site locations from OpenStreetMap and Wikipedia. Rendering: forge3d 1.40.1 by Milos Popovic, with Mesa’s llvmpipe Vulkan driver. Astronomy: PyEphem and astronomy-engine. Sources for the archaeology are listed on the live page.
Go deeper
The Mystery of Chaco Canyon — The Solstice Project, 1999, about 56 min. Anna Sofaer’s documentary on Chaco’s solar and lunar alignments, narrated by Robert Redford.
The Sun Dagger — The Solstice Project, 1982, about 58 min. The original film about the spirals on Fajada Butte, also narrated by Robert Redford.
Anna Sofaer, Founder of the Solstice Project — Report From Santa Fe (KENW), 26 May 2024, about 28 min. Sofaer looks back on finding the Sun Dagger in 1977 and forty years of Chaco research.
The Standstill — Scott Thybony’s Canyon Commentary, KNAU, 26 February 2024, about 4 min. A cold night on Fajada Butte waiting for the major standstill Moon.
Sofaer, A., Zinser, V. & Sinclair, R.M. (1979). A unique solar marking construct. Science 206, 283–291. The paper that introduced the Sun Dagger; free PDF from the Solstice Project.
Sofaer, A.P. & Sinclair, R.M. (1983). Astronomical markings at three sites on Fajada Butte. In Carlson, J.B. & Judge, W.J. (eds), Astronomy and Ceremony in the Prehistoric Southwest. Maxwell Museum of Anthropology, Anthropological Papers 2. Free PDF from the Solstice Project.
Sofaer, A., Weiner, R. & Stone, W. (2017). Inter-site alignments of prehistoric shrines in Chaco Canyon to the major lunar standstill. In The Science of Time 2016, Astrophysics and Space Science Proceedings 50, 79–101. Springer.
Munro, A.M. & Malville, J.M. (2011). Ancestors and the sun: astronomy, architecture and culture at Chaco Canyon. Proceedings of the International Astronomical Union 7 (S278), 255–264.
Plog, S. & Heitman, C. (2010). Hierarchy and social inequality in the American Southwest, A.D. 800–1200. Proceedings of the National Academy of Sciences 107, 19619–19626.
Crown, P.L. & Hurst, W.J. (2009). Evidence of cacao use in the Prehispanic American Southwest. Proceedings of the National Academy of Sciences 106, 2110–2113.
The Chaco Meridian — Stephen H. Lekson’s big, much-debated idea about Chaco, Aztec and Paquimé, in its 2015 second edition.
A Guide to Prehistoric Astronomy in the Southwest — J. McKim Malville’s friendly field guide to sky-watching at Chaco, Mesa Verde and Chimney Rock.
Chaco Culture National Historical Park — National Park Service; plan a respectful visit to a place that is sacred to Pueblo and other Indigenous peoples today. · Chaco Culture — UNESCO World Heritage listing, inscribed 1987. · The Solstice Project — Anna Sofaer’s nonprofit, with papers and films.
Chaco Research Archive — a century of excavation records, open to all. · USGS 3D Elevation Program — the lidar behind every skyline. · forge3d — the renderer for the flyover.
SOLSTICE — the live page, updated daily. · bdgroves/solstice — the code on GitHub.