Welcome to my project showcase!
This repository serves as a central hub for exploring the 🎮games, 🔬research projects, 🛠️scripts, and 🌐websites I have developed.
A collection of fun games I have built.
| Game | Code | Demo | Description | Highlighted Features | Tech Stack |
|---|---|---|---|---|---|
| DukeChess | ♟️ Digital adaptation of the chess-inspired board game The Duke | - AI opponent - Cross-platform multiplayer support (desktop & web) - Docker image available for easy deployment |
Desktop: Front-end: Back-end: Containerization: |
||
| MemoryDungeon | 👾 Roguelike twist on the memory game | - AI opponent - Heroes with unique abilities - Gacha mechanics |
Front-end (desktop): Back-end: |
||
| LinkWord | 🔤 Lightweight Chinese word-chain game |
ℹ️ If any of the demo links above do not work, please create an issue so I can take a look.
A selection of my most meaningful research projects.
- Shallow- & Deep-fake Images Localization
A deep learning method that detects and localizes manipulated regions in both shallow- and deep-fake images.- Built upon the UperNet semantic segmentation framework.
- A journal extension leveraging Vision Mamba and Graph Neural Networks is currently under review and available on arXiv.
- An ONNX model converted from the original Python implementation is provided here, with custom functions implemented to support the conversion.
-
Frequency-based AI-generated Images Detection
A deep learning model that detects images generated by Stable Diffusion models using frequency-domain artifacts (>99% accuracy).- 🏰 Disney images were used as a case study.
- A live demo is available here, with a backend running on AWS (API Gateway, Lambda, and S3) and the model exported to ONNX for efficient inference.
- A Model Context Protocol (MCP) Server is implemented here as a Tool written in TypeScript, enabling LLMs to invoke the model for inference.
-
Frequency-based AI-generated Images Attribution
A frequency-based network that attributes fake images to their source Generative Adversarial Network (GAN) architecture (>95% accuracy).
-
AI-generated Images Detection Trained with Raw Images Only
A Variational Autoencoder (VAE)-based approach trained solely on real/raw images for detecting AI-generated content (~94% accuracy). -
AI-generated Images Detection by Reconstructing Raw Images
A method that detects AI-generated images by reconstructing Bayer patterns and comparing statistical differences between real and fake images (~98% accuracy).
Notably, this method requires no deep learning.
-
Comparison of Android Static Taint Analyzers
A comparative study of Android static taint analysis tools (FlowDroid, Amandroid, and DroidSafe), evaluating their effectiveness and limitations using standardized benchmarks. -
Android OAuth Vulnerability Analysis
A course project that investigates security risks in Android applications using the OAuth protocol. -
Android Password Leakage Detection
A course project that detects potential password leakage in Android applications using the FlowDroid framework, an Android static analysis tool.
- TMO GAN
A GAN designed to tone map high-quality 4K High Dynamic Range (HDR) images, significantly enhancing perceptual quality.
- Subjective Evaluation of Foveated Image Quality in Head-mounted Displays (HMDs)
A novel subjective evaluation method for assessing the perceptual quality of foveated rendering in HMDs.- Developed an interactive voting mechanism using controllers in Unity to collect subjective user ratings.
- Captured eye-tracking data via OpenVR and OpenGL and integrated it into the evaluation pipeline.
- Visual-Attention-Model-based HDR Video Compression
A visual-attention-driven HDR video compression method that incorporates perceptual saliency into the adaptive Quantization Parameter (QP) assignment of the High Efficiency Video Coding (HEVC) standard.
- BankPet
A serious game–based banking application featuring a virtual character (🐱 everyone loves cats!) designed to help users develop better credit card and personal money management habits, validated through a user study.
Handy scripts I have crafted to make life easier.
- Steam Review Summary
An MCP server that analyzes and summarizes Steam game reviews, allowing LLMs to query review sentiment and generate concise summaries.
-
Steam Wishlist Language Highlighter
Highlights games in a user's Steam wishlist that lack support for specific languages. -
Arknights YiTuLiu Store Optimizer
Annotates and 🏆prioritizes redeemed event resources on a popular third-party Arknights support site, helping players decide what to redeem first. -
ICBC Road Test Helper
Simplifies the process of booking road tests on the Insurance Corporation of British Columbia (ICBC) website.
-
Steam Online Status Checker
A tool using GitHub Actions to automatically monitor the status of a Steam user and send updates via Telegram messages. -
PRTS Scraper
A lightweight script to scrape Arknights skill icons using MediaWiki APIs.
These icons can later be used to train AI image generators to produce new icons.
- web-clipper
I contributed to this Google Chrome extension that supports webpage clipping for popular note-taking apps (e.g., OneNote, Notion) by adding support for OneNote note groups.
The pull request was merged by the original author.
Websites I have built or contributed to.
-
University of British Columbia, Digital Multimedia Lab
I designed and currently maintain the website for my Ph.D. research lab, built on the Hugo Blox framework.
I customized the framework to meet specific lab requirements:- Publications are categorized into finer-grained types (e.g., conference papers, journal articles), and the search function was rewritten to work within each category.
- By adding new metadata to page elements, lab members can redirect to their own departmental web pages.
- Embedded website statistics by modifying the universal footer.
-
Personal Website
My personal website built with HTML and jQuery.
🌈 Refresh the page to see dynamically changing background colors! -
BC Liquor Store Explorer
A course project web app that allows users to explore BC Liquor products with filters such as price, type, and country.- Highlighted features: interactive search and filtering, data visualization with Shiny.
- Tech Stack: R, Shiny
This repository serves two purposes:
- It presents an organized overview of my work, making my projects easier to understand and explore for readers beyond individual repositories.
- It also functions as a centralized index of my GitHub projects for long-term organization and reference.
As projects naturally grow across multiple repositories and organizations, GitHub currently offers limited support for presenting them as a coherent body of work. This portfolio serves as a developer-maintained overview that improves organization and discoverability, addressing a gap in how evolving personal GitHub project collections are presented.