Matthew Lee


View my portfolio. Dialogue Wheel inspired by Dragon Age II :) About me. Contact me.

About

It is my passion to design, create and refine software applications be it for research, for improving quality of life, or entertainment purposes.

I graduated from Ngee Ann Polytechnic with a Diploma with Merit in Information Technology, Solutions Architect specialization.

I have also graduated from the National University of Singapore with a degree in Computer Science + USP and my area of interest is in NLP.

I am currently working at GovTech as an AI Engineer.

My mantra in life is to always improve myself, to learn from others and to be gracious.

In my free time, I like to read books, keep fit, and play games. I also watch anime.

Portfolio

More
Less
4 Certifications in 2021
AI4I, NUS Focus Areas
More
Less
NLP Research Intern (DSTA)
More
Less
Genshin Lyre Overlay
Keypress image detection, visualization and scoring system
More
Less
SWE Intern (SpeQtral)
under SGInnovate Summation Programme
Worked on SpeQtral's QKD software stack
More
Less
Panopto Plus
Chrome Extension to optimize NUS webcasts
Improves webcasts hosted on Panopto for NUS students
More
Less
TrAVEl
Press coverage by The Straits Times
Polytechnic Final Year Project to help the visually impaired and elderly use public transport
More
Less
MeL Pentesting
Blackboard Learn MeL Vulnerability
Discovered and recommended countermeasures for vulnerabilities in NP's e-Learning portal as an assignment
More
Less
Worked at PIXELSQUAD
as a Full-Stack Developer
Worked on Moter MegaMall & other projects
More
Less
Six
App that combines Tinder with LinkedIn (start-up)
Developed a high fidelity prototype on iOS with Swift 2.0 & Objective-C and MEAN stack with features like 2FA auth
More
Less
SOWS
E-commerce website in 3 weeks (start-up)
A brief experience working pro bono at a start-up
More
Less
Also Can!
English to Singlish translator (Ngee Ann Polytechnic)
Crowdsourced machine learning to parse vocal Singlish
More
Less
Dynalite
IoT project to visualize & analyse room vacancy
More
Less
CarParkour
Carpark vacancy mobile app
One of the first mobile applications for finding vacant carparks in Singapore
More
Less
Photobooth
Photo booth software (Ngee Ann Polytechnic)
Software include photobooth & display screen for photos taken
More
Less
GRPG
A Generic RPG
An rpg similar to runescape classic developed in 3 weeks
More
Less
The King's Hand
A 3D stealth archery game using GameMaker
Developed in 2 weeks without prior GML or 3D programming experience in a team of 2
More
Less
Little Strike
A 2D multiplayer top down shooter
Developed in 2 weeks in a team of 2
More
Less
Splash Wars
2nd runners up in Splash Awards 2012
A personal achievement, as the game was developed in 2 weeks without prior C# Silverlight experience
More
Less
Bookshelf
Web app to keep track of reading material
By indexing and summarizing what they read, users are better able to remember the finer points of useful articles.
More
Less
Scenery Traveller
Travel the world from your home
Complete with an editor
More
Less
Photoshop Work
Feat. Mr Anand
60+ high res. images of Mr. Anand's face in various movie posters (lol)
More
Less
Speak Me Not
Virtual Microphone using Google Translate
Speak to your friends in Google Translate's voice using text (CLI or GUI, Windows using Google Translate & VLC)
More
Less
Form Doer
A suite of scripts that automate the filling of online forms
Features include randomized input using regex, probabilities for radio buttons/checkboxes etc.
In 2021 I completed the AI4I course by AI Singapore and received the Foundations in AI certificate. I had also received 3 certifications from NUS, namely the Certificate of Merit in the Artificial Intelligence Focus Area, a Certificate of Merit in the Networking and Distributed Systems Focus Area and a Certificate of Merit in the Computer Security Focus Area.
~3 months
Python, Tensorflow, Keras, Sci-kit learn
Research on improving baselines set by existing SotA synthetic text detection models (e.g. RoBERTa, GROVER, GPT-2). During the internship, I had to build upon available literature to improve the SotA while working within the boundaries of hardware limitations. In the process, I had also explored and implemented other areas of ML such as image classification with EfficientNet.
~1 month on/off
Python 3
This was just a project I developed for fun as I was fascinated with the idea of making the lyre device in Genshin Impact accessible to more players. The project 'write-up' can be found here.
~3 months
Bash, C, C++, Linux, Google Collab, Python
During my 2nd year in NUS, I decided to participate in the SGInnovate Summation Programme and intern at SpeQtral during my summer break.

