Using new Ver 4.5 cloud storage with multiple users

198 views
Skip to first unread message

John Hanzl

unread,
Sep 8, 2015, 10:09:01 AM9/8/15
to Subsurface Divelog
I use Subsurface to upload all field dives (non-exhibit) for all my divers ( I am the DSO for a large aquarium and I have over 100 active divers). Though there is no elegant solution for managing multiple divers, I can make do with separate profiles on the network - one for each diver. I would love the concept of a cloud based storage solution with a web interface as then my divers can access / import dives from the field or any other location. However, from the description of how this feature is implemented - adding an email address to the preferences section - it strikes me that this would make the management of multiple users untenable. 

I have mentioned this before - but I would love it if a "wrapper" would be developed for the app so that when enabled you could have a dropdown list of users to select - basically when you select a user behind the scenes the wrapper would use the user's metadata to populate the preferences for that user, including the email address used for cloud storage. 

There would be a config screen to manage the user list and associated metadata - and moving forward this could be used to communicate with the users - even share gas planning, dive planning, etc...

Thoughts? 

Also, in lieu of this - or at least for the short term - what's the best way to deal with multiple users on one computer in V4.5 ?

Thanks,
John

Dirk Hohndel

unread,
Sep 8, 2015, 10:37:54 AM9/8/15
to subsurfac...@googlegroups.com
Hi John,

This is way cool. We love hearing real user stories like this as it helps us figure out how to make Subsurface better.
Yes, switching email address and password for more than a 100 divers on one system... not a reasonable solution.

I don't think it would be too terribly hard to set up the multi user part of this - even inside of Subsurface.

A couple of quick questions:
- you would be ok with each of these user accounts being associated with its own email address?
- I assume you'd want a "master account" that has access to all of the files?
- what exactly do you mean by "communicated with the users - even share gas planning, dive planning, etc" - can you elaborate on that a bit?

Given that I want to get 4.5 sooner rather than later out I'm not sure I can offer to add this in time for the next release, but let's see how hard this would be and what exactly would be enough to make you happy...

/D

--
You received this message because you are subscribed to the Google Groups "Subsurface Divelog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to subsurface-dive...@googlegroups.com.
To post to this group, send email to subsurfac...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/subsurface-divelog/a86788bc-7272-4b5d-be9a-00f6c4abda91%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

John Hanzl

unread,
Sep 8, 2015, 11:22:00 AM9/8/15
to Subsurface Divelog
Hey Dirk - 

Yes, definitely would be okay to have each user account associated with a specific and unique email address. And yes - having a master account would be ideal as that would be the account that can modify the user account settings (so that I, or and assistant DSO, could make CRUD adjustments to user accounts.). I know that this can get complicated fast - for view restrictions, password things, etc - but for a first pass, it would awesome to just provide a user selection dropdown, and one master account to make the changes.) This would make my job so much easier! It would also set the stage for some cross-profile metrics. Meaning, this would allow the code to iterate through all the user accounts to do aggregate reporting for year-end reports. I.E. Total number of dives, total dive time, average dive time, a list of all the unique sites dove, total number of divers, etc. This is pie-in-the-sky stuff, but there is huge potential for making this a capable logging system for institutions vs just individual divers. 

The "communicate with divers" bit is referring to the fact that, since each user is keyed to an email address, perhaps the front-end interface could even be expanded to send a communication (email) to individual divers, or to a select group. I've implemented this in a FileMaker Pro database I've created to manage all my divers and gear (see attached screen shots for a tiny view of the system).

Hope this helps - and just to be clear - at this point I am just looking for a dropdown list of users to select from, and a way to edit that list. The rest is my just thinking out loud for future expansion.

Thanks Dirk,
John


On Tuesday, September 8, 2015 at 10:37:54 AM UTC-4, Dirk wrote:
Hi John,

