# TagTime In The Cloud

**URL:** <https://forum.beeminder.com/t/tagtime-in-the-cloud/11863>\
**Category:** TagTime\
**Created:** [August 18, 2024, 5:03am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863 "2024-08-18T05:03:54Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)\
**Post date:** [October 9, 2024, 3:08pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/41 "2024-10-09T15:08:33Z")

</div>

Definitely the same universal schedule, as long as you keep the gap set to 45 minutes

---

<div class="post-metadata">

**Author:** ![scarabaea](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/scarabaea/32/5475_2.png) [@scarabaea](https://forum.beeminder.com/u/scarabaea)\
**Post date:** [October 9, 2024, 6:48pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/42 "2024-10-09T18:48:54Z")

</div>

> [@dreev](#):
>
> as long as you keep the gap set to 45 minutes

I wanted to test this part, to check whether “as long as you keep” means that changing it to something else and back to 45 mins derails it from the universal schedule. I tried to install the app onto a different phone to test this, but it seems like the app is not available in play store anymore. (Unless it’s a region thing. But the last time I checked I was unable to change the region from the US to where I am now despite actively trying.)

@CortTheWart, anyways, let us consider this a confirmation that the schedule works as intended if people use the app as intended. Which is what most people do, I believe - keep the gap at 45 min 🙂

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 10, 2024, 1:04am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/43 "2024-10-10T01:04:38Z")

</div>

> [@dreev](#):
>
> Definitely the same universal schedule, as long as you keep the gap set to 45 minutes

Trying to build the original android app with android studio, what part of the TagTime build do I need to download to try to build it? doesn’t really say in the readme.md, just says you need to get Android Studio. In the meantime, are you able to confirm that the pings I posted are correctly on your schedule?

Here:

> [@CortTheWart](#):
>
> Here are the upcoming ping times for the next 2 days that I calculated with the new algorithm. They should be the same for you when running it, and they should also be the same as the original TagTime program (hopefully someone can approve that):

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 10, 2024, 2:56am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/44 "2024-10-10T02:56:38Z")

</div>

@scarabaea @dreev I just had to check for myself to make sure. After painstakingly trying to figure out how to build the original app (I needed to download an old version of Java _locked behind creating an account on oracle which didn’t work_ and then figuring out which settings to change since all of the instructions are very outdated) I was able to build the app properly, and without changing the gap settings, the pings came at the same time from the app and my version. So thankfully I’m using the correct universal schedule. All I’m assuming now is that the when you change the gap settings on the android app, it never properly sets you back on to the correct schedule. Don’t know how you could fix that without reinstalling the app (which is no longer on the play store). But at least it’s good to know that I’m on the correct schedule.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 12, 2024, 12:15am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/45 "2024-10-12T00:15:12Z")

</div>

> [@scarabaea](#):
>
> ![photo_2024-09-22_10-42-25](https://us1.discourse-cdn.com/flex019/uploads/beeminder/original/2X/2/29e90a9a8706796f5a0a5f287965d9ada289c601.jpeg)

Does save to SD just let you choose to save a copy of your log file elsewhere?  
and I’m assuming with attach to email initiating a sharing event it just lets you share your log file?

Also whats the difference between delete saved logs vs delete all data

---

<div class="post-metadata">

**Author:** ![scarabaea](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/scarabaea/32/5475_2.png) [@scarabaea](https://forum.beeminder.com/u/scarabaea)\
**Post date:** [October 12, 2024, 6:49am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/46 "2024-10-12T06:49:39Z")

</div>

> [@CortTheWart](#):
>
> save to SD

Probably not. It just hanged for a moment and then said “done!”. I have no idea where it saved the logs. The sharing through the other button definitely gives many more options.  
The latter question should probably be directed to someone else, since I don’t want to try and delete my real data 🙂 and installing a dummy copy to play around is not an option anymore.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 12, 2024, 11:16am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/47 "2024-10-12T11:16:37Z")

</div>

> [@scarabaea](#):
>
> Probably not. It just hanged for a moment and then said “done!”. I have no idea where it saved the logs. The sharing through the other button definitely gives many more options.  
> The latter question should probably be directed to someone else, since I don’t want to try and delete my real data 🙂 and installing a dummy copy to play around is not an option anymore.

@dreev do you think you could elaborate on this please?

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 14, 2024, 3:07am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/48 "2024-10-14T03:07:26Z")

</div>

@dreev also I just have a general question. What is your idea for cloud-based logs? I’m just wondering how you think it should work exactly. As I have a cloud database for logs, but I don’t think it’s implemented the way you imagined.

---

<div class="post-metadata">

**Author:** ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)\
**Post date:** [October 16, 2024, 12:39am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/50 "2024-10-16T00:39:01Z")

</div>

> [@CortTheWart](#):
>
> do you think you could elaborate on this please?

The TagTime Android app has options for saving/exporting one’s log file that made sense in like 2009. I would not be surprised if there’s no way to export logs from the Android app on a modern phone.

I’ve lost track of what you’re doing with the Android app though. Probably not for sanity checking the universal ping schedule but just in case, here’s the thread documenting the official reference implementation:

> [@Official Reference Implementation of the TagTime Universal Ping Schedule](https://forum.beeminder.com/t/official-reference-implementation-of-the-tagtime-universal-ping-schedule/4282):
>
> This was previously in [another (other) thread](http://forum.beeminder.com/t/tagtime-universal-ping-schedule-reference-implementation/4143) but that thread morphed into a discussion about a possible new algorithm so this is now the official home of the official reference implementation of the official algorithm for the universal ping schedule. It’s really official, ok? Until we reach consensus in that other thread, this is the algorithm all TagTime clients should implement! First some constants and global variables: const GAP = 45\*60 // Average gap between pings, in seconds con…

See also [https://tagtime.glitch.me](https://tagtime.glitch.me)

> [@CortTheWart](#):
>
> What is your idea for cloud-based logs?

I’m imagining a SaaS that basically centralizes your TagTime log so you can answer pings on different devices and then log in to the app and see all your pings, export them, etc.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [October 24, 2024, 1:01pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/51 "2024-10-24T13:01:38Z")

</div>

> [@dreev](#):
>
> I’m imagining a SaaS that basically centralizes your TagTime log so you can answer pings on different devices and then log in to the app and see all your pings, export them, etc.

Thank you, but I just have one question. If you had TagTime on multiple devices, would you expect both pings to be shown in the centralized logs, or would you expect the first device to answer the ping to be the ping that shows up, and then it would cancel the ping on the other device as its already answered?

---

<div class="post-metadata">

**Author:** ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)\
**Post date:** [October 24, 2024, 11:07pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/52 "2024-10-24T23:07:52Z")

</div>

> [@CortTheWart](#):
>
> would you expect both pings to be shown in the centralized logs

No, I think the log should track the universal schedule, with no duplicates. If you only answer the ping on one device, it’s easy. If you answer the ping on multiple devices, then… probably the union of the tags makes sense? Or make the user resolve the conflict?

---

<div class="post-metadata">

**Author:** ![philip](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/philip/32/1505_2.png) [@philip](https://forum.beeminder.com/u/philip)\
**Post date:** [October 26, 2024, 1:12pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/53 "2024-10-26T13:12:40Z")

</div>

My own log merge does a union of tags for the rare event that a ping is answered on multiple devices. It was rare enough not to worry about correcting it via manual conflict management.

The merge also highlights outstanding pings that didn’t end up getting answered on any device.

Definitely following the universal schedule, not least because it’s cool when everyone’s devices ping at the same time, and also allows for collective consensus about what we were probably talking about at that moment.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [November 5, 2024, 8:08am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/54 "2024-11-05T08:08:12Z")

</div>

Big update coming soon. Ty for the insight @philip

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [November 9, 2024, 11:29am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/55 "2024-11-09T11:29:37Z")

</div>

Just pushed out an update to GitHub.

- Any changes to the gap will reset your waiting time, and put you on the correct universal schedule for your new gap. Thanks @scarabaea for the recommendation
- Adjusted Cloud logic for answering a ping. Instead of sending over your current log file after every answered ping, it now sends just the prompt you entered, and adds it to the existing log filed saved in the cloud.
- If multiple devices answer the same ping, it will merge the two responses on a single line within the cloud log, eventually syncing to your local log file. (Your local log file is now synced to your Cloud log file after every answered ping). For example: If you answer the ping on your phone first, and then answer the ping on your computer, you will be able to see your phone’s ping response on your computer right after you answer it there. Thanks @philip
- New button in Log Editor: Import Log to Cloud. Lets you select a log file to replace your Cloud log. Useful if you have an old log file that you want to add to the Cloud in order to add new pings on top of it.
- Adjusted the export log option in the Log Editor to work more smoothly with the new system, basically a “Save as” button for your cloud log.
- Made a custom icon for this program as I needed to make something for the Android App besides just using a screenshot of the clocks from the tagtime website, it should work in all portions of the desktop application, you can also view the full scale image of the icon by going to imgs/tagtime.png

No one it seems has tried to login with their Google account in order to use these cloud features yet, so let me know if there’s anything I can do to help out with this. However the flow for Google Authentication goes like this:

Click Sign in to Google from the TagTime Application → A Web Browser page gets opened up to the TagTime backend server → it redirects you to Google’s official Authentication site → you login without needing a password (if already logged into google on your browser) → Once signed it, you are redirected back to the TagTime backend → it authenticates you → sends information back to the TagTime Application to let it know you are successfully signed in → stores your refresh token for future use (accessing your cloud log essentially)

I’m still working on the Android App, progress has been good, but I’ve really just been spending the past month learning Kotlin in order to atleast know what i’m doing before I dive into anything major. Polishing up this desktop application before I do the main features is also gonna helpful…

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [November 10, 2024, 12:58pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/56 "2024-11-10T12:58:51Z")

</div>

@scarabaea If there’s any reasons or concerns for why you haven’t tried logging in with a google account yet for the cloud features, please let me know! I’d like to get feedback on it before implementing it to the android app.

---

<div class="post-metadata">

**Author:** ![scarabaea](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/scarabaea/32/5475_2.png) [@scarabaea](https://forum.beeminder.com/u/scarabaea)\
**Post date:** [November 10, 2024, 2:00pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/57 "2024-11-10T14:00:54Z")

</div>

I will try it out sometime soon! Just have been super busy recently.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [November 10, 2024, 2:04pm UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/58 "2024-11-10T14:04:26Z")

</div>

Ah gotcha, well let me know once you have the time!

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [November 23, 2024, 1:24am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/59 "2024-11-23T01:24:34Z")

</div>

Updated settings.py and logviewer.py to reflect the following changes:

Settings:

- Logging in through Google will now automatically extract your log from the cloud, and save it to your local log.log file. This means that if you have a saved log in the cloud under your account, as soon as you sign in, you will be able to view that saved cloud log immediately in the Log Viewer without having to extract it manually. Makes everything much smoother!

Log Viewer:

- When importing a log (to save an old log to the cloud) it now automatically replaces your local log.log file, and will refresh the Log Viewer with the updated one. Say you have an old log from a previous version of TagTime named “venus.log” that is in your downloads folder. You click import in Log Viewer, select that file, and that old log is now saved as your cloud log (which will now act as the source file, and gets added upon with new pings), as well as being saved as your local log.log file. Hopefully that explanation makes sense? Let me know if it doesn’t, but this also makes things smoother.

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [December 7, 2024, 1:48am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/60 "2024-12-07T01:48:53Z")

</div>

Few Major Stability Fixes and changes to how this program interacts with the Cloud to bring it more in line with how the android app interacts with it.

Log Viewer is now a lot faster, same with settings and the main prompt. I figured out I was launching these python scripts the wrong way, and they now use multiprocessing to load up. @scarabaea let me know if you feel the difference if you have the time.

Ping times are now saved on the correct universal schedule ping time, instead of saving the ping time at the current time of pressing the submit button / enter. This will allow pings from another device to be properly merged. (as they will both have the same ping time)

Planning on merging the mac build into the same files, so everything will all be in one place.

You will need to redo the “pip install -r requirements.txt” as I added a few new libraries.

I’ve also cleaned up the logging statements, so the terminal window should be less cluttered.

Happy Holidays!

---

<div class="post-metadata">

**Author:** ![CortTheWart](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/cortthewart/32/5641_2.png) [@CortTheWart](https://forum.beeminder.com/u/CortTheWart)\
**Post date:** [December 10, 2024, 6:50am UTC](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863/61 "2024-12-10T06:50:25Z")

</div>

I have combined the Mac build and the Windows build into the same python scripts. I have removed the mac folder from the GitHub because it is no longer needed, and you can just download the main scripts.

I have also added some instructions to easily set up TagTime using a python virtual environment within the TagTime folder, this might help in your case @dreev where you have python libraries installed globally, and don’t want to mess with anything external outside of TagTime.

Let me know if you need further help installing and running TagTime on Mac.

[Previous page](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863.md?page=2)

[Next page](https://forum.beeminder.com/t/tagtime-in-the-cloud/11863.md?page=4)
