Not Awful UW Photography

An opinionated story of diving, open source, and photography.

I like diving. I don't particularly like photography. Unless I'm diving! Then I guess it's different. I'm not a great photographer, just a dilettante, but I really like it. I'm also not a stellar diver—but I like it as well. So here we are.

My computers run an open source operating system (OpenBSD). So my diving and photography and web publishing software are open source too. Some of these I've built myself.

This page is mostly about the software. I'll also talk a bit about UW photography itself, but you know—you can probably find better resources from real professionals.

This is where it begins.

That's not me—it's Sarah. Twin-set for extra-long sessions? Check. Camera with good lighting? Check. Perfect diving form? Um… well, easy for Sarah. Much harder for myself.

camera equipment

Most photos on this site are taken with a Sony RX100IV and a wide-angle lens (UWL-09). Even the macro shots, unless I can find somebody to take the lens. But it doesn't really matter: with my limited skills, it could really be anything.

More important than the camera is the lighting. I just use the cheapest Sea&Sea YS-01 strobes in TTL mode.

I have three pre-programmed modes set in the camera: macro mode (big aperture, fast shutter, full zoom), wide-angle mode (smaller aperture, slow shutter, almost full zoom out), and wreck (smaller aperture, slow shutter, higher ISO, almost full zoom out).

Possibly current equipment. Note the buoyancy arms. They really help.


It's worth talking about rigging for a moment, because the more photography equipment, the more the question of rigging is significant. It's not just convenience—it's really a matter of safety.

When free diving, which I do with a lighter rig (one strobe or video light) that's slightly positively buoyant, I have a d-ring on my rubber weight belt. During a descent, I'll keep the camera clipped on. Then I take the shots I want at depth and either keep holding it on the way up or clip it.

Scuba is a bit more involved. I generally dive with two video lights or two strobes, so the camera is much bulkier. I always dive with a neutrally buoyant rig, however, as I'm already prone to floaty feet!

For shore dives, I enter the water with the camera clipped to my top-right d-ring and my stage on the crotch strap. I then put on my fins, attach the deco stage to my right rings in the usual way, then move the camera to the crotch strap. Then I'll do long-hose checks. I keep the camera on the crotch d-ring whenever I'm not shooting.

When not deco diving, I'll sometimes left-clip the camera in place of the stage.


After diving, my workflow starts by getting pictures off the camera. For that I use gphoto. I pull the pictures (RAW+JPEG) directly into a pair of external USB 1 TB drives configured with RAID1.

Once pulled—it can take time—I fire up shotwell, which I use as my photo manager. I'll sometimes use geeqie for a single series of dive photos, but not for looking back over time.

I then edit the raw photos with ufraw and post-process in gimp.

Management in shotwell.
RAW editing in ufraw.

Why these tools? My needs are few.

For the photo manager, I just want a quick glance, event by event, of the photos, and the ability to easily open photos in an external editor and save as a new file. I don't really like Shotwell: it's slow and tends to use system resources when it's just sitting there. Plus, it's in vala, which is a transpiler into C. This makes it much harder to debug problems: are they in vala logic or in the produced C code? But I don't know of any other system that has a nice event-based layout. Yeah. I'm not really happy with this part.

As for editing, ufraw might not even be maintained any more—but for me it's fine, as it's fast and all I really use it for is colour correction. The gimp works fine for my only use of it: unsharp mask, as ufraw doesn't do any sharpening.


This is the boring part, I guess. I wrote all of the publishing components myself, though, so I like them.

First, I upload an exported image to my Cloudinary account. I then create a Markdown file that tells the story and contains photo meta-data (exposure settings, location, depth, temperature, date, etc.). To get the temperature and depth, I review the dive profile with Subsurface. Technically, all of this—upload, mining EXIF data, creation of the Markdown template—happens in one step by a small upload script I wrote. So creating a new article is simple.

Once I have a Markdown file that I can edit with a story, the file is transformed into web page you see by combining lowdown to parse Markdown with sblg to manage templates. These tools are chained together with make, so the whole web site is built and updated with one command.

The tag indexes and such are built in the same way: shell snippets in the Makefile. This is probably the most complicated part because it involves lots of piping and chicanery. At the end of the day, everything's automated.

Each photo file is processed as such. Complicated-looking, but ultimately tied together by a simple Makefile.


Why all the effort? Cause it's fun! Diving—no matter where you live—is a way to experience part of the world we often disregard as inaccessable. And in a way we'd otherwise consider impossible: floating effortlessly. It may take training, hard work, and discipline (and not a little disposable income), but it's worth it.

Lee (Rozi wreck, Malta).
Flabellina affinis (Rozi wreck, Malta).
Moray eel (Rozi wreck, Malta).