Tell me and I forget. Teach me and I remember. Involve me and I learn.

– Benjamin Franklin

Career Experience


Software Engineer Intern, Shopee Pte. Ltd.
May 2022 - Present
  • Frontend Software Developer in Paid Ads team
  • Programmed primarily in Typescript
  • Libraries used in development: React, Vue.js
  • Gained experienced in manually configuring code bundler (Webpack) to set up critical features like transpiling typescript, code-splitting, uglification etc
Software Engineer Intern, Singapore E-Business Pte. Ltd.
May 2021 - Jul 2021
  • Learnt to develop process flows for conceptualising implementation of payment services such as cross border payments
  • Developed backend for direct debit authorization service, utilizing Spring Boot framework in Java to implement RESTful API, with Hibernate ORM to interact with MySql supporting database
  • Played a key role in the development process, including testing and debugging, reviewing and approving code written by junior developer, providing guidance as needed
Tutor, Self-Employed
Dec 2017 - Present
  • Started providing Secondary School English, Sciences and Humanities subjects from 2017
  • Currently providing private computing tuition for both University courses and Pre- University Computer Science

Achievements


  • Dean's List 2021/2022 Semester 2, National University of Singapore, School of Computing
  • Dean's List 2021/2022 Semester 1, National University of Singapore, School of Computing
  • 4 Distinctions at GCE A-Levels
  • 8 Distinctions at GCE O-Levels

Projects


A Short Write-Up.


I've always been interested in electronic projects from a young age, and programming projects extend nicely from there. I'm always keen to try out new technologies, and see what I can build from them. Every technical project involves problem solving - which I enjoy. As a person with interests in many things technology, I have a varied array of projects under my belt - not just limited to software development. So here's just a collection of projects I would like to share.

[object Object] Icon

This Webpage

My portfolio website using React
  • Objective was to create a space to share my skills and projects, along with industrial experience. and develop my skill in front-end dev at the same time
  • Written in Typescript
  • Built with Webpack using a custom configuration
  • Main libraries used: react-router, framer-motion, react-bootstrap
Repository

Description

Having originally started development on this website in December 2021, I have been continually updating it as I've learned more techniques in frontend developement.This webpage was built using React with Bootstrap to help in the layouts. React-router was used for routing and framer-motion for the animations. No template was used, as I wanted to fashion the website from the ground up, so I could impart my own style and also maximise the learning experience. The project was set up to be easy to maintain and update. Details and explanation regarding the configurations I used for the project can be viewed in its repository.

[object Object] Icon

Thinking in 3 Dimensions

3D printing
  • Extensive experience in building and maintaining 3D printers
  • Parametric modelling in Fusion360 to develop parts for own projects
  • Marketed 3d printing services to supplement financial cost of hobby

Description

I got into 3d printing as a hobby as I found the ability to fabricate parts at home exciting, and useful for electronic projects. I also liked the idea that a hobbyist like myself could harness such seemingly cutting-edge technology, thanks to the open-source nature of the 3d printing community. I first started in 2017, when I built a cheap 3d printer out of parts from China to minimise cost. Since then, I've honed my ability to debug the myriad of errors that 3d printers can encounter and how to fix them to get great prints. Addtionally I've also done some 3d modelling in Autodesk Fusion360 to make my own parts for projects. Now I'm using a printer that is considerably better than the one i first started with, upgraded with custom components to enhance print quality. I've also marketed 3d printing services, which has almost entirely eliminated the financial cost of the hobby.

[object Object] Icon

Smart Room

Making regular room appliances smart
  • Objective was to enhance the convenience features of appliances in my room
  • Remote controls of appliances wired up to GPIO pins of Raspberry Pi, which acted as a backend server for controlling all appliances in room
  • Built simple android app to communicate with Raspberry Pi server, so phone served as unified remote
  • Utilised Alexa Skills Kit (ASK) to add voice control by using alexa device to send the interpreted commands to the Raspberry Pi server

Description

This project was born from the desire to make the simple remote-controlled appliances in my room like the fan, lights and air-conditioning 'smart' (an example would be turning on the lights at a specific time of day). The main problem I faced stemmed from the fact that these devices were not designed to be 'smart', hence to interface the applicances with my Raspberry Pi (the control hub), I had to wire up their remote controls to the GPIO outputs of the Pi, and write python programs that triggered the right output (with correct timing of 'button presses') depending on the action wanted. With the Raspberry Pi as a backend server, I later built a simple android app to control the devices through my phone (to use as my unified remote control for all appliances), and also incorporated voice control through the Alexa Skills Kit (ASK).

[object Object] Icon

Fridge View Bot

A Telegram bot to reduce food waste
  • University module sustainability project
  • Utilised python-telegram-bot module to build the bot
  • Raspberry Pi backend server, with data logging and storage of user information in pickle files, along with image storage.

Description

This was a project I undertook for a sustainability module I took in the National University of Singapore (NUS), GEH1074. It was designed to be a solution to the problem of food wastage by hostel residents who left food till expiry in hostel fridges, either by forgetting or not being able to finish their food. A Telegram bot was chosen as Telegram is an application used by pretty much everyone in NUS, thus reducing the onboarding process. Fridge view bot provided students with a convenient platform to log the food they placed in the refrigerators, and put their items up for sharing in the bot when they were nearing expiry and they could not finish them. Fridge view bot also sent reminders to students as their items neared expiry. One problem faced in implemenation was how to allow other people to know where a shared item was in the fridge. A simple solution I came up with was to incorporate storing of images of the locations of the items in the fridge on the backend server, and sending the image to a user corresponding to the item being retrieved by that user.

[object Object] Icon

Pong Connect

Multiplayer Pong over the Internet
  • Project undertaken purely out of interest
  • Based on the CS50 game development course pong game, with some enhancements, the main one being internet multiplayer
  • Client Hosted multiplayer set-up
Repository

Description

This was a fun mini-project I undertook as I was trying out Harvard's CS50 Game Development course. I was interested in the complexities of implementing a multiplayer game (which I discovered were immense as I researched for the project). I settled on a simple setup whereby one player would be the server and the other the client. The game would essentially run on the server machine, and deliver and receive data from the client via UDP packets. The game was designed to be able to handle lost packets as long as not too many were lost. Upon playing the finished game, an acceptable framerate of around 40-60 fps with little choppiness being observed on the client's computer. While the premise of the project, the game pong, is extremely simple, by simply trying to make a multiplayer version, it became a lot more complex and exposed me to some of challenges faced in multiplayer game development, like handling packet delays/losses, interpolation etc. It was also pretty fun to play the finished product with a friend!