Hi, I'm Brian Tsoi.
This page is a comprehensive directory of descriptions and links to my technical experiences.
For a concise summary, please refer to my resume.
I am working as a Backend Software Engineer Intern at Mozilla Firefox.
I am also studying Computer Engineering at the University of Toronto (finished 3rd year).
My main interest is in system software, compilers and embedded systems.
I like "interacting with hardware from software's perspective" (phrase borrowed from Linus Torvalds).
Focusing on improvements to the Firefox crash reporting pipeline, aiming to reduce noise in crash data caused by faulty hardware.
I worked on Rust-minidump, the industry-leading open source crash report library used by Mozilla, Microsoft, Sentry and others. I added an inconsistency detection features to help identify crashes cause by faulty hardware.
I am the creator and maintainer of the memtest crate, which is an open source Rust library for memory testing.
I am integrating memory testing into the Firefox crash reporter client.
Managing the DinoJump project with a team of 10 alongside with fellow project lead, Alexander Lay.
The Spark Design Team builds interactive LED displays for the UofT Engineering community.
This year we are building a holographic display for the dino hopping game and will involve hand gesture controls. It uses Raspberry Pi/Python and Arduino Uno/C++.
In previous years, I also worked on two other Spark projects, Arena Pinball and Hack-It. Notably, I developed a Python OpenCV based pinball tracking camera system.
Writing software for the FINCH mission of UTAT Space Systems.
UTAT Space Systems is a student team that builds CubeSats for scientific missions.
FINCH is a satellite for crop residue mapping from the Low-Earth Orbit, set to launch in 2025.
I developed an adaptive
Python compression algorithm
for hyperspectral images, based on Golomb-Rice coding, according to the Consultative Committee for Space Data Systems standards.
The algorithm achieved a 2:1 compression ratio and is currently being translated to C to
run on the STM32 microcontroller on the CubeSat.
I am also involved in prototyping the multithreaded high-level finite state machine for the satellite software, using STM32 Hardware Abstraction Layer and FreeRTOS.
A Rust based interpreter of the Lox language (created by Robert Nystrom in Crafting Interpreters)
I am looking to expand this work to a bytecode compiler in C++ as well.
A terminal text editor written with the C standard library, POSIX API and VT100 terminal sequences Did I mention that I'm obsessed with Vim?
A Pytorch based Autoencoder neural network that denoises poorly rendered 3D images by 83%
I worked in a team of 4. We collected training data from open source 3D models, and finetuned the model with several iterations. The final model beats conventional denising filter by 47%.
A Java key-value database for distributed servers, with consistent hashing and virtual nodes
I worked in a team of 3. We tested with the Enron dataset (over 2.6 GB), achieving 99.3% reliability and below 5ms of latency.
(Source code not available due to academic restriction)
A C++ map application using OpenStreetMap data and GTK.
I worked in a team of 3. The map includes features such as drag and zoom, locations searching and path finding using the A* algorithm.
(Source code not available due to academic restriction)
A game built in C to run on Quartus FPGA and interface with a PS/2 mouse and a VGA monitor
Player has to untangle a mess of lines connected to nodes such that no lines overlap.
Conway's Game of Life in HTML, CSS and vanilla Javascript
The classic Pong game with a computer opponent, written with Pygame
Programming: C, C++, Python, Rust, Java, HTML, CSS and Javascript, Assembly, Go
Hardware/Embedded: Arduino, STM32 microcontrollers, UART, I2C, SPI, RTOS, FPGAs (Verilog)
Tools and Platforms: Linux dev tools (gcc, make, gdb, valgrind), Git, Github
Languages: Chinese (native in Cantonese, fluent in Mandarin), English (fluent)
I am obsessed with text editors. VS Code, Vim, Emacs....I've tried them all.
These days I use Helix for coding, and Doom Emacs for personal notes, both truly amazing editors
My favourite language used to be C, but I'm a Rustacean🦀 now.
My hobbies include reading, movies, board games, and occasionally having an existential crisis.