Projects

Go Game Clock

Stack: Android, Java

Go Game Clock

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.

Go Game Clock on Google Play

Homework Tracker

Stack: JavaScript, HTML, CSS

Homework Tracker

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.

Homework Tracker on Chrome Web Store

Chess Engine

Stack: C++

Chess Engine

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

Stochastic Sudoku Solver

A web widget that solves Sudoku puzzles using a probabilistic approach called simulated annealing.

Try it out here.

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.