The 2024 total solar eclipse

Updated:

North America has been blessed with two total solar eclipses in the span of a decade. The first one has already passed back in 2017, and now everyone is preparing for next year’s.

I will be wearing an eye patch. I got this idea from Glenn Scheider’s recount of the 1991 eclipse

At contact-2 minus twenty minutes my wife and I each donned eye patches to dark adapt one eye prior to totality. As usual this trick drew strange looks from the uninitiated, but, as it has before, turned out most valuable once totality arrived.

But then I removed the eye patch which had been covering my right eye. Like opening up the f/ring on a stopped down camera lens the radial coronal extensions immediately bloomed to 5 solar radii as my dark adapted eye began sending visually enhanced signals to my brain. The corona, which previously was astounding, took on a new magnitude of beauty. Tendrilly detail threaded through streamers and plumage alike, unseen or just barely on the edge of detectability at the start of totality literal sprang into view.

Photography

Because there won’t be a better chance to capture an event like this anytime soon, photographing the eclipse is a must.

Automation

I don’t want to get distracted when the moment comes, so I am working on a Lua script that calls gPhoto to control camera and take pictures at different exposures.

You might want to tweak the camera settings for your model / lens.

local exec = os.execute
exec("gphoto2 --set-config capturetarget=1") -- Capture on SD card

local function generateFlags(options)
	local flags = {}
	if options.iso then
		table.insert(flags, string.format([[--set-config-value iso="%s"]], options.iso))
	end

	if options.speed then
		local s = options.speed
		if s < 1 then
			s = string.format("1/%.0f", 1/s)
		end
		table.insert(flags, string.format([[--set-config-value shutterspeed="%s"]], s))
	end

	if options.aperture or options.f then
		local value = options.aperture or options.f
		table.insert(flags, string.format([[--set-config-value f-number="%s"]], value))
	end

	if options.capture then
		table.insert(flags, "--capture-image")
	end

	return flags
end

function config(options)
	local flags = generateFlags(options)
	exec("gphoto2 " .. table.concat(flags, " "))
end

function capture(options)
	options = options or {}
	options.capture = true
	config(options)
	if options.count then
		for i = 1, options.count - 1 do
			config { capture = true }
		end
	end
end

-- Partial
capture { iso = 800, aperture = 6.3, speed = 1/400, count = 2 }
capture { iso = 2000, count = 2 }

-- Total
config { iso = 200, aperture = 8 }
for i, speed in ipairs { 1/4000, 1/2000, 1/1000, 1/500, 1/250, 1/100, 1/60, 1/30, 1/15, 1/8, 1/4, 1/2, 1, 2 } do
	capture { speed = speed, count = 2 }
end

Eclipse Day

I made more modifications to the Lua script in the days prior to the eclipse. The script now waits for the provided contact times to take pictures.

As for the eclipse, it was a complete success! There were a few cirrus clouds that partially obscured the partial and total phases, but the corona was still visible and fine details could be resolved.

I covered one eye about fifteen minutes before totality. The left eye now partially used to darkness was able to create a fuzzier and brighter corona, it was a neat effect, but not as impressive as I imagined. Perhaps I needed more time to my eye to get used to low light, or the clouds ruined the intensity of the effect.

Shadow bands were not visible this time, perhaps due to the cloudy weather.

There were many solar prominences! It’s not a surprise, since we are approaching solar maximum. I was even able to notice a bright red dot during totality, which completely blew my mind!

Totality and solar prominences. 350mm, 1/100s f8.0, ISO 100