I'm a hacker (in both senses, probably) who builds at the intersection of hardware and software, occasionally dabbling in cybersecurity. I like shipping things that make life a little easier — whether that's a venue booking system, a transit router, or a challenge that makes you stare at a memory dump at 2am.
Elsewhere: Blog · LinkedIn · CTF writeups · Robotics portfolio
| 2nd | BrainHack CDDC 2024 — DSTA Inter-Uni Capture-the-Flag | |
| 3rd | STACK the Flags 2020 — GovTech 48-hour jeopardy CTF | |
| Silver | National Olympiad in Informatics 2020 | |
| Award | Cyberthon 2020 — 3rd overall & Data Science category |
| 1st + Most Innovative | STACK the Codes 2022 — VulnGuard VS Code extension | |
| Most Entertaining | Hack&Roll 2023 — Attention, PvP maze game (Socket.io backend) | |
| Top 8 | Hack&Roll 2022 — CAPSLOCK, 1v1 typing game (high school participant) |
| 3rd + Math Division Champion | VEX Robotics World Championship 2019 — Division Champions, Round Robin Finals | |
| 1st + Excellence | Singapore VRC National Championship 2019 | |
| Silver | Zhang Heng Engineering Award — FIRST Global Challenge 2019 (Team Singapore) | |
| Custom Arduino Protocol | SICC — custom half-duplex serial protocol for reliable Arduino IC communication |
| NUSMods | NUSMods (source) — Maintainer (2023–2025) | |
| Treeckle | Treeckle (source) — Tech Development Head, venue booking for CAPT (~100 MAU) | |
| CAPT Mass Recruitment | Led tooling for 20+ committees, 200+ applicants (bot) | |
| Greyhats × CNA | Built screen-recording tooling for Talking Point: repair shop privacy |
Challenges for NUS Greyhats events — full list on my blog.
| Walk Down Memory Lane | Volatility memory forensics, process analysis, and file carving from a Windows dump |
| Maze Runner | Use dijkstra to solve a maze problem where you can phase through walls | |
| Poly Playground | Derive polynomial coefficients from their roots | |
| All About Timing | Predict tokens seeded from connection time in seconds |
| NUS Geographer | Decode Bluey's NUS walk diary into a hidden message |
| Rainbow Road | Abuse WebSocket disconnect state to bypass maze walls (source) · writeup |
| 67 | Reach score 67 in server-verified hand-gesture Flappy Bird | |
| SeeTeeEffedIn | PostgreSQL refint cascade SQL injection | |
| Go Going Goen | Chain PostgreSQL READ COMMITTED race conditions across three stages |
| VEX Robotics | Portfolio (2015–2020) — multithreading, PID, odometry | |
| RoboCup | Robot Soccer 2016–2017 | |
| Arduino / SICC | SICC protocol (2016–2020) - A custom synchronous protocol for inter-IC communication based off I2C |
| SGRouter | Java / Spring (2017–2021) — multithreaded Dijkstra transit routing | |
| Valorant presence | Golang backend |
| Android | 2017 | |
| Flutter | 2018–2021 | |
| Valorant chat client | Vue + Electron + Vite (2022) | |
| NUSMods · Treeckle | NUSMods · Treeckle |
| Capture the Flag | Competing & authoring (2018–present) | |
| Machine learning | 2019–2020 | |
| Valorant presence | C++ Windows + Discord (2021) |