SpeQtral is a start-up company with expertise in satellite-based QKD based on technologies developed at the CQT. As advertised on their website, SpeQtral staff have been involved in demonstrations of entanglement-based QKD and daylight QKD and has successfully deployed an entangled photon source in a CubeSat in space.

SpeQtral has been using qCrypto, a collection of code written in C for entanglement-based quantum key distribution (QKD) on unix systems. The system is a suite of programs that allow two parties to produce a random symmetric key using the BB84 quantum cryptography protocol, as well as other as other discrete-variable QKD protocols such as BBM92.

While the system is functional and is in use by the Centre of Quantum Technologies (CQT) of the National University of Singapore (NUS), the code has not undergone significant changes for the last 6 – 12 years despite scientific advances in the field of QKD.

My work at SpeQtral was thus to improve the stack which includes the analysis of existing open-source implementations of QKD software stacks, analysis of the qCrypto stack itself. I also improved the stack in 3 main areas: better documentation of the stack, modularization of the error correction module and partial implementation of low-density parity check code (LDPC) for QKD purposes.

I am very grateful to SGInnovate and SpeQtral for offering me this opportunity to learn and contribute to their efforts in advancing quantum communication technologies based in Singapore, and the mentorship I received was outstanding. Thank you.
1 man team
1 summer break (~12 weeks)
Javascript, HTML/CSS
I participated in NUS Orbital, a programme where students had to propose, implement and complete a project. I decided to create Panopto Plus, a Chrome Extension that improved the UI of NUS webcasts, added transcripts and subtitles, silence trimming, volume boosting functionality and white noise reduction for these webcasts. These were performed without the use of an external server to ensure that the project will persist even without server support.

I used PreactJS to speed up some parts of the UI implementation. I implemented the subtitles and transcripts by leveraging on Panopto's own servers (cached upon retrieval to minimize load). The silence trimming was implemented with Double-Combined Fourier Transform using Web Audio API & Web Workers to decode and process the TS files (Audio Worklets caused memory leaks for my use case). There were also various other features implemented to improve the webcasting experience.

Panopto Plus is free and it can be downloaded here. The project is open source, so you can also find it on GitHub here. Implementation / testing details can be found here and the project code is documented using JSDoc.

At the point of writing this extension has 150 users even though it was not really publicly promoted due to the difficulty of promoting it. The extension's silence trimming is extremely useful as it has regularly trimmed off a significant portion of lecture time (probably around 10-20%) without affecting my learning. I'm pretty happy that a small project I developed over the holidays is this useful to so many.
Press coverage by The Straits Times, Ngee Ann Polytechnic Outstanding Innovation Team Award (Student Excellence Award 2015)
3 man team
1 semester (~16 weeks)
Android (Java & XML), PHP
For my final year project, I decided to develop an Android mobile application that improves the lives of the less fortunate in my community. Together with 2 other like-minded individuals, Jeremy Lim and Jian Yu, we embarked on TrAVEl as our final year project.

TrAVEl is an Android application (app) to help the visually impaired and elderly navigate Singapore using public transport. It automatically plans the best route based on the starting and ending points provided. It provides real-time updates even if there are other apps running to ensure the user is kept updated on where he is, when the next bus is arriving and also informs the user when to board/alight the bus/train through notifications. The route is recalculated if the user missed the stop.

The user experience (UX) is both visually and aurally designed for the visually impaired and works well with Android accessibility features (e.g. Talkback) if necessary. There is also a help button at the same location on every page to guide users if they are disoriented. Testing was done with the visually impaired guides at Dialogue in the Dark (DID) to ensure satisfactory UX.

A key feature is the speech-to-text recognition of a large dataset of Singapore places such as Jurong East, Bishan or even Bukit Chandu which makes it a lot easier for visually impaired to use (compared to existing apps). The app is also able to recognise speakers with different accents and pronunciations of most Singapore locations.

The development of TrAVEl has also led to the creation of spinoff apps, such as a bus timing monitor for the Pebble smartwatch which is also visually impaired-friendly, and a bus location viewer which uses live data from users of TrAVEl to display the locations of buses. It has also been covered by The Straits Times and won our team the Ngee Ann Polytechnic Outstanding Innovation Team Award.

