This week I turned our app from a “refresh-to-see-updates” experience into something that feels truly live. After a few days of research and experimenting, I finally shipped a feature that makes the biggest difference for users during live events, especially for the emcee and judges: automatic UI updates.

Smart Polling in Action

Polling sounds simple, but real usage makes it tricky. Different roles may need different levels of responsiveness. For now, the most obvious cases are the Judge and Emcee, who benefit from faster updates during performances, while roles like Bouncer seem fine with manual refresh, at least based on what I’ve tested so far.

I set up adaptive intervals—1-second polling when a performance is active and 10-second polling during registration. This keeps things responsive without draining batteries. A single shared polling system currently serves the Judge and Emcee controllers, and mocking at the database boundary (CdbClient) keeps the logic clean and testable. I’ll revisit other roles after feedback from my supervisor and more live testing.

Balancing Battery Life

My first thought was to poll every second for everyone. Tablet tests quickly showed that would chew through battery. Switching to adaptive polling made a huge difference:

  • 5-hour tablet test = only about 3 % drain per hour, on par with normal use.
  • Smart intervals cut unnecessary network calls during quiet periods.

Seeing It Work

The best part? Watching the workflow play out: Bouncer takes attendance → Emcee sees it instantly → Emcee starts the performance → Judges get the update right away. No refreshes, no missed cues, no frustrated users.

Reflections & Insights

  • Understand the user workflow first. It drives technical choices.
  • Battery life matters. Real tests beat assumptions.
  • Optimize iteratively. Get it working, then refine for performance.

What’s Coming Up

Next week I’ll keep testing across roles and see how the feature holds up in an actual live event with multiple users. Real-world use always reveals surprises, but this feels production-ready.


0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.