

ZoneLab
I shoot film. Lots of it. 35mm, medium format, 4x5... I’ve been doing this for a very long time. I use old cameras and lenses that are maintained well, but they do have some variance. And I also use different developers and processing times depending on what I want to see out of the negative characteristics. I wanted a way to be able to log and chart my processes, and to be able to reference what changes affect what characteristics of different film, developer and camera combinations. Deeply nerdy stuff.
So I made ZoneLab.
In reality, most people can just shoot at the box speed, send the film to a lab or use the recommended processng and things will be just fine. But I shoot with a lot of vintage gear that has its own quirks, and I use different processes to get different results.I wanted to really dial in my processes, with my equipment, in real world situations.
The first version was simple: enter ten density readings across the zone scale, get an EI back. Useful, but I had bigger plans.
I shared what I had been working on with some other photographers. I got feedback.
Some people pointed out the limitations of in-camera testing: flare, shutter variance, aperture inaccuracies, meter error, light source inconsistency. And honestly, that’s the point of this app. I’m not trying to isolate film in laboratory conditions. I’m trying to understand how my actual cameras, lenses, meters, chemistry, and working methods behave together in the real world.
But a few things changed as a result of those conversations. The app now calculates both a traditional shadow-based speed point at 0.1 above base + fog as well as a Zone V-based EI reading, along with CI, gradient, and SBR. I’m still intentionally using Zones 0–X instead of 1/3-stop step wedges so that a full test can fit on a single roll of 120 film. That makes the process practical enough to do it sort of regularly.
The flare criticism is fair, but most of my initial testing has been done under controlled conditions specifically to minimize its impact, and I’m actually interested in the information that real world situations can give me. The photographers I built this for (mostly me) are not image scientists using lux-meters and contact frames in a lab. We’re photographers trying to better understand what pushing, pulling, development changes, old shutters, different lenses, and real-world workflow choices actually do to to the characteristics of our negatives. And none of the methods or math is new or proprietary. The ideas and the math come from the Kodak sensitometry workbook, BTZS, Lambrecht, and tons of other info from people much deeper into this field than I am.
Early prototypes were all organic free range non-GMO hand-typed swift in Xcode. The math for all of these processes is well established and well documented. So the actual idea was easy to implement. But my inner designer was sort of horrified at how this looked, and my inner desinger's co-worker, my inner UI/UX/XD/IxD team really wanted this to be more than just a chart. So I began experimenting with the Claude integration in Xcode.
This is where I see the greatest utility in AI. Using machine learning to build on craft and experience to create purpose built tools. Yes, this is a tool that I had initially built for myself, and in its early iterations would have been perfectly fine for just me. But being able to utilize machine learning to iterate and build based on a plan and turn it into a viable tool for others was of great use here. This is a niche tool for a narrow set of film photographers that might not have otherwise seen the light of day.
Now I've got an app that does what I want it to, and looks pretty good doing it.
ZoneLab 1.0 is on the Mac App Store now.
More info at ZoneLab.app
WHAT IS IT?
MacOS Desktop app
Programmed in Xcode
Stack: SwiftUI · Core Data · Swift Charts · IOKit · App Sandbox
Platform: macOS 14+
Status: Available on the Mac App Store