After our final year project, we have worked with Ngee Ann Polytechnic (NP) and DID to refine the application. Since then, the team has handed over the project to NP publish and provide maintenance.

I am very thankful to NP, my advisors and last but not least my team of friends who made this project a success. It is my wish that the application would be helpful to the visually impaired and elderly community, especially since I have friends and relatives who fall under these categories.travel team image
The TrAVEl team & supervisors. From left: Mr. Henry Thet Swe, Matthew, Jeremy Lim, Jian Yu, Mr. Charles Keck. Not in photo: Mr. Andrew Tan, Mr. Ng Weng Choh
2 man team
1 month
JS, HTML/CSS, XSS
Me and two of my classmates discovered vulnerabilities in Ngee Ann Polytechnic’s (NP) E-learning portal, Blackboard Learn – Mel while working on a school assignment that required us to find vulnerabilities in any software / hardware.

Together with another classmate, I documented the vulnerabilities, developed proof-of-concept attacks and demonstrated them to our supervisor and NP’s administrative staff while recommending countermeasures. I'm not at liberty to elaborate on the vulnerabilities but they were severe enough such that they can be exploited to obtain the credentials of lecturers and other students easily.

This project taught me the value of IT security as I observed first-hand how one vulnerability (or a combination of vulnerabilities) can easily cause grievous harm to any organization. All of us definitely learnt not to be complacent; everyone had preconceptions that the system would be infallible before embarking on the assignment and we were shocked (and a little amused) when we discovered the vulnerabilities.
~5 months
Javascript & HTML/CSS (Vue.js, Sass, Angular 2), Typescript (Ionic & Cordova for Android & iOS), LAMP (CakePHP)
Immediately after National Service (NS), I decided to work at PIXELSQUAD, a web development agency, as a full-stack developer. I worked on various projects that required me to develop the website and mobile applications. One such project was Motor MegaMall (MMM) which was an online portal for buying and selling cars (like sgCarMart). On top of helping to develop the front-end and backend as well as the mobile application for Android and iOS, I also developed an online image editor for users to hide their car plate numbers. MMM also had a service that allowed users to apply for car loans to various banks, but each of these banks had their own forms for applying for a loan. To combat this issue, I had to develop a system that automated the population of PDF fields of these forms, as well as automated the signing & stamping of these documents using signatures and stamps provided by the user.

I had learnt a lot during my time at PIXELSQUAD and I am grateful for the opportunity to work there.
2 man team
~1 year
iOS (Swift, Objective-C), MEAN, 2FA (Twilio)
Six
As I was serving National Service (NS) as a clerk, I wanted to do something with my free time. That was when I met Sean, a like-minded individual who also wanted to make good use of his free time during NS. It was then that the two of us founded a start-up; our goal was to create an application that would combine Tinder and LinkedIn together such that you could meet and connect with other talented people for projects and work. I handled the technical aspects of the start-up while he managed the business aspect. The two of us designed the application together and I created the mobile application and setup the server from scratch. We managed to produce a high-fidelity prototype, but I had become too busy with new NS duties after up pes and decided drop the project after experiencing burnout.
2 man team
3 weeks
Javascript & HTML/CSS (Bootstrap), PHP & MySQL (Laravel)
Save Our World Services
Save Our World Services, or SOWS for short, is an online portal for services and products by companies in Singapore.

Together with another full stack developer, we revamped their existing website and content management system (CMS) using Bootstrap as our front-end framework and Laravel as the back-end framework.

Because the start-up company was undergoing a business overhaul, much of their existing website and CMS had to be scrapped; everything had to be redesigned and recreated from scratch.

The project was fraught with scope creep and changes, so much so that the founder of SOWS personally apologized for it. Fortunately, me and my colleague managed to pull through. We had delivered:
  • A relatively clean and responsive online portal that acts as a listing for services. Users can login to rate / favourite services, while companies can update their profile as listed services are linked to an existing company in the system.
  • A content management system for the business' employees to be used for managing the services listed on the portal.
We had also created an online messaging system similar to Web Telegram within 2 days and implemented an API for a mobile version of the portal but these features was removed due to scope change.

I am proud to say that the founder of SOWS was very satisfied with our work and astounded by our work ethic considering that we were unlikely to (and did not) get paid for our efforts.

