What I Did
This week, I continued improving the Rank Emcee module by optimising the bulk update implementation in cdb_client.dart. Instead of fetching each document individually, the new implementation now uses a single bulkDocs() request to retrieve all required documents, merges the changes in memory, and submits everything through a single bulk update request. This reduces the process to only two HTTP requests regardless of the number of documents involved.
I also started developing the Rank Judge module. The first step was creating the necessary backend structure, including the domain model, repository, service, and Riverpod controller. A new rank_obj model was introduced to store a judge’s ranking submission, consisting of an ordered list of performances along with their ranking positions and optional comments.
On the service side, I implemented functionality to retrieve existing ranking submissions and save new rankings submitted by judges. The system also checks whether a judge has already submitted their rankings and automatically locks the interface to prevent further modifications.
For the user interface, I developed a drag-and-drop ranking page using ReorderableListView, allowing judges to easily rearrange performances according to their rankings. Additional features include:
- Position numbers displayed beside each performance entry.
- Optional comments that can be added through a long-press action.
- A confirmation dialog before final submission.
- A read-only view after submission with visual indicators to show that the rankings have been locked.
To ensure reliability, unit tests were written to verify ranking retrieval, submission behaviour, ranking order validation, and comment handling. Temporary routes and navigation entries were also added to allow manual testing of the feature during development.
Challenge This Week
The biggest challenge this week was not technical, but personal. During the weekly meeting, I came unprepared, which I realised was unprofessional and unacceptable in a professional working environment. Looking back, I should have prepared my updates and thoughts more clearly to make the discussion more productive.
From a technical perspective, understanding how to structure the Rank Judge workflow while ensuring rankings remain immutable after submission also required careful planning and consideration.
Solution
After reflecting on the meeting, I acknowledged my mistake and reminded myself of the importance of preparation and communication in a professional environment. Moving forward, I want to make sure I come prepared for discussions, understand my progress clearly, and seek clarification earlier whenever needed.
For the Rank Judge module, I focused on keeping the workflow simple and intuitive by separating ranking submission logic from the user interface and ensuring the submitted rankings cannot be modified accidentally.
Reflection
This week reminded me that technical skills alone are not enough in software engineering. Preparation, communication, and professionalism are equally important when working with a team.
On the technical side, it was exciting to finally begin developing the Rank Judge module after spending several weeks on the Rank Emcee implementation. Seeing the feature slowly come together has been motivating and has given me a better understanding of designing systems from both the user and developer perspectives.
Next Week’s Plan
Next week, I plan to continue improving the Rank Judge module based on feedback and testing results while refining the Rank Emcee implementation where necessary.
I will also be preparing for my LI Presentation on Wednesday, 15th July. Hopefully everything goes smoothly — wish me luck!
0 Comments