Site Introduction
Links are surrounded by brackets. The type of bracket conveys the following:
Link Target
Internal External
Content Author Me [Square] {Curly}
Other - (Round)
Publications
The Dimension of Sparse Random Graph Orders
(presentation)
{arXiv preprint}
May 2024 - Aug 2024
Coauthored paper during undergraduate research assistantship under professor Jane Gao
Projects
4D Raymarching Pathtracer
| C++
[devlog]
[report]
[gif]
[gif]
{Github}
Jul 2025 - Aug 2025
A CPU pathtracer writen in C++ that writes renders to GIF, created as a final project for CS 488
Employs SDF raymarching in 4D space with pathtracing to contruct video renders of the scene
Every frame in the capture, the camera sends out rays into a 3D affine subspace of the 4D space, which can exit the subspace upon scattering at a surface
Implemented a powerful material system with microfacet BRDFs, glass, volumetric fog, and more with the ability to assign more than one material to a geometry
Rigid-body Particle Simulation
| C++
[gif]
[gif]
Jul 2025
Created for the CS 488 graphics course at the University of Waterloo
Simulated gravity, spherical constraints, and collision physics for rigid body particles
Software Rasterizer
| C++
[png]
[png]
Jun 2025
Created for the CS 488 graphics course at the University of Waterloo
Recreated the whole rasterization process on the CPU, including perspective transformation, triangle rasterization, depth buffering, and perspective correct interpolation
Software Raytracer
| C++
[png]
[png]
[png]
[png]
May 2025 - Jun 2025
Created for the CS 488 graphics course at the University of Waterloo
Implemented the Möller–Trumbore algorithm for fast ray-triangle intersection
Programmed Lambertian diffuse, specular refraction, and specular reflection behaviour, and support for spherical environment mapping
Software Raycaster
| JavaScript
[web]
{Github}
Sep 2024 - Oct 2024
Implemented a software based raycasting algorithm with vanilla JavaScript where parameters and the scene can be manipulated
Renovating the Labyrinth
| JavaScript
[web]
{itch.io}
{Github}
Oct 2024
Solo submission made in 72 hours with vanilla JavaScript on an HTML canvas for the UW Game Dev Club's fall 2024 game jam; voted winner of the technical achievement award
Built a real time optimized ray caster with ordered Bayer matrix dithering
Programmed 2D rigid body collision behaviour and a randomized Prim's algorithm for map generation
Bloom
| Godot
{itch.io}
{Github}
May 2024 - Jun 2024
Team submission made in 72 hours with Godot for the UW Game Dev Club's spring 2024 game jam
Implemented colour mixing, screen wrapping, movement, and flower spawning mechanics
Interplanetary File Explorer
| Go, Python, JavaScript
{web}
{Github}
{Devpost}
Jan 2023
Visual file explorer of an IPFS written in Golang, Python, and JavaScript for the 2023 UofTHacks X hackathon; winner of the Estuary sponsor prize
Created vector embeddings for files in the Estuary IPFS using Co:here’s NLP embeddings on file headers
Performed principal component analysis of the vector embeddings to reduce dimensionality and be displayed interactively in 3D space with Three.js
Prognosing IPF
| Python
[CWSF paper]
Dec 2020 - Jun 2021
Several machine learning models written to predict the deterioration of the condition of the lungs over time for patients of Idiopathic Pulmonary Fibrosis (IPF) and give a level of confidence in the prediction
Implemented an auto-encoder, linear regression, dense neural network, and bayesian model in order to accurately predict future lung capacity and give a confidence value using initial lung capacity data, age, sex, smoking status, and more
Obtained a Laplace Log Likelihood score of −6.9 (much better than the baseline −8.1) with σ ≈ 200mL
Presentations
Dijkstra's non-deterministic GCL from afar @ UWaterloo CSC Alt-Tab
[slides]
17th Mar 2026
A 15 minute introduction to the syntax and mechanical semantics of the Guarded Command Language (GCL)
Dimension of Posets and Random Graph Orders @ University of Waterloo
1st Aug 2024
Presentation of work completed during research term under Jane Gao
Streams and Lazy Evaluation @ Webber Academy Programming Club
[notes]
13th Oct 2023
An introduction to simulating infinite lists with streams and their manipulation
On the Catalan Numbers @ Webber Academy Math Society
[notes]
11th Oct 2023
A derivation of the closed formula for the Catalan Numbers and examples of well known problems where the Catalan Numbers appear
Introductory Combinatory Logic @ Webber Academy Math Society
11th Oct 2022
Introduction to combinatory logic; showing numbers and operations on numbers can be expressed as combinators
Lectures & Lessons
High School Math Competition Lessons
Summer 2023
[divisibilty tricks] Divisibility, modular arithmetic, and deriving divisibility tricks
[writing solutions] Tips for writing readable proofs
[pigeonhole principle] The pigeonhole and generalized pigeonhole principles
[series and products] Telescoping series, common series, and term grouping strategies
[intro geometry] Basic triangle facts, and effects of transformations on geometric objects
[number bases & induction] Number bases, (strong) induction, and an example from the KJMO
[points in a triangle] Involving (circum|in|ex|ortho)centers and centroids
[cyclic quadrilaterals] Power of a point, Ptolemy's theorem, and Brahmagupta's formula
Formal Education
Waterloo Undergraduate Degree : Bachelors of Computer Science
Term
Courses
F ’22
MATH 145
MATH 147
CS 145
ENGL 109
PHYS 121
W ’23
MATH 146
MATH 148
CS 146
CS 136L
ENGL 108B
PHYS 122
PD 1
S ’23
COOP 1
PD 11
F ’23
MATH 245
MATH 247
STAT 240
CS 245E
CS 246E
W ’24
MATH 249
STAT 241
CO 255
CS 240
CS 241
S ’24
COOP 2
PD 10
CS 251
F ’24
CS 350
CS 341
CS 370
PHYS 256
FINE 100
W ’25
COOP 3
PD 6
S ’25
CS 475
CS 480
CS 488
F ’25
COOP 4
PD 13
W ’26
CS 484
CS 442
ENGL 383
MUSIC 111
S ’26
COOP 5
Articles
Interesting Sites
Computer Graphics
(Marc Ten Bosch) 4D graphics via publications and blogs
(The blog at the bottom of the sea) Graphics, gamedev, computation, audio synthesis
(Cem Yuksel) Graphics research and teaching
(Eric Lengyel) Game engines, geometric algebra, and rendering
(Inigo Quilez) Shadertoy, ray marching, pathtracing, and more
(Frost Kiwi) Various articles about graphics processing operations
(Humus) Textures, articles, frameworks, and various graphics examples
Mathematics
Computer Science
Search Engines
(4get) Private, light, ad-free, free metasearch engine
(Qwant) Private search engine with independent search indexing
(wiby.me) Search engine for personalized webpages and sites for hobbyists
(searXNG) Free metasearch engine (accumulates results from multiple engines)
(nutrimatic) Word matching to a pattern according to frequency
Art
(Draw a Box) Art fundamentals for building spatial reasoning
(Line of Action) Reference photos for human poses, animals, hands and feet, faces, and more
(Lospec) Colour palettes and pixel art
Games
File Sharing
Music
(pianobin) Piano sheet music for Paper Lily, Omori, TCOAL, and more
(Tanarang) Collection of various Indian ragas
See others