62 karma · joined September 8, 2010
Contact: hn(at)anty.at
I have a 2GB email server. I use POP to regularly import the mails into Gmail. This deletes the mails on my limited-storage-server.
I already pay for Google storage. I do not want to pay (more) for another email server just so I can keep all my emails forever.
Forwarding mails does not work, because Gmail quietly drops mails. They don't even put them into the spam folder.
My webhoster told me I could pay for Google Workspace. There you apparently can use your own domain. But then I have a third service I have to pay.
Naturally I have some questions:
1. I don't see any examples for foreign key constraints (ON DELETE and ON UPDATE) or UNIQUE constraints. Are constraints still supported? 2. How is row-level privacy implemented? Are "forbidden" rows not synced by the server logic, or are they encrypted?
I do have ads in the Play Store app and in the Gmail app, though.
I estimate burned calories on the minute-to-minute level for all activities, which is a fun challenge.
For the steps to calories conversion, I require time and distance walked. Unfortunately it's surprisingly difficult to get some kind of distance information from Android. Google Fit API provides this data, but will be killed soon. The RecordingAPI will hopefully provide this in the future, but not yet...
I bought a Wifi scale specifically so I don't have to have my phone with bluetooth on, nearby. Does the BT-connection open the app itself, or just initiate a sync in a background service? I was under the impression that it is impossible to access Google Health Connect in the background – I get access-errors in my log when I start my own app from the IDE while the screen is off.
> [...] they get a lot of write storage to health connect for free from the API
Is this really an issue that is solved by using Google Health Connect?
> As I understand it the access is 30 days prior to the first permission given.
You are right, I edited my original post accordingly.
It's more secure, yes. But since the data stays on the device now, web apps cannot read or write health data anymore. You need to develop a dedicated app to access the data on the device. And the user has to interact with the app, or the data will not be accessible.
E.g. my Withings scale writes my body weight to Google Health Connect. But I need to open the Withings app every time for that to work. The app-developers cannot do this in the background afaik. (The data flow is: scale -> cloud -> app -> Google Health Connect.)
Another issue I see is: There is no incentive for app developers to write data to Google Health Connect. Even if you subscribe to the idea of using it as your data-store, you will lose access to the data if a user uninstalls your app. It's only possible to read data up to 30 days in the past, or however long the user has installed your app – hopefully they don't decide to reinstall it.
I really appreciate the inter-connectivity Google Health Connect allows between apps, though.
I was wondering where you got the data from to know what muscle group is used in each exercise?
I replicate the clients Sqlite DB to a central server (over a REST-API) where it is synced with existing data. I use an CRDT, so changes don't get lost and as long as the clocks of all the users devices are accurate, the merges are in the correct order.
This enables offline access, but also the use of my app without an account. You can always merge the data later. Multi-device merge is also possible, if you create an account. Especially the multi-device merge was a big headache until I settled for this approach.
Since it is a home-grown solution I still have to do some manual stuff that could be abstracted away, like converting datatypes to and from JSON, Kotlin, PHP, MySQL. There's not always an equivalent datatype in those technologies.
This approach probably won't work well for big databases that share data between multiple users, though.
How to merge conflicts is probably the most important part in a non-trivial app. Does anyone know of examples or research that has been done in this direction?
It's always a nightmare, when a browser-upgrade comes along and changes something.
Currently the following connections work:
"wss://localhost.example.com:4321/somepath", // Mac: Chrome, Safari, FF
"wss://localhost:4321/somepath", // Win: Chrome, FF
"wss://127.0.0.1:4320/somepath" // Win: EDGE, IE11, IE10
Some other combinations are possible, that's just what I know we use atm.
The worst thing is: I didn't find a way to catch connection-errors to these URLs. So I have to use timeouts, and try all of them... (or decide by User-Agent which URLs to try.)
I wish there would be some kind of standard that solves this problem.
Thanks, Andreas
To say something positive: I like that the headline changes the last word periodically. That caught my attention.