Well, yet another navigation app! What a funny idea! The truth is, a few years ago already, I was quite taken aback by the software out there — whether built into a chartplotter or running on my phone or computer.
Take the handling of waypoints, routes and tracks, for instance. The GPX format is very bare-bones, and every vendor has extended it with their own proprietary extensions. As you would expect, there is no compatibility with any other software — even though that is supposed to be the whole point of an exchange format… Yet most apps import files produced by others badly. It ranges from error messages for no reason, to the app crashing, to unexpected behaviour.
I have seen software that insisted on a specific ordering of the XML paths — when the GPX schema imposes no such constraint.
Many apps that find waypoints import all of them while ignoring the tracks or routes in the same file. Or, importing a file of routes, they bring in only the first and ignore the rest — forcing you to chop the GPX file into several small ones by hand.
Even the comment attached to an object is sometimes lost: the GPX schema offers
<desc> and <cmt> for two distinct purposes, but apps
use one or the other.
One very well-known, very widely used chartplotter brand encodes accented characters as
HTML entities inside a UTF-8 XML file. Nonsense. The Maltese ħ shows up as
ħ or the Spanish ñ as ñ. And no other software
can then import these files at all — at best an error message, at worst a proper crash.
So, to begin with, I wanted to write an app that imports every GPX file correctly, but that also knows how to preserve the proprietary data: the group an item belongs to (almost every app lets you sort items into groups), the symbol, the colour of a route or track, the photos. A rare few also let you attach an internet link or a file.
Same story for navigation. I came across apps that were lovely to use, beautifully made — but on the instrumentation side, limited to a handful of basic NMEA 0183 readings. One showing certain values, another showing different ones. A rare few were more complete, with the same few creature-comfort values but dubious ergonomics, ugly to look at, and sometimes freezing or slowing down.
And once you start having several battery monitors, several tank senders, several temperature sensors on board, that is when it gets funny. Bar a rare few exceptions, the software handles indexed sources poorly. You get the battery-voltage gauge flicking from 12.3 to 24.6 within a second, or 30% to 60% for the tanks. Unusable.
And then they are always cross-platform apps — meaning a single shared codebase for different hardware platforms. Depending on the toolkit, the user interface is often not great. And these solutions focus on the lowest common denominator across platforms, without making the most of what each system can do.
So I started writing an app for iPhone and Mac. Various prototypes, never finished. Spells when I had time to devote to it, long stretches of abandonment, then struggling to get back into it. Dissatisfied with my architectures or my implementations, I would throw things away and start over. The further I got, the more ideas came to me — so I would head off in a new direction, never finishing the earlier parts I had nonetheless got well underway. As the years went by, it was obvious I would never get anywhere. And then one day I decided to get back to it, seriously this time.