June 16, 2025
There was some error with Nest Deployment, regarding my interactions endpoint. The port kept receiving an error as it was 'already in use', and after adding code to debug my bot's port, I was able to get it to work! Now its successfully deployed on Nest, here's the link: https://discord.com/oauth2/authorize?client_id=1392681836085379072&permissions=268520448&integration_type=0&scope=bot+applications.commands
Also, keep in mind that Nest has recently experienced server malfunctions, so if the bot doesn't work, check the #nest channel on Slack to see if there's a problem with Nest. (I've attached a snip of proof that my bot is currently running, so unless Nest is down, Rewardify should work)
Improve your server environment with Rewardify! :)
I edited and added buttons, icons, and information about myself; my strengths; my skills; and my passions on the website. I mainly worked on my 'resume' tab and decided to change it to a mostly achievements-based page with a timeline of all my awards, successes, and experiences. I added small paragraphs describing each of my 37 achievements and added links, stats, and background information for all of them. Here's my finished ABOUT page and ACHIEVEMENTS page!
Sorry for the late devlog; due to an internal error blocking me from accessing my project page and making a new devlog, I was unable to create one earlier for my previous work session and had to combine two of my work sessions in this devlog.
As I completed a lot of problems (12), I will quickly summarize some of the important ones, and you can assume that I completed the others during a short period of time and without too much difficulty. The next 3 problems required mostly general implementation and also some custom comparators.
Booster Cushions: This was a really annoying problem and I was stuck on it for at least an hour and a half as I implemented my solution in the wrong way with faults regarding x,y swaps for my 2D array but managed to solve the problem with a little tweak at the end.
Mr. N’s Presents (RESOLVED! from previous devlog)
This Maps problem’s solution required a custom comparator and custom class to store the values. To keep my solution inside the time limit, I also had to create multiple maps, relating indexes to the values, to prevent lengthy sorting and a large time complexity.
Box and Whiskers
Although this problem seemed quite straightforward, parity cost me a lot of WAs and to make my solution cleaner, I created a central method for calculating the middle of any array and was able to reach an accepted solution.
The next problem relates to PSA (prefix sum array) and DA (difference array), two very powerful time-saving techniques in competitive programming. All the logic from the 6 PSA/DA problems I solved was required in RGPC '18 P3 - Chocolate Day, so I will just explain one problem for these two topics.
I have attached proof of my accepted submissions from Booster Cushions and Chocolate Day.
Cleaned up my code, added a reviews system!
1. created the command /review for users to review other users (Made sure users couldn't complete self evaluations)
2. created the command /viewreviews for users to view reviews of other users
3. created the command /myreviews for users to see reviews of themselves
4. programmed my app with functions and implementations of the review system to ensure the review system works.
Continued to enhance the user experience by adding the following features:
1. added global and server specific implementations for /leaderboard, /xp, and /givexp; created /globalleaderboard command to see global leaderboard (/leaderboard is for server leaderboard)
2. Reduced the possibility of fraudulent activity regarding the xp system by adding a cooldown timer which makes sure a 15 sec cooldown is enforced before a user can receive/lose XP again
2. fixed critical bugs with the global and server specific functions to ensure optimal user experience
3. added a level-up system with role management and level progress bars
Programmed the basic functions of Rewardify: I added the basic commands, /xp-discover how much xp a user has (defaults to the user that requested the command if there is no specification), /givexp-send xp to reward a user, and /leaderboard-show the top 10 users with the most xp
I created the basic foundation for my discord bot:
1. Set up local environment by installing NodeJS.
2. Created an application in the discord developer portal and retrieved my token, public key, and app id.
3. Set up an install link, added permissions for my bot, and added the bot to a dm and server.
4. Created an Interactions Endpoint URL for my discord bot to allow it to receive interactions on a public URL.
Afterwards, I tried to create a simple bot that creates a Rock Paper Scissors game to explore responding to commands.
5. Programmed my bot to receive commands; one a test command that prompts the bot to message, 'hello world', followed by a random emoji; and one the challenges the user to a modern-twist on the rock papers scissors game.
6. Programmed my bot to handle select menu operations, which occur when the rock paper scissors challenge command is called and the user is prompted to select their choice of weapon.
Rewardify is discord bot which implements an interactive reward system for users to gift XP to other users for accurate replies, helpful comments, and overall respectful behaviour! Its features include an XP system with a cooldown timer to prevent XP spamming, a leaderboard (server and worldwide versions), a level system with progress bars and role assignment in recognition of XP achievements, a review system, and of course aesthetic and colourful replies from Rewardify. The bot has a total of 11 commands!!! Try the bot by adding it to your server! A video demo is also available on the github repo.
I finished 7 problems in these 3 hours and developed an in-depth understanding of custom comparators! Hour #1 & Hour #2: I quickly breezed through 6 problems & attempted another one! 1. (5 mins) CCC '18 J3 - Are we there yet?: This was a really easy problem as the question only required simple math and array manipulation. 2. (20 mins) CCC '15 J3 - Rövarspråket: a little index confusion, but this was relatively easy to program, other than having to deal with char ASCII values. 3. (15mins) WC '18 Finals J1 - Conditional Contracts: a quick, easy and straightforward problem after making the key decision to use a map! 4. (10 mins) COCI '16 Contest 4 #2 Kartomat: just a string problem with easy implementation. 5. (30 mins) ATTEMPTED New Year's '17 P1 - Mr. N and Presents: Tried solving with a quick List implementation, but TLEd and I am currently working towards a faster solution. 6. (15 mins) CCC '06 S1 - Maternity: I understood the genetic theory, so finding the solution didn’t take long, but implementing the code took a while. 7. (~25 mins) FSSOC '15 Fall S2 - Hearth: The multiple interfaces were confusing at times, and I also originally failed to implement the double lexicographically least order, but this question was pretty straightforward.
Hour #3: I completed CCC '07 S2 - Boxes, a question requiring a custom comparator. It took a little while ~30 mins to write the solution, as I kept getting errors regarding Collection.sort() and the comparable class. Next time, I will ensure to implement a custom comparator correctly. Afterwards, I debugged my solution and dealt with an integer overflow error when the output of the box volumes were incorrect due to the volume amounts exceeding limits.
I completed 7 updates to my game to improve player interactivity!
1. Added audio: soundeffects for jumping and collecting coins; and background music.
2. Added more comments which steer the player in the right direction.
3. Fixed some tileset errors as sometimes the player would encounter invisible walls.
4. Edited blocks in the tilemap to ensure the player can easily see comments and easily jump between platforms.
5. Changed the fall zone to ensure the player restarts the level whenever they fall into the abyss, regardless of where they are.
6. Improved the player's jumping abilities to decrease the difficulty of the platformer.
7. Reprogrammed the player's movement script to make the movements smoother by adding friction and acceleration.
Finally almost finished with Sets and Maps! The first 3 hours of this work session was dedicated to completing the ten pointer CCO '99 P2 - Common Words as I fixed multiple index and interface errors in my first very messy attempt at the problem; then had to reprogram my code as a result of misreading the question the first time (To be precise, a word w is the kth most common if exactly k-1 distinct words occur more frequently than w in the data set). In my second attempt at the problem, I used a custom comparator to sort the words by the number of occurrences. The remaining time, I worked on improving my previous solutions by testing out other users' accepted java submissions in VS Code and gathering information on areas of improvement (how to make my code faster, and more simple). Of course, my own solutions are still the ones presented in my project. My accepted solution for Common Words is attached.
Continued the unit with 10 more problems (I forgot to mention before, but by the end of every devlog, I usually finish around 10 problems (sometimes this can be as little as 8 or as much as 20) on DMOJ and USACO. The problem set is comprised of (0-2) 3 pointers, a majority of (5-7) 5 & 7 pointers, and (2-4) 10 pointers. This work session, I managed to finish the problems faster, as some of the concepts could be transferred between problems, reducing the amount of brainpower required. The problems that I solved required knowledge of Maps algorithms to complete, although I struggled with some whitespace errors on Spirals and overcounting in USACO 2021's ACOWDEMIA III. These problems took quite some time to debug. Here is one of my accepted solutions (Spirals).
I created the foundation of my website (the 6 tabs) and added information to my personal website by filling in my achievements and experiences. I also customized the website to make it fit my personality by adding an image to the homescreen, altering the colours, and making some text bolder for emphasis.
Following jumpstart's tutorial, I made Desert Dunes, a platformer in which the user collects coins and traverses through the game. In order, I created the tilemap & amp; player, added a 2D camera and player script to control double jump and gravity, made sure the player restarts the level when it falls through into the abyss, created coins for the player to collect, added animations to the coins and finally added a script to the Heads-up-display to ensure the coin count increases when the player collects the coins.
Desert Dunes is a 2D platformer by Sophia created using Godot! Inside Story (You are Stuart, the player): [You are Stuart, the player] Stranded in a sun-scorched desert after a crash, Stuart finds himself alone among ancient ruins half-swallowed by sand. The wind whispers through broken stone, carrying echoes of a forgotten world. With each leap across crumbling platforms, he pieces together fragments of a lost civilization; skeletons, signs, and ghostly coins. Something watches. Something waits. He presses on. Not just to survive, but to uncover why he was brought here. Aim of the game: collect as many coins as you can and travel to the finish! (Total is 28 coins) Controls: Space/Up arrow/W to jump; Left and right buttons or A/D to move; Double Jump is allowed! Have fun! (Visit the README for more information).
I finished the Sets and Maps problems! In addition, I worked on finishing up some long awaited brain twisters which I have been stuck on for a while but was unable to commit to because of my goal to finish ALL of this week's Sets and Maps problems. These conundrums included https://dmoj.ca/problem/coci16c2p3 (DMOJ: Nizin) and https://usaco.org/index.php?page=viewproblem2&cpid=1108 (USACO: Comfortable Cows). I struggled on time complexity and index errors but was able to achieve AC after continuous debugging :) I haven't attached an Accepted USACO submission yet, so here it is:
I continued with more problems about sets and maps, and similar to before, I submitted my solutions to DMOJ and USACO. For me, these problems required more debugging and more efficient programming in order to develop a solution that would not time out yet also maintain accuracy. Here is one of my accepted solutions.
I completed some problems which were centered around Sets, Maps, and Binary Search (coded and debugged). My solutions were submitted to DMOJ and USACO. One of the problems that I spent the most time on is Appleby Contest '19 P4 - Rectangles, as I dealt with TLE due to my bad time complexity and other errors, but eventually developed an efficient solution. Evidence of my Accepted submission is attached, but one could find my DMOJ account and search for the problem there to find my full solution.
My progress on DMOJ for competitive programming. (I will implement my solutions onto a website in the future)
This was widely regarded as a great move by everyone.