Projects
Go Game Clock
Stack: Android, Java
A niche clock app for keeping track of time controls in the board game Go.
The app supports complicated “byoyomi” time controls that are common in Go but which other clock apps (typically tailored to chess) do not support.
Currently with over 3300 total installations and a 4.5-star rating on Google Play.
Homework Tracker
Stack: JavaScript, HTML, CSS
A Google Chrome extension for tracking homework items and due dates.
The extension is written in vanilla JavaScript with no jQuery or other big libraries. This lean design allows it to be faster, more responsive, and less memory-intensive than similar list-management apps on the Chrome Web Store.
Currently with about 15000 weekly users.
Chess Engine
Stack: C++
A computer engine for the game of chess. This engine does not have a graphical interface, but instead uses the text-based UCI protocol, allowing it to be installed and run on almost any chess GUI program.
The engine’s AI uses a min-max tree search with alpha-beta pruning. To evaluate positions, it applies basic strategies like material-counting and piece-square tables.
The engine currently plays at the level of a human beginner, though it is able to beat standard open-source engines like Stockfish on the lowest difficulty settings. More improvements are in the works.
Source code is available at my GitHub. A detailed blog post about the project can be found here.
Stochastic Sudoku Solver
Stack: JavaScript, HTML, CSS
A web widget that solves Sudoku puzzles using a probabilistic approach called simulated annealing.
External Projects with Major Contributions
Manifold
Stack: Java
Manifold is an open-source hardware description language developed at the University of Waterloo. It is designed to be high-level, easy-to-use, domain-agnostic, and similar to modern functional programming languages.
As part of my fourth-year design project at the University of Waterloo, I worked with some fellow undergraduate and graduate students to extend Manifold. We focused on giving Manifold the ability to describe and analyze microfluidic circuits, a young domain poorly supported by existing software tools. We ended up making a prototype that can handle very simple circuits.
We also wrote a research paper on our work which was accepted for the 2017 IEEE Canadian Conference on Electrical and Computer Engineering. We presented our paper at CCECE 2017 in Windsor, ON in May 2017.
External Projects with Minor Contributions
Global Visionaries: a Wordpress site made in a group as part of the 2016 Seattle GiveCamp charitable hackathon.
Unloop: Improvements to online course materials for a node.js web development curriculum, done as part of a 2018 Microsoft Hack for Good hackathon.