Projects

On this page, you'll find the projects that I've done to date. Feel free to learn more about each of them by going to their respective GitHub link.

Due to plagiarism concerns, my code from projects of UNSW courses will not be made publicly available.

esglow

ESGlow

ESGlow is a web application designed to provide investors with an intuitive and personalised interface for accessing ESG information from companies, empowering users to make informed investment decisions. In my capacity as scrum master, I skilfully led the team through the agile development process, which involved decomposing user stories, implementing client feedback, facilitating standups and design solution discussions, monitoring the Jira board and ensuring implementation of improvements from sprint retrospectives. My initial contributions involved establishing a relational database schema, configuring the Docker environment and creating the Python Flask backend endpoints and tests. As the workload intensified, my proactive approach led me to pivot towards the React frontend by generating numerous components, overhauling the UI and executing extensive code refactoring.
While the demands of spearheading this capstone fullstack project were undeniably significantly, the impressive client reaction during our presentation validated our dedication, technical prowess and collaborative spirit, in turn concluding my university journey on a high note! A demo of the website can be found here.

Otto Recommender System

Otto Recommender System

Taking the lead, I orchestrated a compelling five-week Kaggle competition, steering the optimisation of the Otto Recommender System for a major e-commerce platform. Our approach involved some initial exploratory data analysis followed by the model selection, in which we implemented a two-stage Re-Ranker model (utilising co-visitation matrices and custom re-ranking) alongside LightGBM, XGBoost and Word2Vec with hyperparameter tuning to capture complex patterns between customer interactions. Drawing inspiration from published notebooks, we opted for an ensemble approach, synergising model strengths to improve predictive performance. Ultimately, this manifested in our ranking within the top 1%, being a testament to the remarkable collaboration within our three-member team and providing us with invaluable experience within the limitless realm of Machine Learning.

mini playground

Mini Playground

I challenged myself to build a personal project with a little more underlying logic and complexity involved - and what could be better than making a series of beginner games! I started building the Wordle clone by following a video and some of the games were coded in plain Vanilla JavaScript as standalone projects, before converting them to React and accumulated into this Mini Playground website. Additional games were then implemented, along with dark mode, mobile device compatability, several difficulty levels and a score tracking system, and it was incredible seeing myself creatively complete extra tasks to elevate this project as I saw fit.

Stickyspiration

Stickyspiration

The name of this website comes from the cross between 'sticky notes' and 'inspiration'. Therefore, it uses an API to fetch inspirational quotes, with the bottom section being a revamped to-do list. Credits to YouTube videos once again for reinforcing my foundation of React, though I did find myself implementing additional cool features, deploying it on Netlify and diving into the intracacies of responsive web design.

Cipher Cracker

Cipher Cracker

This responsive web application is able to encode and decode five different ciphers. The backend functions were coded in JavaScript and the frontend was created using the React library (with the react-bootstrap framework). As a beginner, I had to watch a series of YouTube tutorials to learn the syntax - it was interesting understanding about 'useState' hooks to print the output 'onChange'. I found this self-led project to be an awesome way of getting my hands dirty with React, and will continue refining my web development skills.

UNSW DataSoc Website

UNSW Data Science Society Website

The primary purpose of the official DataSoc website is to keep students informed about the society to bridge their gap with the data science field. The website is built using the Jekyll static site generator, which amalgamates the use of Markdown, Liquid, HTML and CSS. From our customised templates and page layouts, it streamlines the process of consistently uploading content like blog posts and upcoming events.
Having been in the IT/Publications Portfolio for 3 years: 1 year as a subcommittee member and 2 years as a director, I am the primary contributor to this website. I have led my team to continually make improvements and spearhead initiatives like setting up Google Analytics to track the overall traffic in our internal dashboard.

Dungeon Mania

Dungeon Mania

Dungeon Mania is a game where the player can control a character who has to complete various goals within the dungeons in order to win - and this consists of item pickup, enemy battles and even time travel. Provided with the frontend, students were required to build the Java backend, which made up a large component of the COMP2511 (Object-Oriented Design and Programming) group project. After the stages of domain modelling (in the form of a UML diagram), we adopted for an agile, test-driven development to implement the backend. By incorporating multiple design patterns, we minimised any code smells and were able to adjust to the evolving requirements of the game, even tackling the extension sections of the project. Our success was attributed to meticulous project management, organised standups and effective software design.

Edubites Website

Edubites

The CSESoc Annual Flagship Hackathon 2021 required us to develop a solution to address the challenges in making education equitable. My team decided to focus on the lack of engagement within rural students, tackling this through an educational games approach. By earning 'bite-sized rewards' after successful completion of quizzes and homework, they can unlock various games and compete with each other in a friendly leaderboard.
Our website was created using Typescript and React, which I had to learn and code within the 24 hour timeframe - special thanks to my team members. We used Visual Studio Code's Live Share extension to simultaneously work together without the need to worry about merge conflicts. Our pitch can be found here.

Flockr Platform

Flockr Team Collaboration Platform

As part of the major project for COMP1531 (Software Engineering Fundamentals), my group of five was required to build a digital collaboration and communication tool based on the functionality of Flock. An agile development approach was used throughout, following the requirements of end users to build the Python backend server. This includes authorising users on registration, managing channels based on user permissions and having various messaging capabilities. Our excellent project management, pythonic programming and effective teamwork led us to achieve a final mark of 100, with bonus features implemented.

Fury of Dracula Visualiser

The Fury of Dracula

This COMP2521 (Data Structures and Algorithms) assignment mirrors the real game where four hunters are chasing the Dracula across Europe. Within my group of four, we first developed ADTs for the hunters and the Dracula so that they have appropriately restricted views of the game state. Then, we implemented AIs for them so that they can battle in a tournament against other teams' algorithms. Our final mark of 100 was a result of our consistent standups, pair programming and problem-solving, with our AIs ranking in the top eight.

Notification System

Notification System

During July 2019, I was an intern at CSIRO Data61, where I gained my first exposure to programming. My goal was to engineer a simple notification system for the employees by the end of the week's work experience. Upon learning the basics, I operated a microcontroller through the Arduino platform so that a servomotor automatically swings a bell. Stemming from my enthusiasm, this task was completed quickly and I challenged myself to experiment to other products. There were several compliments praising my ingenuity, and this workforce exposure has reinforced my desire to flourish as a computer scientist in the future.