All in all, it was a very tough experience because we had to rush so much work out in so little time but I learnt a lot through the process and from my colleague on both front-end and back-end development.
1 man team
1 month
Android (Java & XML)
Ngee Ann Polytechnic
Also Can! is a English to Singlish translator mobile application developed for Ngee Ann Polytechnic. This application syncs the Singlish dictionary with a server so that when a translation is corrected by one user, other users also get the improvement. There is a versioning system which allows the admin easily remove/ignore entries that they believe are spam.

A few years ago it could be downloaded here on the Google Play Store, but it has since been removed after it has become defunct.
4 man team
Python 3, CoAP, MEAN with PostgreSQL, React
Together with a few other teamates from NUS, I developed a web-app that dynamic visualisation of room occupancy using IoT devices.

Dynalite was built using 3 Docker containers and Raspberry Pi (RPi) GPIO for my CS3103 Computer Networks Practice module. The RPi reads light data, encrypts the information and then sends it via CoAP to the first Docker container containing a backend NodeJS-ExpressJS web server.

The backend server verifies the information and stores the measurements into a PostgreSQL database. This information is then displayed on a website detailing when the room is available and for how long using React.

I contributed to the IoT portion of the project which involved programming in Python 3 and managing the encryption between Python & Node.js.

The project can be found here.
2 man team
Android, PHP
Inspired by a friend's complaint that it was hard to find vacant carpark lots, I created CarParkour with my friend Jeremy Lim. CarParkour helped Singaporean drivers find carpark lots in Orchard and the CBD, wherever data is available. In tandem with data from government APIs, it uses a predictive algorithm to estimate the number of lots 10 minutes into the future and colour-codes carparks, saving drivers the effort of rerouting to another carpark if their destination is full. Additionally, it displays all HDB carparks and some commercial carparks, along with parking fees for selected locations. This app was made with Jeremy Lim under the Collab 08 banner. After official apps were released, CarParkour was no longer needed and has since been sunseted.
4 man team
4 weeks
Javascript, HTML/CSS, PHP (laravel)
Ngee Ann Polytechnic
I was hired by Ngee Ann Polytechnic (NP) with a group of other students to develop Photobooth, a web application that allows the user to take a photo of himself, frame it (from a wide range of frames) and give it a caption (which can be dragged to position it). The web application is usable on a computer, tablet or a mobile phone. The photo taken will then be displayed on a large screen for everyone to see.

Photobooth was used by NP School of ICT for Open House 2015. It was very satisfying to see the software run without a hitch on the day itself and to see everyone using it without complaints. To see their faces light up in amusement as their faces appeared on the screen was very fulfilling.
One of the two games that won me the Unity Technologies Prize, Featured in graduation showcase
3 man team
3 weeks
C++ DirectX
For a games development school assignment, I developed a parody of Runescape Classic with 2 classmates. Features include fishing, cooking, mining, trading, equipment, eating, map generation, mob generation, fighting and quite a number more such as quests.

The game basically leads the player from one quest to another, ultimately culminating in a boss fight with a dragon.
One of the two games that won me the Unity Technologies Prize, Featured in graduation showcase
2 man team
2 weeks
GameMaker:Studio Standard (Java)
My first exposure to 3D game development, I created a 3D game using GameMaker with a classmate. Features missions, relatively realistic archery (takes wind and heartbeat into account), skills etc.

This was despite the fact that I had little to no prior experience with either 3D game development nor GameMaker Studio and that we were expected (and advised) to only develop a 2D game.

I had wanted to develop a 3D game to challenge myself as I had already done various other 2D games previously and also because I also believed that the game idea of archery simulation would be better served with a 3D perspective than a 2D perspective.

