Cull a shoot, end to end
Twenty minutes from a folder of frames to an album-ready export, with nothing written over an original. Also: the install method that will cost you an evening if you pick the obvious one.

Twenty minutes from a folder of frames to an album-ready export, with nothing written over an original. Also: the install method that will cost you an evening if you pick the obvious one.

A cull is worthless if it cannot follow you into Lightroom. Writing XMP sidecars out of krites, and being careful about what not to write.

A change that ships without a version bump reaches nobody, and nothing tells you. Ten minutes in a throwaway directory to see it happen, and then catch it.

An agent is a model in a loop with tools it can really call and results it can really see. Taking the ReAct pattern apart in go-tool-base.

Launching sigillum, a standalone artefact signing and verification CLI, and the Rust signing problem that made it necessary.

Where a signing key lives is the most provider-specific decision in the whole business, so the framework deliberately refuses to have an opinion.

Leaving a healthy dependency: cockroachdb/errors predates Go 1.20, so its Join hides the aggregate and everything below it goes missing.

A standard-library security fix forced a Go version bump, and then the release failed because the build image shipped an older toolchain.

Wiring OTel-native observability through a gRPC service with a REST gateway, and discovering the gateway had split a single trace into two.

A gpg call that hung and never returned, and why release signing ended up built into the Go tool itself rather than shelled out to the gpg binary.