This is way cool. We love hearing real user stories like this as it helps us figure out how to make Subsurface better.
Yes, switching email address and password for more than a 100 divers on one system... not a reasonable solution.

I don't think it would be too terribly hard to set up the multi user part of this - even inside of Subsurface.

A couple of quick questions:
- you would be ok with each of these user accounts being associated with its own email address?
- I assume you'd want a "master account" that has access to all of the files?
- what exactly do you mean by "communicated with the users - even share gas planning, dive planning, etc" - can you elaborate on that a bit?

Given that I want to get 4.5 sooner rather than later out I'm not sure I can offer to add this in time for the next release, but let's see how hard this would be and what exactly would be enough to make you happy...

/D
On Sep 8, 2015, at 7:09 AM, John Hanzl <jha...@neaq.org> wrote:

I use Subsurface to upload all field dives (non-exhibit) for all my divers ( I am the DSO for a large aquarium and I have over 100 active divers). Though there is no elegant solution for managing multiple divers, I can make do with separate profiles on the network - one for each diver. I would love the concept of a cloud based storage solution with a web interface as then my divers can access / import dives from the field or any other location. However, from the description of how this feature is implemented - adding an email address to the preferences section - it strikes me that this would make the management of multiple users untenable. 

I have mentioned this before - but I would love it if a "wrapper" would be developed for the app so that when enabled you could have a dropdown list of users to select - basically when you select a user behind the scenes the wrapper would use the user's metadata to populate the preferences for that user, including the email address used for cloud storage. 

There would be a config screen to manage the user list and associated metadata - and moving forward this could be used to communicate with the users - even share gas planning, dive planning, etc...

Thoughts? 

Also, in lieu of this - or at least for the short term - what's the best way to deal with multiple users on one computer in V4.5 ?

Thanks,
John

--
You received this message because you are subscribed to the Google Groups "Subsurface Divelog" group.
To unsubscribe from this group and stop receiving emails from it, send an email to subsurface-divelog+unsub...@googlegroups.com.
DB 2.png
DB 1.png

Dirk Hohndel

unread,
Sep 8, 2015, 12:32:12 PM9/8/15
to subsurfac...@googlegroups.com
Hey John,

Below are a few more specific questions, trying to understand what the use
case looks like and what features you'd be looking for. I'm not trying to
challenge your idea but I'm trying to understand better what you are
looking for so we can investigate which part is easy / hard and how and
when we could provide that...

On Tue, Sep 08, 2015 at 08:22:00AM -0700, John Hanzl wrote:
> Yes, definitely would be okay to have each user account associated with a
> specific and unique email address. And yes - having a master account would
> be ideal as that would be the account that can modify the user account
> settings (so that I, or and assistant DSO, could make CRUD adjustments to
> user accounts.).

OK, so we have a way to select an individual user OR to select the master
account.
It's clear what Subsurface would show when an individual user is selected.
Simply the view as if this was the only user. With their own preferences,
units, dives, etc.
But what would Subsurface show with the master account? All the dives from
all users? How would those be grouped?

> I know that this can get complicated fast - for view
> restrictions, password things, etc - but for a first pass, it would awesome
> to just provide a user selection dropdown, and one master account to make
> the changes.)

So what changes would the master account be able to make? Can you give
concrete examples?

> This would make my job so much easier! It would also set the
> stage for some cross-profile metrics. Meaning, this would allow the code to
> iterate through all the user accounts to do aggregate reporting for
> year-end reports. I.E. Total number of dives, total dive time, average dive
> time, a list of all the unique sites dove, total number of divers, etc.

OK, this part of the use case for the master account is fairly clear.
Advanced statistics. Famouse last words but that shouldn't be too
complicated. :-)

> This is pie-in-the-sky stuff, but there is huge potential for making this a
> capable logging system for institutions vs just individual divers.

Yes, I agree. And it's something I'm willing to investigate since I think
no one else does that today.

