Software

A selection of things I've built and open-sourced over the years — the engine that runs this site, tools for astrophotography, a few desktop apps, open hardware and firmware, and some distributed-systems libraries from my day job. Almost all of it lives on GitHub. Release write-ups and build notes live in Projects.

Latest software updates

PulsarFab

Regain: one driver hub for the whole rig

Cameras, rotators, filter wheels, focusers and flat panels from more than one vendor, behind the same setup in N.I.N.A., Windows ASCOM and a cross-platform Alpaca server, sharing one fault-tolerant recovery engine.

PulsarFab

Introducing Regain

Camera recovery in N.I.N.A.: isolated SDK workers, separate download and recapture retries, and experimental direct ASI capture.

theatr.us

NINA Field Kit

Multiple Alpaca safety sources, bounded retry policies, and an autofocus trigger with an absolute HFR limit.

PSF Guard

PSF Guard 0.9

Per-night calibration, SNR growth curves, optional RC-Astro processing, and the catalog and stacking fixes in 0.9.5.

Astro & Photography

Capture, grade, solve, stack and publish. The section page adds guides, the Foraxx palette tools and the repositories to add in PixInsight and N.I.N.A. Open the section.

theatr.us

nina-field-kit

Alpaca safety monitoring and an absolute-HFR autofocus trigger for N.I.N.A. Combines required safety sources, handles retries and stale readings, and reports its decisions in live diagnostics.

C#
PulsarFab

pulsarfab/regain

Retryable, fault-tolerant camera capture that recovers a frame from camera memory rather than repeating the exposure, plus drivers for accessories from more than one vendor, all with the same setup across N.I.N.A., Windows ASCOM and a cross-platform Alpaca server.

Rust C#
theatr.us

tenrankai

The engine behind this very site: a fast, flat-file gallery, blog, and CMS with no database and a serious image pipeline — HDR AVIF, ICC-correct resizing, and watermarking.

Rust
PSF Guard

psf-guard

Grade and organize FITS/XISF captures, manage calibration libraries, and build resumable mono and color stacks. Works with a standalone catalog or, through its N.I.N.A. plugin, with Target Scheduler so grading decisions reach the sequencer.

Rust C#
Seiza

seiza

星座 — a Rust astronomy engine for hinted and blind plate solving, calibration, batch and live stacking, and star measurements. Available through a CLI, Rust and Python libraries, and a native C API.

Rust
Seiza

FITS & XISF for Photoshop

Open and save astronomical images directly in Photoshop on Windows and Mac. Choose Float32 or rescaled 16-bit import, debayer tagged images, and retain source metadata on same-format saves. Output is a single flattened image.

Rust C++
Chatstronomy

chatstronomy

Your N.I.N.A. imaging session in chat: image previews, autofocus curves, guiding graphs, and status in Discord or Matrix. The N.I.N.A. plugin installs from the plugin manager and pairs with the hosted Hub or a local runtime.

Rust C#
theatr.us

AutoPierCam

Background still capture for ZWO ASI cameras, with day/night exposure adaptation, a Windows tray app and viewer, durable uploads, and a read-only N.I.N.A. pier-camera panel.

Rust / C#
Seiza

seiza-server

The queued plate-solving service behind seiza.fyi: browser uploads, catalog overlays, downloadable WCS, and native and Astrometry.net-compatible APIs.

Rust / TypeScript
Seiza

seiza-overlay

Reusable astronomical overlays for web apps: WCS coordinate grids, catalog labels, satellite tracks, a React SVG renderer, and PNG export.

TypeScript

Apps & Tools

Desktop apps and tools with their own sites. Open the section.

theatr.us

toposaic

Turns any place on Earth into a 3D-printable topographic puzzle — pick a spot, get terrain tiles that interlock.

Rust
theatr.us

resticpal

A quiet Windows front end for restic backups: catches up after the laptop wakes, keeps working with no window open, and hides none of the repository format. The server adds signed policy, status reporting, and protected maintenance for a fleet of clients.

Rust

Hardware & Firmware

Open hardware and firmware, including the PulsarFab platform. Open the section.

theatr.us

ledbrick

LEDBrick — open hardware and firmware for programmable, high-power LED lighting.

C
theatr.us

notchdeck

Open-hardware dual-mode (USB + BLE) train master controller — a "mascon" — built on the nRF52840.

C
theatr.us

tsumikoro

Hardware and firmware for a contraption that makes a whole lot of spheres roll around. Exactly that.

C

Infrastructure & Distributed Systems

Libraries and daemons from the infrastructure side. Open the section.

theatr.us

akka-quartz

Quartz-based scheduling for Akka actors — "because using Camel to schedule Akka actors is silly." My most-starred project.

Scala
theatr.us

flotswarm

Webhook dispatch for NAT-bound fleets: a Lambda verifies an inbound webhook, fans it out to per-host SQS queues, and agents poll and run only pre-authorized commands.

Rust
theatr.us

mediate

Retryable, failure-tolerant, adaptive HTTP client transports for Go.

Go
theatr.us

zpool-notify

A small daemon that watches ZFS pools and tells you when one degrades — before the second disk goes.

Rust

blueAcro

Open hardware and firmware for the reef-aquarium world, published under the blueAcro org. Open the section.

Archive

Older projects, no longer actively developed, kept for posterity. Open the section.

theatr.us

pertempco

The "Perfect Temperature Controller" — precise, no-nonsense temperature regulation.

Rust
theatr.us

softwedge

An X11 keyboard simulator that types barcode-scanner input from a file or serial port.

C
theatr.us

qsgen

Quick Site Generator — static site generation in a single Python file, and a spiritual ancestor of tenrankai.

Python