Software engineer in the Bay Area. I build ML-powered tools and enjoy the space where research meets everyday software.
Off the keyboard you’ll find me outdoors, on a court or a trail, with music on, or lost in a book.
Software engineer in the Bay Area. I build ML-powered tools and enjoy the space where research meets everyday software.
Off the keyboard you’ll find me outdoors, on a court or a trail, with music on, or lost in a book.
An AI advisor for Path of Exile 2 that grounds every answer in structured game data instead of guesswork.
A lightweight multimodal system that pairs the BLIP-2 encoder with joint image-text modelling to detect harmful memes (IJCAI 2025 workshop paper).
Code and results behind our MLNLP 2025 paper: DistilBERT with plain cross-entropy is a strong default for classifying medical abstracts.
An always-on Python service that tracks US money-market stress indicators from FRED and sends tiered alerts.
Final project for a multimedia course: a Java tool that produces a shorter summary of a video from its raw frames and audio.
Comparing four ways to interpolate motion-capture data: linear and Bezier on Euler angles, SLERP and Bezier-SLERP on quaternions.
A team project extending the Prime Engine, where I built a physics engine from scratch with collision, gravity, rolling and friction.
A minimal Node.js bot that plays YouTube links in a Discord voice channel, built for a friends’ server.
Notes on a CVPR 2019 paper that uses cross-season correspondences to train robust semantic segmentation (in Chinese).
Reading notes on NVIDIA’s SPADE (GauGAN): semantic image synthesis with spatially-adaptive normalization.