> The "communicate with divers" bit is referring to the fact that, since each
> user is keyed to an email address, perhaps the front-end interface could
> even be expanded to send a communication (email) to individual divers, or
> to a select group. I've implemented this in a FileMaker Pro database I've
> created to manage all my divers and gear (see attached screen shots for a
> tiny view of the system).

Umm. Turning Subsurface into an email front-end? I think I'm less excited
(and less interested) in that. It just seems to be a bit too far outside
of the scope of a dive log program.

> Hope this helps - and just to be clear - at this point I am just looking
> for a dropdown list of users to select from, and a way to edit that list.
> The rest is my just thinking out loud for future expansion.

I want you to think out loud. The better we understand the big picture,
the better we can figure out what we can address and how.

/D

John Hanzl

unread,
Sep 8, 2015, 2:36:54 PM9/8/15
to Subsurface Divelog
No problem - my background is EE and I have been in the software development realm for many years, so appreciate your questions. 

Okay - perhaps it might be most helpful if I spell out my vision of what I am thinking of - and I'll describe it as a first pass rather than an end all...

In the "File" -> "Preferences" menu there is an "Enable Multi User" checkbox, when checked the multi user mode is enabled. 

With multi user mode enabled (multiuser? multi-user??) then...
 
The "File" menu has two additional menu items. 
- Change User...
- Multi User Admin...

"Change User..." opens up the user selection list and once the user is selected the corresponding user's profile is loaded. (Note, perhaps in the multi user mode, the last user loaded will be the user that is loaded when the app opens next)

