Week 14: Exploring New Possibilities

Feeling This Week This week was different from my previous weeks because I was not focused on completing a specific technical task. Instead, I spent time thinking about what I wanted to learn next and how I could contribute more meaningfully during the remainder of my internship. Even during my leave for the Hari Raya Haji celebration, I found myself reflecting on possible internship project ideas. Since most of my assigned GitHub tasks had already been completed, I felt motivated Read more

Week 12: Finalizing the JWT Authentication Migration

Completing the JWT Authentication PR This week was relatively light compared to previous weeks, but I focused on resolving the remaining issues related to the ES256 JWT Authentication PR. While preparing the PR for review, Dr. Shawn noticed that the Dart SDK version in pubspec.lock had been downgraded: During my testing, some dependency-related changes had unintentionally modified the SDK requirements. Dr. Shawn highlighted that we should avoid unnecessary version regressions unless there is a valid reason. After reviewing the changes, Read more

Week 11: From Debounce LLM to JWT Authentication

Successfully Merging the Debounce LLM Buttons PR This week, I successfully merged the PR for the Debounce LLM Buttons feature. During the review process, Dr. Shawn pointed out an important software engineering principle regarding error handling. Initially, I was detecting Gemini API rate limits through string processing and regular expressions by searching for keywords in the error message. However, Dr. Shawn explained that this approach is fragile because human-readable messages can change at any time. Instead, I should parse the Read more

Week 10: Debouncing LLM Buttons & Cleaner Architecture

Successfully Merged Polling Mixin PR This week, I successfully merged another pull request into the develop branch, which focused on fixing and restructuring the polling mixin implementation across controller files. The restructuring process helped make the controllers more organized and consistent compared to before. Working on Debounce LLM Buttons For the rest of the week, I mainly focused on a new task:Task: Debounce LLM Buttons At the beginning, I drafted a mockup/prototype for how the feature should behave: Initially, I Read more

Week 9: New Feature — Login Button & Maintaining Code

Fixing the Classbar Crash Issue This week, I successfully fixed the classbar crash issue that happened during polling updates. After debugging and tracing the issue carefully, I found that the problem came from how VenueObj was being compared. Previously, the comparison used rev, but every time polling refreshed the data from CouchDB, the rev value changed even though it was still the same venue. Because of that, the dropdown could no longer match the selected venue correctly and caused the Read more

Week 8: Progress, Not Perfection

Merging My First “STABLE” PR This week, I successfully raised a pull request for the upgraded version of the application (without the mixin). With guidance from Dr. Shawn, I managed to squash and merge the PR into the develop branch after going through proper checks. As part of the process, I learned how to: This step gave me a clearer understanding and important of maintaining a clean and structured workflow before pushing changes to the main development branch. Continuing Work Read more

Week 7: Taking a Step Back to Move Forward

Hitting a Block and Rethinking the Approach This week, I was still struggling to figure out how to properly fix and implement the moderator part in the emcee module. During the weekly meeting, Dr. Shawn suggested that I redo everything from a cleaner starting point. I also realized that I wasn’t fully confident with my current implementation, which made the decision to restart feel necessary. Starting Fresh (The Right Way) After Dr. Shawn reset the repository, I began by upgrading Read more

Week 6: Riverpod V3 Migration & Fixes

Polling Mixin (Riverpod v3 Compatible) This week, I successfully fixed the polling mixin so that it is compatible with Riverpod v3. The previous implementation had issues due to changes in Riverpod’s architecture, but after studying the updated structure and testing different approaches, I managed to refactor it properly. Current Issue: Emcee (Moderator) Data Error However, a new issue appeared in the emcee (moderator) section of the system. The system is returning a null or unexpected type, and the current implementation Read more

Week 5: Fix, Learn, Repeat

Deepening My Understanding This week, I continued focusing on learning how to implement mixins in a way that is compatible with Riverpod v3. Although progress felt slow, I realized that understanding the concept properly is more important than rushing to complete it. I spent time reading and experimenting to ensure I truly understand how the implementation should work. Applying Gitflow the Right Way After a few weeks of learning Gitflow, Dr. Shawn granted me access to raise pull requests again. Read more

Week 4: Figuring Things Out, One Step at a Time

Understanding Riverpod Better This week, I continued focusing on learning Riverpod, especially the differences between version 2 and version 3. Through reading documentation and exploring examples, I gained a clearer understanding of how both versions work and how certain implementations have changed. This helped me approach the migration process with better clarity instead of relying on trial and error. Exploring the Mixin Implementation One of my main focuses this week was to determine whether the mixin could still be implemented Read more