Voting app - needs to be fast

I’m building an app for a non profit ski contest.

We want each rider to score other riders after their run. Basically riders are their own jury.

My prototype works as follow:

  • each rider creates an account on my glide app. They see an empty dashboard. In fact. I only allow them to see a row once a vote is required.
  • after each run, I set a parent’s row boot record to “true”. This opens the votings. A conditional visibility settings is link to the aforementioned bool. (ideally the rider’s apps would refresh and show that there is a row to vote for).
  • the riders need to click on the row to enter the child record, where the scoring happens (from 1 to 100)
  • An average is calculated at the parent record
  • after 30 seconds, I set the parent record to “false” in order to stop the voting.

It works pretty fine, but I have a problems with latency (I am using native Glide tables for speed). For example, it may take some seconds before riders see the option to vote. Worst, once I revoke the option to vote, riders still see the voting screen. Sometimes I get votes 30 seconds later, which isn’t great.

Any idea how I can “force” the clients to update the status?

Or any other suggestion for the voting app?

Bonus questions: how can I build a 1-100 cursor for the voting :wink:

I doubt we can get this to work, Glide would have to implement it as a native component.

It would always take at least some seconds for the data to be updated to a device. There might be more reasons why votes can be submitted 30 seconds after you close it, maybe the connection wasn’t good?

Maybe what I would change is setting a timestamp when you open the voting, then have another column to calculate the timestamp that is 30 seconds later. Don’t show the option to vote when the current time is after that closing time.

Why would they have only 30 secs though?

Hi @ThinhDinh

Timestamp is a good idea! I could use it as a timeout, so that the client blocks the view itself once the voting is done. I need to look into that. Any idea how I could build a timer/count-down out of that idea?

Okay too bad for the slider :frowning:

The competition is live streamed - 30 seconds is a long time when idling waiting on a score. I know it’s a tight timing, but these are the reality of a TV production.

Cheers

All you do is record a timestamp, then use a math column to add the equivalent of 30 seconds (Date+30/86400). That will give you 30 seconds in the future, which you can then use for visibility conditions by comparing to the current time ‘Now’. The only thing is that Now is only updated every 10 seconds, so there is a chance that the voting window could be anywhere from 30 to 40 seconds. These date and math functions happen on the end user’s decice, so there may be a delay for the sync of the timestamp to the device, as well as a delay for the visibility based on when the current ‘Now’ time us updated.

2 Likes

Thanks to both of you. I have used the timestamp solution to block the option to vote once the time has elapsed. That works. The solution is still imperfect given the 10s latency for client updates, but it should do.

To the Glide team: our event may be good marketing for your product - the best freeskiers in the world will be present (e.g. Tanner Hall, multiple X Games winner).
Get in touch if you’re interested in communication around our use case :slight_smile:

4 Likes

@NoCodeAndy this would be a good client story.

2 Likes

@ThinhDinh - Thanks for the tag!

@dlr - DM me with more details about the project, we can take it from there. :wink:

1 Like