Scuba Diving Resources

This is a consolidation of things I built in my spare time for scuba diving. I will preface this by saying I am a very serious believer in the now-unused phrase DIR (Doing it Right.)

A large part of the DIR philosophy is being in control of your destiny – think about driving manual shift vs automatic shift in your car. A finely tuned race car is a beauty to handle when you control every last aspect of the machine.

A few frustrations led me to build this software. My personal agenda in life is democratization of knowledge. Knowledge is free. Skills cost time, money and effort. This is why I love DIR – ALL the knowledge is entirely 100% free, open source, public domain. Every method. Every Standard Operating Procedure. Every technique. Every standard. You don’t pay for books. You pay for a capable instructor to educate you and train you. You can learn the same knowledge from anyone else anywhere in the world.

This is good. It keeps standards high, because should one instructor fail, the standard is a standard is a standard and you can find another one. Or you can learn yourself. That is the primary reason I hate monopolistic-hostage taking.

Consequently, everything I build, when hosted is licensed under the Affero GPLv3. When not hosted, is just plain GPLv3. I hide nothing. The ability to build it, understand it, and maintain it, is the unique skill I bring, and “what is in it for me” for those who are worried what I’m trying to “take from you.” If I become an asshole, someone else can just as easily fork the repos and take over and do a better job than me, and the entire diving world gets something better.

Deco Planner

This is my most recent tool:

Github repo is here:

The readme explains my motivation behind building yet another buhlmann implementation. I really didn’t see anything like this out there, and only built it because I had no choice. I encourage you to build/contribute to the repo and keep it healthy.

Dive Predictor

This is my first diving tool:

Github repo:

This tool is built in Erlang because I wanted a prolog-like assertion language to provide “patterns” in tides/currents to filter for. The purpose of the tool is to quickly find the next times when a particular dive site conditions match what you are looking for.

For example, the rule for Deception Pass is:

Slack after Ebb, where Ebb + Flood should be less than or equal to 12.

Or the rule for Alki Junkyard is:

9am to 6pm, slack after flood.

And I wanted to be able to express rules in this manner, and have the tool parse all the NOAA real-time data to find me when these conditions are predicted to be met. This allows me to quickly know when I should look for diving certain sites, instead of spending hours going through tide tables.

Yes other online tools do the same thing, but I didn’t find a way to save those rules, or add them as predicates.

BFY Bottom Timer

This was a similar reaction before the excellent Petrel came out. I hated the Liquivision bottom timers, and I hated paying 500 dollars for some VPM implementation I couldn’t see, understand, test, fix, etc. I hated the weird rare batteries. I hated the fickle construction.

The purpose of this bottom timer is to allow anyone to build a functional bottom timer with an Arduino.

Github Repo:

I’m working on a model with the Raspberry Pi Zero soon.

It supports a BLE API, so I can build an iOS app to configure it. Every bottom timer out there is adding god-awful complex “Features” to increase sales, but for God’s sake, I’m sick to death of configuring them over two-button interfaces. I want a responsive mobile app, that’ll load all settings into the timer over BLE. And download dive logs. And do other things. Cause it’s 2016! The purpose of a bottom timer is to simplify my diving. I’ll pay for it!