Hey, it's Phil, a software engineer specialising in Web technologies.

I'm currently building AI-powered educational platforms at the AI Centre for Educational Technologies (AICET)  at the National University of Singapore . I also teach software engineering and programming courses at NUS.

You can find me on GitHub and LinkedIn .

These are some of my coolest works yet.

A framework for building a system of AI agents

I'm building Superflow, a Turing-complete visual programming language that allows the creation of workflows with any agentic patterns imaginable.

I built this framework to support the development of ScholAIstic , a platform where teachers can build role-playing chatbots for experiential learning. With this, we can create complex simulation logic with many stages, branching paths, and generate grading reports with many rubrics.

This is a workflow that fires two agents concurrently to check for grammar and accuracy, then formats the output to HTML.

A workflow of agents in Superflow's web IDE

I built the runtime in Go and Python, and this web IDE in React.

I also built this static program analyser in Go, compiled it to WebAssembly, then run it in a Web Worker in the background.

Superflow's linter

A personalised learning platform with programmable learning paths

I built Cikgo , a learning platform where teachers can build choose-your-own-adventure style personalised learning experiences.

You can view this landing page I built for how Cikgo works.

This is a part of a lesson about traffic lights. Each node can have a different feedback type: just a "Continue" button, multiple-choice question, or text input.

Cikgo's Storyboard

This is what the student will see. Depending on the choices they make, they will be directed to different parts of the lesson.

They also can ask a question at any time. The lesson can be configured to automatically generate an answer or forward the question to the teacher.

Cikgo's Student View

Cikgo was the third runner-up and won the Swan & Maclaren Social Impact Award in the Huawei Tech4City Competition 2024 . It is currently being trialed at 6 educational institutions in Singapore.

Cikgo at Huawei Tech4City 2024 Cikgo at Huawei Tech4City 2024
Cikgo at Huawei Tech4City 2024 Cikgo at Huawei Tech4City 2024

Cikgo is built with React and Next.js, and runs on Docker containers on Amazon Web Services.

An open-source gamified learning platform

I'm maintaining Coursemology , an open-source gamified learning platform used by MOE schools and NUS courses.

Among the bug fixes, dependency upgrades, and enhancements I contributed, these are some of the major features I shipped.

This is a feature that allows teachers to set different deadlines for assignments for different classes, i.e., on different timelines.

Coursemology's Timeline Designer

This is a feature that allows programming exam invigilators to monitor examinees' activity in real time. It was built to support the shift to online exams during the COVID-19 pandemic in 2019, and is still being used today.

Coursemology's Exam Proctoring Dashboard

Coursemology runs on Ruby on Rails and React.

Other major contributions include the Migration from Embedded Ruby & Slim to React 18 and optimising its bundle sizes . You can view all my contributions on GitHub .

A macOS driver for the Wii™ Remote as an accessibility tool

In August 2025, I was diagnosed with a partial tear to the TFCC complex in my right wrist. I built a macOS driver for my Wii™ Remote to use it as a peripheral device.

I had to wear this splint for at least 6 months. With this splint, I couldn't twist or bend my right hand. I had to learn to do everything with my left hand, including coding.

Me with my wrist in a splint

I realised that my right hand's fingers can still move, and I needed to press Backspace a lot to correct my typos. So, I built a driver in Swift that intercepts the Wii™ Remote's Bluetooth HID reports and maps the buttons to Backspace and arrow keys.

This is one with the Nunchuk , which features a joystick and two buttons. I mapped the joystick to an accelerated arrow key presses.

I enabled Sticky Keys on my Mac, but sometimes I don't know which modifiers are being stuck. So, I built a tool that displays the blue overlay seen in these videos when I press the modifier keys.

I love Swift and I like to build quality-of-life tools like these. But more than anything, this one-handed experience and having to use assistive technologies had given me a new perspective to build more accessible software in the future.

Teaching at NUS

Software engineering

CS3217 is an advanced software engineering course where students learn topics such as enterprise architecture patterns, design patterns, and other core principles that build sound, scalable modern applications. I taught in this course since 2022.

CS3216 was a product engineering course where students learn how to build software products as solutions to real-world problems. I served in this course in 2021, 2023, and 2024. It was not offered in 2025.

CP2106/Orbital is a self-directed, independent coursework for freshmen to pick up software development skills by building a product of their choice. I was a senior advisor and tutor for 15 teams in 2021.

Programming fundamentals

CS2030S explores the paradigms of object-oriented and functional programming, and object-oriented software design principles. I was a tutor in 2021.

CS1010S introduces the fundamental concepts of programming. I was a tutor from 2019–2021. I also managed a different flavour of it, CS1010E in 2021 and 2022. CS1010S was recoded to CS1010A in 2023, and I taught the recitation classes in 2023 and 2025.