Side Projects

Web programming is one of my earliest interest because of its low barrier to entry to achieve such an intricate interface, but essentially, anything boils down to solving problems. Over the years, I’ve encountered numerous problems and I solved it through writing web applications.


Raun is a web application to monitor Wikipedia changes in real-time. Natively, Wikipedia provides this functionality at their website, but it didn’t do auto-refresh and those changes done to older articles were meaningless as if there are newer edits, it’s the newer edit that matters. Raun solves both of the problems by feeding the changes to user in real-time while also aggregating the changes such that users only see the aggregated changes. Integrated with ORES, an AI revision scoring service, Raun also hints which revisions are more likely to be harmful and hence need admins’ attention.


code is a web application to live-collaborate and compile codes in the cloud. In 2014, my friends and I formed a team to compete in coding competitions, but we had little time to meet up and practice. “code” solves this problem by allowing users to code collaboratively in real-time, powered by Firebase (the legacy version), and Ideone to compile and run the codes in the cloud.

plan*: NTU Course Planner

During my times in university, around the end of my 3rd semester, I faced a really tough scheduling problem for my 4th semester. I planned to take up 7 modules, but their schedules often clashes. Each modules have its schedule assigned an index number and module registration takes place by you entering the index number of each modules to the university’s system. The registration system won’t allow you to register clashed modules, yet it won’t tell you if these combinations of modules are possible or not; it only tells you if the combinations of indices are possible or not. Manually, it will be a torturous labour work to brute force the module indices. Hence, me and my friend set out to build a tool to enumerate the possible schedules for a given modules. This tool consists of two parts: web scraping of the course schedule from NTU’s public website (plus some pre-processing), and scheduling (essentially, a complete search of user-inputted modules to return possible module indices, if such solution exists). This tool was organically quite popular during course registration times (around June and December)


c4 is a Connect Four game in web. This is a more fun kind of problem to practice implementation of AI knowledge learned from a MOOC and also to practice drawing and animating in HTML Canvas.