Preserving LVM Cache

While there are a lot of examples that describe how to set up a LVM cache on an SSD for a HDD backed storage, they mostly fail to describe an additional step needed to preserve the cache across a reboot on a Ubuntu system. The culprit is that the drivers needed to enable the LVM cache are not built into the kernel, nor available in the initrd. Therefore, these drivers need to be added to the initrd. Additionally, some cache Read more

Week 12: Making the Go Version Safe to Run

This week, I moved from reading the Go code to changing it. My goal was the first small step of the C++ to Go migration: get the existing Go version of the registration system to build cleanly, and make sure it can’t damage real data when it runs. Getting It to Build The Go version didn’t build from a fresh copy. It was missing go.sum, a file that stores a fingerprint of each outside library the code uses, so Go Read more

Week 12: Improving the Tablet Layout and Final Farewell

Second-to-Last Review This will be my final week as an intern for this company. So, on 13th October, I showcased the improved mobile layout, as well as the replaced images. Dr. Shawn was content with my work, but expressed that the tablet layout still looks improper. He also said that he prefers more real photographs than stock images. So, I noted those down as my tasks for the week before my internship ends. Final Touches I tried to fix the Read more

Week 11: Completing the Mobile Layout

Weekly Review On the 5th of October, I had my weekly review with Dr. Shawn, where I showed him my current progress with the Sayembara website. He was satisfied with the new descriptions I provided for each feature—safe for a few adjustments that I could make if I have the time to do so. However, he assured me that the most important that I need to do to complete the project before my internship ends is to finalize the mobile Read more

Week 11: Starting the Migration from C++ to Go

This week, I started my new main task: migrating the backend of the registration system from C++ to Go (Golang). I’m not familiar with either language, so most of my week went into understanding the existing code and learning the basics of Go. Understanding the Existing System Monday was a light day, as I spent most of it travelling back after the weekend event in Johor Bahru. In the time I had left, I went through the C++ code again. Read more

Week 10: Finalizing the Five Webpages

Weekly Review On 28th September, I showcased the five new webpages to Dr. Shawn to assess them. There were a lot of revisions that needed to be done regarding the descriptions, and how close they were to the edge of the screen, so I noted those down. I also had to add a disclaimer at the bottom of the website that the illustrations used were from Freepik. Time for Editing! I started by editing the descriptions’ margins so that they Read more

Week 10: From Warning to Blocking and Starting a Golang Migration

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, Read more

Week 9: Finding a Practical Way to Detect Shared Judge Logins

This week, I presented my idea for detecting shared judge logins to Dr Shawn, revised it based on the feedback, and submitted a final proposal. At the end of the week, I also helped at an event at Da Men Mall, which was the first event to use the code I have developed for the admin app. Rethinking My First Approach My first idea was to create a backend API endpoint that gets device or session IDs from another project, Read more

Week 7 & Week 8: Completing the Vitest Migration and Starting a New Detection Task

Over the past two weeks, I completed the migration of the project’s automated tests from Jest to Vitest and got the changes merged. After that, I started a new task: researching how to detect when two accounts log in under the same role. Week 7 began with a setback, as I was admitted to the hospital on Monday with severe stomach pain and spent the day receiving treatment and resting. Learning Vitest and Migrating the Tests When I returned on Read more

Week 9: Creating the Additional Webpages

Weekly Review On 22nd September, I showed Dr. Shawn the new layout of the website, as well as the two versions that had different ‘Why Choose Us?’ sections. Due to the amount of faces being shown, however, we decided to scrap the section for the better. Since the main page is now 90% finalized, he suggested that I should start working on the individual pages for each section of the ‘flowchart’. The Making of Each Webpage I started doing my Read more

Week 8: Perfecting Presentation

Weekly Review On 14th September, I showcased both versions of the website to Dr. Shawn, one with real photographs and the other with stock illustrations. He much preferred the version with real photographs, though he suggested to switch some photos around for better presentation. Working through Troubles One notable suggestion was the addition of a group photo with a lot of participants holding certificates with the judges in the ‘Why Choose Us?’ section. I had a bit of trouble doing Read more