Skip to main content


Past jobs here too, provided that I have permission to show them.

Drag-sensitive Sequential Wave Imprinting Machines - 23rd annual WaterHCI DECONference

I had the chance to put together something small and interesting for WaterHCI DECONference, a conference all about water and electronics, centering especially around AR/VR tech that elevate the underwater experience as opposed to becoming a sopping-wet Oculus-brand paperweight.

Flashback to a couple months earlier, where I threw together a small visualizer for motor waveforms to test out a 3-phase commutation algorithm for a reaction wheel. This visualizer was near and dear to my heart, based on the motor Sequential Wave Imprinting Machine (SWIM) out of MannLab that I had gotten to build on in some of my academic work. Given its lengthy name it can be explained in almost less space: just a light, modulated by the voltage or current energizing the motor. The light spins with the motor, and since over short times the motor waveforms are steady, your eye sees a stationary radial wave showing the motor's performance against true angle, and how it is affected by its environment.

XKCD's phrase-to-units at high m·s-1

In the previous installment of bastardizing the English language fun wordplay with Randall, we made a sentence-to-map-directions solver based on XKCD 2260. This time, we're in for something a little more scientific: a sentence-to-units solver based on the recent XKCD 2312. This time with unit symbols, we've got much smaller puzzle pieces to pack into phrases than we used to with towns, so we can aim for exact solutions. It turns out that people have made a lot of units, sometimes very weird ones, so we also shouldn't have much trouble getting at least the matching done.

The real fun question is how to do good matching. Undoubtedly, the best solution is short and sweet, one that can take some crazy complicated rap and find that it's got units of flow [m3/s]. These units we give names to are generally simple in base unit terms, so a good proxy for an elegant algorithm is one that makes small base-unit terms.

A basic acrobatic tail - Process


Last summer, I worked at MannLab: a University of Toronto lab in wearable technology, signal processing and media headed by Prof. Steve Mann. Since Prof. Mann was a very early and arguably pioneering proponent of the maker movement, the lab and lab work was almost entirely done with a solder iron in hand. This environment attracted some exceptional builders to work full-time at the lab, pumping out prototypes and spanning really all manners of hand manufacturing.

A basic acrobatic tail — Control and mechanics

I've been working on a 3-DOF arm for the last few months to use as a robotic tail. I was initially going to have it completed for Tomorrowland 2020 in mid-July, but when that was cancelled, the parts were already on the way here so I got it functional anyways and thought the design was worth sharing. It's no hyper-redundant manipulator (yet), but it's perfect for a cheap, strong and forgiving hand-build. See below for a preliminary demo:

A basic acrobatic tail - Electronics

Compared to the control and mechanical build, the electronics are straightforward enough. To put the simplicity of the circuitry in perspective, it would be trivial to pull out the main controller and hook everything into a radio receiver. Only lights and the safety control loop would be cut out of that design.

Therefore, the only peripherals excluding the PWM for the actuators are the lights (an I2C line into a charlieplex driver and array) and an SPI line for servo monitoring, which will be described shortly.

A basic 3DOF acrobatic tail — Build overview

The mechanical build of this tail was designed so that the hand drill I had access to would be the only power tool, along with 3D-printed motor holders from Treatstock. I'm no machinist, whatsoever. If you have the budget, the design is pretty accessible!

The build for this tail prototype could be broken into a few distinct stages:

Linear Tubular Motors

Research on the efficiency and positioning abilities of these types of linear motors for the Extended Essay in Physics.

Procedural roadmap generation & SAE AutoDrive 2018 Competition Shirt

As part of victory spoils, UofT's success in 2017 came with control over the competition shirt. I volunteered and inherited the responsibility, then promptly hot-potato'd it onto my computer to make most of the visually-interesting material. This emphasis on form was spurred by constraints on the color palette when only two tones are possible on top of the shirt's base color. In a similar vein but somewhat more timid on my processor than the goliath that is actual localization and mapping on Zeus, I built a simple tile-based procedural roadmap generator for an ornamental border, which I relate to ornamental vines on medieval texts. And OpenTTD.


Cheesy? Maybe. Probably. Very. But the iconic trope of waving a sharp around an enemy and... for a split second, nothing happening! Then, the various segmented parts of the body start sliding along perfect planes onto the floor... it's timeless. Reality has a sad shortage of frictionless atom-thick blades, but hey I choose to install the physics engine if I want to!

I did. This one. But I left out all the limiting parts nobody needs in a satisfying slicing demo, so you can demolish your favorite shape to your heart's content.

BlueDot EDIT Exhibit

BlueDot Inc. is a company that analyzes the propagation of disease worldwide. With that description, it was a pleasant shock to be a part of an in-house Design Team in the summer of 2017. Getting to know BlueDot's products, with lots of data backing software and print products that needed to read crystal-clear, there was actually an unending barrage of challenging design work. I got to participate in a particularly exciting one when an opportunity to participate in the EDIT festival came up in the middle of the summer and we seized it. The festival pitted design and futurism against the 17 Millenium Goals, with showcases ranging from aquaculture to threats from globalization (us!) packed into the abandoned Unilever soap factory on the east end of Toronto. We chose to highlight the new "proximity" of the global neighbourhood with the proliferation of shorter and more frequent flights crossing the globe, and the fact that humans are not the only passengers on flights. SARS was an infamous example that locked the global flight network and still saw the cross-continental spread of the disease, consequently spurring the founding the lab that would become BlueDot.

We were given a corner of the third floor propped between a floor manager's office box and a huge sliding doorway with about 10 feet in the middle.


People love rainbows. The problem is that forecasters lack the... well, foresight, to give the people the lucious rainbow details they want. The idea to fill this gaping hole in supply came from Akira Kakkar at MHacks 6, and I'm lucky to call him, Jenny Zhang and Philip Tsang my co-developers on the project for those critical first 36 hours. I personally released an alpha a year later because this project's momentum isn't allowed to stop. For the sake of all that is round and colorful.

Detecting rainbows is feasible from just satellite and radar data, and boils down a geometry problem on these two datasets. From a quick detour into the mechanics of rainbows the problem statement will essentially just pop out.


Monstercat, an electronic label out of Vancouver, is near and dear to me since I grew into electronic music as Monstercat grew. If no part of its identity is spotless, at least the visualizer is and remains iconic without debate, even if not without its own slew of complaints. 63 bars, an equally stark Gotham presentation of artist and title, and across the boundary of its 5-year birthday in 2016, an ebb of particles, replaced later by animated album artwork, I respect its simplicity for showcasing the track.


Antigone: the great Greek classic. A story of betrayal, mefiance and dirty family politics. The school's modernized production of it deserved advertising to match its gritty story.


Shad Valley 2013: Improving the efficiency of human-powered transportation by making the backpack quick-access. Print advertisement and website designs.

City of Toronto Open Data -- Intake Tool

As an intern with the City, in the unique and ever-interesting proxying role of the Open Data dept., I helped develop an internal tool to manage public interactions.

Convergence – Layout and Editing

Convergence: oldest and largest newspaper of Upper Canada College. As the layout editor and a co-editor to the publication, I modernized the design, diversifying the visual content and expanding the freedom of writers.

Digital Media and Computer Science Club

Co-founder and head of DM&CS Club (as it is affectionately abbreviated). Taught web design and computer science to younger years, fostered community of competitive coders and UI aficiandos alike.