History of Baltic Deco Planner

Development began in 2007, as a small C++ library implementing the ZHL16 algorithm, and the frontend was just a simple command-line tool. Initially this was all just a mental excercise, trying to get a better understanding of deco theory.

In late 2007 and early 2008, a gtk+/gnome frontend was written, complete with profile graphs, compartment loads and pressure profile. During this period I got a lot of input from some of the local divers, and particularly on the layout of the result by my TDI instructor.

Screenshot of the early days of the gnome app Screenshot of the early days of the gnome app pressure graph

Sometime in May 2008 I bought a MacBook Pro and fell in love with the thing (despite being a linux user since 94, and open-source contributor for many many years). I started porting the app to MacOS, but still with the gtk+/gnome frontend.

However, gtk+/gnome UIs on MacOS don't look good, so in the summer of 08 while living back home in Copenhagen for a while, I installed the developer package and first looked at bit writing a native MacOS app, but my dive buddy urged me to look at the iPhone instead. So I started looking at the iPhone SDK, and around August, the first version was up and running, a very simple UI with a picker for depth & bottom time plus two sliders for oxygen and helium content, and the profile was just dumped in a textview.

At this point I started focusing on implementing the VPM/B algorithm in C++, by reading the fortran implementation by Erik C. Baker. Part of this was done by instrumenting the fortran code to generate C++ unittest code to validate the output of the individual parts of the algorithm. VPM/B was definitely a challenge and much harder to understand than Buhlmann's ZHL16, but from peoples reports of diving using VPM/B planned dives, I felt it was worth it. So now the cli version suddenly output format like Erik Bakers fortran version, which was used in testing - in addition to instrumenting the fortran version to emit C++ boost unit-tests...

Baltic commandline tool looks like the vpmbdeco.f Screenshot of the early days of the iphone app

By end of sumer 08, the implementation was mostly done, and around this time I had finally actually bought an iPhone. This meant that the UI got more attention again, ie. the profile moved from text view into tables, settings moved away from the system settings page and into the app using pickers and sliders. Luckily a friend of mine is a Apple UI designer, and he gave a lot of good suggestions on best and most common-place iPhone UI design choices, such as use of tables and sections, editing and input widgets.

I'm not a CCR diver myself (plan to be some day...), but one of my dive buddies has been for a long time and provided valuable input on the CCR aspects and the underlying C++ library was quickly modifed to work for constant ppO2 diving. Likewise I would bring the app around with me on a few dive trips, and have random boat-buddies try it to see what they thought, and how the UI worked for them. Getting input from people who didn't have an iPhone and weren't used to the it was pretty interesting.

Finally the last bells and wistles like bookmarks and such were added, and the app went to the AppStore.

eskil

Attachments