"Multi User Admin..." (perhaps a password prompt? I don't need password protection, but I can see that being desired by others) brings you to a management screen whereby users can be added, edited, or deleted. This could also be the place where aggregate reporting is added over time. 

No master account per se - rather just a mechanism by which you can add, remove, and edit existing users (Names & email addresses & maybe a tag or two. I would use that to add the diver's Dive Area, such as Marine Mammals, Penguins, Galleries, Research and Global Programs, Husbandry, Giant Ocean Tank, etc)

(Side note - it would perhaps be great to have a fixed and editable list rather than free form text for dive sites. This would create consistency across multiple users and would aid in the generation of aggregation reports, as you can then get a list of all dives that happened at "Halfway Rock - Boston Harbor" for instance)

And yeah, I understand the lack of interest in the email front-end bit. I have my diver management database that I use to reach my divers anyway. I was just thinking along the lines of planning a dive with your dive planner, then using the same system to send the dive plan to all the divers who will be involved with the dive, etc. Not worth it.

Let me know if this makes sense...

John

Tiago Dores

unread,
Sep 14, 2015, 5:46:15 PM9/14/15
to Subsurface Divelog
I would really like to have it working the way John is suggesting! it would be a really usefull tool! Hope you can manage it!

Dirk Hohndel

unread,
Sep 14, 2015, 6:37:45 PM9/14/15
to subsurfac...@googlegroups.com
Certainly not for 4.5

But it's something we are seriously considering for after that release.

/D
> --
> You received this message because you are subscribed to the Google Groups "Subsurface Divelog" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to subsurface-dive...@googlegroups.com.
> To post to this group, send email to subsurfac...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/subsurface-divelog/5979f89e-4d5b-4d60-a6f9-c4556277572f%40googlegroups.com.

John Hanzl

unread,
Sep 16, 2015, 12:42:11 PM9/16/15
to Subsurface Divelog
Dirk - 

I was discussing the potential extension of the Subsurface functionality with one of my divers. He had a great suggestion that I think would dovetail perfectly with this. 

Background:

I require all field divers to use one of our field dive computers (Zoops) for every dive. I have an inventory of Zoops for use, with each one ID'd with an in-house ID # (this ID # corresponds to the ID # of the associated regulator). Therefore, for any given field dive the divers check out a regulator / Zoop kit for use. At the conclusion of the dive activity these kits come back to me and I upload the dives into the respective divers' profiles. 

I also add my Zoop ID # as a tag for that dive for a given diver. 

The serial number is downloaded from the computer - so it strikes me as being fairly straightforward to create a metadata file that matches up a computers serial number with a human readable name (currently this type of association is married to a diver's profile rather than globally). 

I was thinking perhaps an XML file could both contain the <USERS><USER>...</USER></USERS> info for multi users as wells as a <COMPUTERS><COMPUTER>...</COMPUTER></COMPUTERS> for dive computer association. This could then be used to look up a computer's serial number and generate a tag that uses the human readable name for that dive. This could then add to some great reporting options down the road. 

For the first iteration there doesn't even need to be an interface for editing this info - this XML file could just be edited by hand, (Same for the user list as well). That could help get the functionality out there without burdening the developer with creating an interface for managing the data...

Does this make sense? 
> To unsubscribe from this group and stop receiving emails from it, send an email to subsurface-divelog+unsub...@googlegroups.com.

Linus Torvalds

unread,
Sep 16, 2015, 1:06:08 PM9/16/15
to subsurfac...@googlegroups.com
On Wed, Sep 16, 2015 at 9:42 AM, John Hanzl <jha...@neaq.org> wrote:
>
> I was thinking perhaps an XML file could both contain the
> <USERS><USER>...</USER></USERS> info for multi users as wells as a
> <COMPUTERS><COMPUTER>...</COMPUTER></COMPUTERS> for dive computer
> association. This could then be used to look up a computer's serial number
> and generate a tag that uses the human readable name for that dive. This
> could then add to some great reporting options down the road.

Subsurface can already *almost* do what you ask for.

In particular, subsurface obviously already tracks the dive computer
serial number.

However, more than that, we used to support the concept of giving dive
computers "nicknames" based on that serial number exactly because
we've been in the situation with Dirk that we have identical dive
computers that we've passed back and forth (so I could see that the
Uemis I was diving was "Dirk's Uemis"). I haven't used that in a
while, though, and it was always fairly esoteric, so maybe the support
for that has bit-rotted.

Anyway, together with some kind of "filter by nickname" feature (which
we do *not* have), and together with making sure dive merging is not
enabled (again, a flag we do *not* have - we currently just assume
that if you have two divecomputers with overlapping dives, it's the
same dive where the diver just uses two computers), it wouldn't be too
far away from what you envision.

Linus

Dirk Hohndel

unread,
Sep 16, 2015, 1:16:51 PM9/16/15
to subsurfac...@googlegroups.com
Hi John,

Thanks for searching for more input here... this is helpful. I have a few
clarifying questions below.

On Wed, Sep 16, 2015 at 09:42:10AM -0700, John Hanzl wrote:
> Dirk -
>
> I require all field divers to use one of our field dive computers (Zoops)
> for every dive. I have an inventory of Zoops for use, with each one ID'd
> with an in-house ID # (this ID # corresponds to the ID # of the associated
> regulator). Therefore, for any given field dive the divers check out a
> regulator / Zoop kit for use. At the conclusion of the dive activity these
> kits come back to me and I upload the dives into the respective divers'
> profiles.

So the ID is NOT the Zoop serial# but some ID that's attached to the
regulator. Bummer. That we obviously can't automate. If it was the serial#
then this would be so much easier.

> I also add my Zoop ID # as a tag for that dive for a given diver.
>
> The serial number is downloaded from the computer - so it strikes me as
> being fairly straightforward to create a metadata file that matches up a
> computers serial number with a human readable name (currently this type of
> association is married to a diver's profile rather than globally).

That is fairly easy, but I'd argue it's also a HIGHLY specialized use
case...

> I was thinking perhaps an XML file could both contain the
> <USERS><USER>...</USER></USERS> info for multi users as wells as a
> <COMPUTERS><COMPUTER>...</COMPUTER></COMPUTERS> for dive computer
> association. This could then be used to look up a computer's serial number
> and generate a tag that uses the human readable name for that dive. This
> could then add to some great reporting options down the road.

This would be really easy to do outside of Subsurface as well. Which I
think given the narrow use might be the better solution here.

> For the first iteration there doesn't even need to be an interface for
> editing this info - this XML file could just be edited by hand, (Same for
> the user list as well). That could help get the functionality out there
> without burdening the developer with creating an interface for managing the
> data...
>
> Does this make sense?

It makes a lot of sense - you could do this outside of Subsurface today.
Especially if you still have all the divers in individual XML files. Each
dive should contain the serial number of the dive computer as a text
field, correct? So simply look up the matching ID for that serial number
and add it as a tag.

I'll think about adding this as a special feature for Subsurface - but it
is quite narrow in its appeal. Maybe I could expand on it to make it more
useful.

How does this sound:

You have an XML file that allows you to give a key/value pair and assign a
tag that is associated with that.

So for example

<match><key>Serial</key><value>12345678</value><tag>ID for serial 12345678</tag></match>
<match><key>Deco model</key><value>ZH-L16-GF</value><tag>ZHLF</tag></match>
<match><key>desat time</key><value option="gt">12:00</value><tag>DesatAbove12h</tag>

Would that be sufficient for you? That would make it less "custom for you"
and more "broadly usable".

/D

Dirk Hohndel

unread,
Sep 16, 2015, 1:23:47 PM9/16/15
to subsurfac...@googlegroups.com
On Wed, Sep 16, 2015 at 10:06:07AM -0700, Linus Torvalds wrote:
> On Wed, Sep 16, 2015 at 9:42 AM, John Hanzl <jha...@neaq.org> wrote:
> >
> > I was thinking perhaps an XML file could both contain the
> > <USERS><USER>...</USER></USERS> info for multi users as wells as a
> > <COMPUTERS><COMPUTER>...</COMPUTER></COMPUTERS> for dive computer
> > association. This could then be used to look up a computer's serial number
> > and generate a tag that uses the human readable name for that dive. This
> > could then add to some great reporting options down the road.
>
> Subsurface can already *almost* do what you ask for.
>
> In particular, subsurface obviously already tracks the dive computer
> serial number.
>
> However, more than that, we used to support the concept of giving dive
> computers "nicknames" based on that serial number exactly because
> we've been in the situation with Dirk that we have identical dive
> computers that we've passed back and forth (so I could see that the
> Uemis I was diving was "Dirk's Uemis"). I haven't used that in a
> while, though, and it was always fairly esoteric, so maybe the support
> for that has bit-rotted.

I tested it recently and it still worked.
But that doesn't give them a tag :-)

> Anyway, together with some kind of "filter by nickname" feature (which
> we do *not* have), and together with making sure dive merging is not
> enabled (again, a flag we do *not* have - we currently just assume
> that if you have two divecomputers with overlapping dives, it's the
> same dive where the diver just uses two computers), it wouldn't be too
> far away from what you envision.

That's a cool idea. Filter by dive computer. Should be easy to add.
AFTER 4.5 :-)

