Projects
I started writing code as a kid. Even after years in engineering leadership roles, I still love building software outside of work.
React Native
Since 2023, I’ve focused on building iOS and Mac apps with React Native, integrating on-device AI and machine learning so they stay private and work without internet access. These tools use technologies like OCR, LLMs, and vector search entirely on device:
- Receiptopia – Automatically scans and categorizes receipts with on-device OCR.
- Spanish or Vanish – A vocabulary game that uses computer vision to identify objects and help you learn Spanish.
- CJExplorer – A language lookup and translation app that uses OCR and computer vision for instant object identification.
- Read Aloud EBook – Turn an ebook into an on-device audiobook and create chapter summaries with a locally run LLM.
AI
In February 2024, I built a chat bot with React, OpenAI, Python, and Flask, trained on my resume and writing.
Before ChatGPT, I spent time with TensorFlow in Google Colaboratory. I created an English to Cantonese language translation prototype and documented how it worked. It feels modest now that generative AI is everywhere, but it was a fun early exploration.
UX Certificate
In 2023, I started the Google UX Design Professional Certificate. The final course required putting my portfolio online—here is the deck with the three case studies from that capstone.
Work
I'd love to show more of the work I've done for Apple, Electronic Arts, and other companies, but those projects are covered by non-disclosure agreements. Electronic Arts did issue plaques for games you’re credited on—you can see mine here.
Older projects
Many of the remaining projects started as university assignments that I extended into apps others might find useful, and I’ve added plenty of hobby projects since. They helped me pick up new skills, meet new friends, and explore new interests.
I've considered renaming this part of the website from "Projects" to "Museum"—some of these are more than 10 years old and some are over 20!
If you're curious about current side projects, please check out my github page. A handful are public repositories, though many are private.
Algorithm / Programming
In my junior years at Simon Fraser University, I spent semester breaks extending favorite class projects. Through them, I taught myself programming techniques and algorithms that still serve me well.
Shortly after graduation, I built a hobby project I called ASCII Art Steganography. It was Slashdotted in January 2009, which was a proud moment.
Some examples: Digit Recognition, Huffman Tree Compression, Computer Language Translation, Socket Programming and Zip/JPEG File Mask.
3D Graphics / OpenGL
Computer graphics was my first upper-division computer science course in my second year at SFU. It finally put all the linear algebra to good use, and we got to use the "new" 1.8 GHz machines that were cutting edge at the time. The projects were visually rewarding and laid the foundation for becoming a software engineer in the gaming industry after graduation.
Notably, 3D Room Scene was showcased in SFU computing science Employer's Open House 2003, and 3D-Tetris Screen Saver was showcased in 2005.
C# and COM
I picked up a few skills from my co-op experiences at Crystal Decisions/Business Objects and Pivotal/CDC Software. I started using Perl to automate tasks, including generating spreadsheets and status reports from a single data source. I also dove into C# and COM while developing applications to integrate into Microsoft Visual Studio 2005.
My first side projects in C# included a multiplayer UNO game and a small program that automatically refreshed a webpage using the IE Active-X control.
Miscellaneous
Since I like programming so much, I often spend my free time making utilities that I think would be useful. These utilities are usually written in either C++ or C#, and MSN Ad blocker was particularly popular—until MSN was shut down.
Scripts and Tools
Python used to frustrate me with its indents and duck-typing. In 2011, I decided to use it more in my regular work since fans kept raving about it—and I ended up enjoying it too. Now when I need something written up quickly, I turn to Python instead of, say, C#. It's cross-platform, concise, and easy to hook up with a UI in OSX.
Web Apps
The first real web applications I wrote were done with Perl when blogging was starting to gain popularity. I hosted my Perl blog on my university site and later shut it down in 2005 when I stopped updating it.
I picked up PHP and SAJAX a bit later, and along with two other CMPT 470 classmates we created an ACM-Style programming contest environment.
I've worked on a number of web apps over the years using Google App Engine, Django and Ruby on Rails as side projects. In 2012, we created Qurious to participate in the Royal Canadian Mint Mintchip Challenge.
Recently, I've done more work with JavaScript (jQuery and SproutCore) to create rich and deeply engaging web applications. With the proliferation of mobile devices, building responsive and feature-rich web applications that work across different platforms and resolutions is often the most efficient way to deliver content.
At Visier, I use Angular, TypeScript, and the Play! Framework on Scala.
ITK Medical Image Analysis Toolkit
As part of the research work I did in August 2004, I created a large C++ image segmentation and registration program using the ITK library. It's ideal for researchers who want quick experience with the rich ITK library but don't want the hassle of compiling the library and example code.
In 2005, I started the MATLAB library (MATITK) project, which allows researchers to access ITK algorithms in the MATLAB environment. Hundreds of researchers worldwide use this library now.
Fun Projects / High school level projects
Feel free to check out the projects I did in high school and for fun in the old days.
All software is provided here "as is". I hold no responsibility for any unintended effects that may result.