It was tremendously satisfying when we surpassed everyone's expectations with the quality of the game, especially considering we did it so quickly and with all the GameMaker quirks.
Featured in graduation showcase
2 man team
2 weeks
Windows Form Application (C#)
Me and one of my classmates decided to take our Windows Application Development assignment to the next level and we created a multiplayer top-down shooter (which can support up to at least 8 players). It has multiple classes (specializations) with different abilities (such as turning invisible) and weapons and various other features like scoreboards, primitive map editor etc. Delta timing was also implemented to ensure smooth gameplay.

This assignment was especially memorable as we were the only team that conducted a live playtest when we were presenting to the lecturer and the class. Seeing everyone enjoying our creation made all the effort worth it.
2nd runners up in Splash Awards 2012
3 man team
2 weeks
Silverlight (C#)
During my first semester at Ngee Ann Polytechnic, I joined the Splash Awards competition with two classmates. As nobody in the team had any prior C# knowledge (and we only had a bit of coding practice), I had to learn C# and build a game with Silverlight in 2 weeks from scratch on my own. My effort paid off and we clinched the 2nd runners up position.

In addition to learning C# and winning 3rd place, the experience was unforgettable as it was a personal life lesson on the value of passion, focus and determination. The game was on the Windows App Store here, but has since been taken down after so many years have passed.
1 man team
Javascript, HTML/CSS
Bookshelf is a responsive web application created for users to keep track of what they read, or to take notes. What it does is it allows the user to summarize their reading material and tag them for future reference. Or they can just tag them for future reading. The main idea is to provide a platform for the user to keep track of what he reads and allow him to make notes / summarize if he wishes so that he can remember the more important points better.

Bookshelf has various features:
  • CMS for articles; add, edit, delete, search by tag/date/title/content, pagination etc
  • Uses Material Design (by Materializecss, but animations are changed to use CSS to provide smoother animation on mobile)
  • Responsive
  • Other little usability nuggets like automatically populating the add article input fields upon pasting in the article URL (e.g. filling in the title & description with the page's meta tags), Markdown for description/summary etc.
Bookshelf is now defunct as it relied on Parse as its CMS which stopped its service on 2017.
Bookshelf landing page with all sorts of tagged articles
An example of an article's summary, complemented with the use of Markdown
1 man team
3 weeks
Javascript, HTML/CSS
Imagine yourself standing in front of the world's grandest scenery. In front of the grand canyon. In lush forests. Accompanied with music.

Scenery Traveller teleports you from your home into the beautiful parts of the world, as if you are there amongst the foliage, or at the top of a mountain. This application allowed you to edit an image of a person online, choose a music video and grabbed sceneries from r/earthporn for the backdrop. The editor used Imgur as a backend: the edited image of the person would be uploaded as the image and metadata was uploaded as the description. However, as the Imgur API may have changed somewhat since, it is unlikely the project is still functioning.

Demo: https://crazoter.github.io/Scenery-Traveller/scenery_slideshow.html?id=4ojMLPg
Editor: http://crazoter.github.io/Scenery-Traveller-Editor/editor.html

More at the GitHub repository for this project:

An editor for this project is also available at this GitHub repository:


As you might have guessed, this project was originally a very elaborate joke
Photoshop
During web development class, me and a few friends discovered a security vulnerability in a website belonging to our lecturer which he was using as an example. This vulnerability allowed us to change the image on the website and we thought it was a great idea to photoshop our lecturer's face into a movie poster and put it on the website.

I started photoshopping his face onto various movie posters, and this snowballed into an entire photoshop portfolio of 60+ posters featuring him, Mr. Anand Ravi Deshpande. The full portfolio can be found at http://tinyurl.com/photos-of-mr-anand.

Note: This was a harmless prank on a website used for purely educational purposes; Mr. Anand was greatly amused and not insulted by the prank. On our graduation day, we gifted him a collage poster of these photoshopped images with our signatures, much to his and our amusement.
1 man team
3 weeks
C++, VLC, VB Cable
I created this Windows application because I wanted to "talk" to my friends while playing CS:GO, yet I did not have a microphone. I thought it would be cool (and funny) to speak to them in Google Translate; just hit a hotkey, type my message and play a voice sound file obtained from Google's Speech-to-Text API through a virtual mic using VLC.

More at the GitHub repository for this project:

Note: This project is now defunct due to lack of updates and changes to the Google Speech-to-Text API.
1 man team
Javascript, HTML/CSS
A suite of scripts to automate the filling of online forms such as Google Forms, SurveyMonkey etc. Allows me to randomize results by regex, set percentages for MCQs etc...

As you may suspect, these scripts were not made public because these scripts have the power to perform Denial Of Service (DOS) attacks on a form and can easily render any form's data useless in a few seconds (especially for SurveyMonkey; a DOS on SurveyMonkey would take less than a second because it enforces a limit of 30 survey results for a free account).

These scripts were developed for experimental purposes only and have only been used on sample forms. They have since been rendered defunct due to lack of updates and changes to the websites.
Back to top of portfolio