As for the import without merging - you added the very useful "download
into trip" as a workaround for that. And what John wants is even more
interesting where we simply turn Subsurface into a multi-user application,
but allow for a master view across all of the divers. I've been thinking
of using trips for exactly that.

So if you select "master account" it loads the data for all divers and
puts them into separate trips. And then some of our existing code for
giving statistics gets re-used in meaningful ways. And if we add filtering
by dive computer nickname I think we have what John is asking for.

Time to get 4.5 finished so we can work on exciting new features like
this.

/D

Linus Torvalds

unread,
Sep 16, 2015, 1:37:47 PM9/16/15
to subsurfac...@googlegroups.com
On Wed, Sep 16, 2015 at 10:23 AM, Dirk Hohndel <di...@hohndel.org> wrote:
>>
>> However, more than that, we used to support the concept of giving dive
>> computers "nicknames" based on that serial number exactly because
>> we've been in the situation with Dirk that we have identical dive
>> computers that we've passed back and forth (so I could see that the
>> Uemis I was diving was "Dirk's Uemis"). I haven't used that in a
>> while, though, and it was always fairly esoteric, so maybe the support
>> for that has bit-rotted.
>
> I tested it recently and it still worked.

So I'm pretty certain there are situations where it screws up. In
particular, I think "addDC()" ends up throwing away old nicknames and
serial numbers if you load a new entry that doesn't have them.

