This week, I built the warning system for shared judge logins and then reworked it into a blocking system based on Dr Shawn’s feedback. After that, I started on my backend project and helped Team Euroasia prepare for and run their event.
Building the Warning System
I started by implementing the warning system in the admin app. It listens for changes to judges’ marks in real time and flags any mark that the judge app has saved more than once, since a second save from the judge side is a strong sign that the same judge login is being used on two devices.
My first version showed the warning as a pop-up, but I changed it to a banner at the top of every admin page so it stays visible without blocking anyone.
A Better Fix: Blocking Overwrites Early
After reviewing my pull request, Dr Shawn pointed out a problem: a warning only tells admins about an overwritten mark after the judge’s original score is already gone. A better fix is to stop the overwrite from happening in the first place.
So I replaced the banner with a CouchDB validation rule for marks. Once a judge submits a mark, the judge app can no longer overwrite it, and the database rejects the attempt. Admins can still edit marks when a correction is needed.
On top of that, this approach saved many lines of code, since the banner and its related logic were no longer needed.
Starting the Golang Migration
After finishing the blocking task, I was given access to my backend project: migrating the registration system from C++ to Go (Golang). I began exploring the project repository to understand how it is organised and how the registration process works. Understanding the existing code first will make it much easier to make changes confidently during the migration.
Supporting Team Euroasia’s Event
This week was my fourth time supporting an event as a technical assistant, this time for Team Euroasia at Holiday Villa in Johor Bahru. The day before the event, I set up the laptops and assigned each event in the admin app to its correct venue, so that judges and emcees only see the events they are responsible for.
On the day itself, I started with an early morning briefing. The event ran smoothly with our app. Whenever the app lost its connection, I helped the judges reconnect so that the event could carry on without delay.
Next Week’s Plan
Dr Shawn has also asked me to extend the blocking to drafts in the judge app. Once a mark has been submitted, judges should not be able to draft a new mark or comment for that record at all. Next week, I plan to propose a solution for this to Dr Shawn, and once it is agreed, I can start implementing it.
0 Comments