Feature Request: Notification of Sync Needed

Suggestion for a feature that would make Codebook more robust for those users who have implemented it on multiple devices. When making a change on one device, and syncing the change to, say, Dropbox, the user must remember to syn again the next time he/she is active on another device.

It should be a simple matter to make this obvious and even semi-automatic.

  • Track the date/time of last update in the LOCAL copy of the database on each device.

  • When that LOCAL copy is synced, update the date/time entry (or just sync it along with other data) in the Dropbox copy.

  • When Dropbox synces this master copy to other devices, compare the Dropbox update date to the update date/time in that devices LOCAL copy.

Whenever they are different. notify the user that a sync is suggested. Perhaps by the color of the refresh icon, or something noticeable but not annoying interruption. Note that this will also occur when everybody is synced, and somebody makes a change to one of the local databases. That user will be notified to sync, and when sync is done, the other devices will get a notification that their local database is out of sync with the master.

I realize there is a problem with different time clock values, so in that case use a SQL Timestamp. Or query the NTP time server yourself. Or just make it a counter that is incremented in the master DB. Or implement something smarter than me. :slight_smile:

Hi @Dan_Danz

Thank you for sharing your feedback, we always appreciate hearing from our customers. The Dropbox synchronization integration is performed on demand by the user, so while the changes following a synchronization are present in Dropbox, any other Codebook instances are unaware of those changes until a synchronization is initiated. That said, we have plans to improve the synchronization experience in Codebook with the aim of making it more seamless. Thank you again for sharing!

Hmmm…all my Dropbox instances update instantly if the device is online.
Must be a setting.

L.W. “Dan” Danz
Overland Park KS

​I checked again and there’s no setting to make it “on request” syncing.
In fact their help file says just install the app and it happens without
anything else being done

To be on the safe side, I also use Selective Syncing for the Ztetic folder
(among others) to be sure I always have a local copy.

L W

Hello @Dan_Danz

I’m sorry for the confusion, what I was referring to above was that Codebook communicates with Dropbox via an API which is initiated via the end user. That is not to say that your information isn’t updated on Dropbox, but that Codebook does not directly communicate to Dropbox until the user requests a synchronization.

I am all for automatic everything, BUT i just had a situation where I was pleased that it was not automatic. I had a password field on the PC version that was blank, I could not login to the website, a payments processor. The tech help lady said that the only way forward was to get a new card with a new password and that would cost GBP 85. I looked it up on my phone, which I happened not to have sync’ed and found the errant password. Phew.

I’m glad you didn’t have to fork over the cash. I’m a little astounded
that the site didn’t have a “forgot your password?” protocol.

Thanks for provoking some thought about this suggestion. I should point
out: you were safe only because you didn’t manually sync your phone. So,
as food for thought, I ask:

  1. How long had the blank field been that way on your desktop version?
  2. Did you discover it only when you went to use it?
  3. How long would you have gone before you synced your phone?

I think you can guess what I’m getting at: you could very well have
manually synced​ between (1) and (2) unless you’re clairvoyant.

I suffer from diabetes and use a very handy program, SiDiary
http://www.sidiary.org/, to track my blood sugar testing. This company
uses their own web site database as the common sync point for desktop and
mobile versions of the program just like Codebook. However, before any
device synchronizes with the web copy, the device makes a local backup,
named with the date/time of the sync. As long as you keep a few of these
around, you can recover from lots of mistakes.

This scheme would protect the Codebook sync process, whether it’s automatic
or manual.

And, if Codebook is given the ability to do automatic sync, there could
very well be an option to disable automatic and just tell the user when
manual synchronization is needed.

Changing the subject a bit: my original suggestion used date/time
comparisons, but that would be a problem for Codebook: clock skew on
different devices, a problem that SiDiary doesn’t have because their web
site is the authority for the time stamp (which can be a simple
1-up generation counter).

With no central authority and with multiple devices and multiple backup
protocols (e.g. local and cloud) the determination becomes a lot harder.

For example, consider 2 devices and Dropbox backup. Everybody starts in
sync. Then Device-1 does an update and sync. Device-2 is now out of
date, and does a sync (which updates the Dropbox copy) and now Device-1 is
out of date so it synchronizes…ad nauseum.

I guess that’s what Nick and the rest of the folks at Zetetic get paid big
bucks to figure out. :grin:

L W

I just realized that there’s a simple solution for the conundrum: For
example, consider 2 devices and Dropbox backup. Everybody starts in
sync. Then Device-1 does an update and sync. Device-2 is now out of
date, and does a sync (which updates the Dropbox copy) and now Device-1 is
out of date so it synchronizes…ad nauseum.

If device-2 (or any device) sees that an update is needed, it should
READthe dropbox copy, synchronizes it, and update the drop box copy ONLY
if it has made any changes because of local differences. After all, if
device-2 has changes, devices-1 should be notified to get them, but unless
device-1 has NEW changes, it won’t change the dropbox copy. This eventually
stops the loop after every device has seen all the changes and contributed
its changes to the global sync. {I should have seen this sooner.}

L W

Hi @Dan_Danz

Currently Codebook performs a multi-master data replication process, but having multiple devices in coordination requires backtracking for synchronization. We have plans for synchronization in the future and hope to optimize the experience for users. Thanks again for your thoughtful feedback.

Can I please resurrect this request from the dead…I also have asked for background/automatic syncing and been put off several times now.

I have email conversations with you guys in October 2014…then again January 2016…now it’s April 2017.

I’m not saying it’s easy, but pretty much all the major password utilities have solved this issue.

Do you guys have it on the roadmap at all, or is it just not going to happen? I would just like some clarity from whoever makes these decisions.

Hello @seanjseymour - I’m pleased to report that this request isn’t dead. We’re actively working on a new synchronization feature that will allow near-real time replication of data between devices. I can’t provide an estimated timeline yet, but it is definitely on our roadmap, under development, and will be included in a future release of Codebook. You are correct, this has been a challenging feature to work on, but the new approach will provide a lot more flexibility while retaining full encryption of your data.

Thank you Stephen, that’s great to hear. Thanks for the quick response.

seanjseymour https://discuss.zetetic.net/users/seanjseymour

​Glad to hear it, too. ​

1 Like