We *used* to have the concept of a "struct device_info" that you could
look up and create, and then update that to edit nicknames etc. But
that went away, and now it's that "addDC()" thing - it's a simpler
interface, but it's also fundamentally somewhat limited.

See commit 29b242c70349 ("Converting the device_info list into a Qt
data structure") and in particular parse-xml.c and libdivecomputer.c.
Notice how they went from "look up or create device, and then fill it
in with more information if we have it" to "create device with the
information we have".

And see how the "create the device with the information we have" will
actually throw away the old device information, and replace it with
the new one - even if the new one has less information.

Now, imagine that you download from a dive computer - which obviously
doesn't know about the nickname we gave it. It does a
create_device_node() with an empty nickname. What happens to our old
knowledge of nicknames?

I know it used to work, because I used it back when. And maybe it
still does. But just looking at the code I suspect it no longer works.
But it's possible I missed something.

Linus

John Hanzl

unread,
Sep 16, 2015, 1:39:17 PM9/16/15
to Subsurface Divelog
Thanks for the replies Linus and Dirk. 

First one point - I think in use cases that would want to use a "multi-user" mode you will find that it's fairly common to also have a pool of dive computers / regulators that aren't married to individuals. Most institutions that have divers don't assign divers to a specific reg. It's far too costly in manpower hours / dollars to pay for and overhaul that much equipment. It's much more efficient to have a pool of gear that can then be assigned on an as-needed basis. I have over 120 divers but only require ten field setups to manage my field needs (I have a LOT more regulators for in-house use, but they don't require computers or uploads).

I know, when my divers dive under the Smithsonian program, that the Smithsonian sends along Zoops in the same manner. I also know about ten other major aquariums off-hand that also use this methodology. Just mentioning this to indicate that a dive computer pool is quite common un multi-user environments.

That said, a global search and "tag add", controlled by the contents of an XML file would seem to work just fine for this. To be sure I am understanding what you've outlined - during the uploading of a dive computer, your software would search on user defined strings (pulled from the XML file) and when found would generate a tag based on the associated value in the XML file. So when the serial number comes up from the computer - and it is a match from this XML file - a tag gets generated with the appropriate string value? 

Dirk Hohndel

unread,
Sep 16, 2015, 1:46:58 PM9/16/15
to subsurfac...@googlegroups.com
On Wed, Sep 16, 2015 at 10:39:16AM -0700, John Hanzl wrote:
>
> I know, when my divers dive under the Smithsonian program, that the
> Smithsonian sends along Zoops in the same manner. I also know about ten
> other major aquariums off-hand that also use this methodology. Just
> mentioning this to indicate that a dive computer pool is quite common un
> multi-user environments.

Cool.

> That said, a global search and "tag add", controlled by the contents of an
> XML file would seem to work just fine for this. To be sure I am
> understanding what you've outlined - during the uploading of a dive
> computer, your software would search on user defined strings (pulled from
> the XML file) and when found would generate a tag based on the associated
> value in the XML file. So when the serial number comes up from the computer
> - and it is a match from this XML file - a tag gets generated with the
> appropriate string value?

Yep, that's exactly how it would work.

/D
Reply all
Reply to author
Forward
0 new messages