Skip to content

Blog

Technical deep dives, engineering challenges, and the science behind eclipse photography.

Two Bugs at the Edge: Fixing Contact Times for Graze-Zone Observers

Two bugs in the contact time resolver specifically affected observers near the totality path limit — one produced false totality predictions for outside-path locations, the other silently dropped limb corrections that can reach 30–80 seconds at the path edge. Both are now fixed.

Astronomy Mathematics Eclipse Path Bug Fix Lunar Limb

When the Wizard and the Validator Disagree: Defense in Depth for Sony Eclipse Bracket Scripts

A user ran a corona bracket script on a Sony ZV-E10 via the libgphoto2 fallback path and hit four sequential bugs across the wizard, the renderer state, and the executor. A postmortem on why constraints need to be enforced in depth — and what happens when a UI cap, a runtime validator, a snapshotted backend, and a silent override all disagree.

Sony libgphoto2 Wizard Validation Bracketing Defense in Depth Zustand TypeScript

Sony CrSDK on macOS Apple Silicon: Five Bugs Between USB Plug-In and "Connected"

Sony's Camera Remote SDK ships native arm64 dylibs — but five distinct macOS-specific bugs sit between attaching a Sony A7 IV and a working SDK session. Hardcoded plugin paths, a SIP-bypassing daemon respawn race, an SDK Init that segfaults post-Release, a "stop live view" that doesn't reach the camera body, and a stale PTP session that needs an IOKit USB re-enumerate to clear.

macOS Sony Camera SDK Apple Silicon IOKit USB ptpcamerad SIP fork-safety

macOS Multi-Camera USB Challenges: Canon EDSDK, libgphoto2, and ptpcamerad

Connecting Canon and Nikon cameras simultaneously on macOS hits a fundamental platform limitation: ptpcamerad claims exclusive USB access to all PTP cameras. Here's what we tried, what failed, and the workaround that works.

macOS Multi-Camera Canon Nikon USB ptpcamerad

Supporting Sony Cameras in eclipseClick: Two SDKs, One Bridge, and a Lot of COM Interop

Sony's Camera Remote SDK doesn't support older models like the ZV-E10 or A7 III, so we built a second bridge using Windows Portable Devices MTP extensions. Getting COM interop working on .NET 8 with trimming required multiple rewrites — and Sony testing exposed DeviceBusy retry gaps across every vendor.

Sony Camera SDK COM Interop C++ C# PTP WPD

Nikon MAID SDK on macOS Apple Silicon: Why It Fails and How I Worked Around It

A deep dive into 9 distinct failure modes — from wrong binary formats to ARM64 Pointer Authentication crashes — and how I replaced the proprietary SDK with libgphoto2.

macOS Nikon Camera SDK Apple Silicon libgphoto2

How eclipseClick Computes Eclipse Contact Times

From Besselian elements to sub-second timing — the math and algorithms behind every prediction, including Newton-Raphson iteration, WGS84 oblate Earth, and lunar limb corrections.

Astronomy Mathematics Besselian Elements Newton-Raphson

Why I Built eclipseClick

Three eclipses, two automation tools, and one persistent question: what if capture software could disappear on eclipse day? The origin story of eclipseClick.

Eclipse Photography Automation Origin Story