C Wing

C Wing

Computer Vision Engineer in San Francisco, He/any

About

I'm a computer engineer by trade and a computer-wielding problem solver by nature. I have over 10 years of experience in sensor software and firmware, at every stage of development from device incubation to mass production, and I apply my software development expertise to implement innovative solutions. I have an eye for both the big picture and the details, and I approach everything as a learning opportunity.

Work Experience

2012 — 2023
Senior Software Architect at Microsoft
Mountain View, CA

Individual contributor on the Sensors team based in Mountain View, which develops hardware for the Azure Kinect and HoloLens 2. Primarily focused on the Microsoft ToF (time-of-flight) depth system.
* Architecting and developing sensor calibration software and algorithms in MATLAB, Python, and C++.
* Designing and developing algorithms, visualizers, and other demonstration solutions for incubation and proof-of-concept devices, including multisensor fusion and Intelligent Edge (IoT and cloud computing).
* Standing up production-scale module calibration lines at contract manufacturers, optimizing throughput and Takt time, monitoring process parameters, and performing failure analysis.
* Maintaining the ToF sensor's custom programming language and assembler.
* Heavily involved in custom silicon bring-up/validation and system characterization.

2009 — 2012
Rochester, NY

Tutored students in a variety of math courses, including single- and multivariable calculus, differential equations, and discrete mathematics, as well as the one-year physics sequence.

Projects

2022

I became a big fan of low-code programming while venturing into the world of IoT and home automation. During Microsoft's Hackathon 2022, I got a chance to try the Azure low-code solutions (as well as experience the Azure Kinect as a user), so I designed and wrote a small API for a low-code connector block that processes Azure Kinect image data.

2021

I wrote a dev blog post for the Azure Depth Platform team that describes the operation of Microsoft's indirect time-of-flight (ToF) system and some of the benefits of our implementation.

Side Projects

Ongoing
V-Light: text message control of IoT device

What started out as a fun weekend project to imbue a dream light with remote controls turned into an API, low-code, and IoT ecosystem demo app. A text message containing the name of a color (or chromatic concept, such as "lava" or "ocean") is received by Vonage's SMS API, forwarded to a Node-RED instance that plucks a hex code from Bing Web Search and transforms it into dream light settings, then sent via MQTT protocol to the SP501E LED strip controller running WLED.

Ongoing

Lots of modern video games rely on the player's ability to hit the right inputs with sub-second timing, and the arrow-stomping DanceDanceRevolution is no exception. One of the long-standing problems that plagues its simulator community is accurately synchronizing hundreds or thousands of audio files to their step patterns - a task complicated by two competing historical "sync bias" paradigms: null sync vs. an offset of 9 milliseconds introduced by legacy software. Players often end up with a mix of null and +9ms patterns, which is a large enough difference to affect score and immersion.

I designed an algorithm that generates a beat onset response from the audio file, compares it to the map of beat onsets defined by the step pattern, and decides which bias paradigm it was meant to conform to based on the offset between the two. After confirming the results against popular "well-synced" patterns, I released a combo CLI/GUI program that offers visual representations of the sync quality and offset, batch processing, and a confidence metric. The audio signal processing is done in scipy, and the GUI makes use of matplotlib and wxPython.

The audio analysis is accurate enough (within 1-2ms for most files) that some early adopters have used the millisecond offset directly, not just to check the bias paradigm.

Ongoing

One of the long-standing problems that plagues the StepMania (DanceDanceRevolution simulator) community is measuring the difficulty of scoring well on a given step pattern. I proposed an algorithm that could estimate relative scoring complexity by comparing players' performances, and tuned it using the large dataset provided by the International Timing League's online tournament, held in the spring of 2022.

The algorithm primarily gauges the relative difficulty of each step pattern, but it also can rank players by overall skill level and identify scores that are strong or weak for that player. During International Timing League 2023, I expanded this algorithm to provide player-specific recommendations, identifying step patterns they had played where their score would be easiest to improve and providing a target score based on their overall ability.

2021

A realtime implementation of Conway's Game of Life, rendered in-browser using twitch chat emotes as the live cell contents. Users can configure the canvas, resolution, and rate of the animation, then add it to their own streams. I originally implemented this as a VJ backdrop for the Club Fantastic Season 2 launch livestream.

Volunteering

2013 — 2021
East Palo Alto, CA

FCE is an after-school college prep program for high school students who are often first in their families to attend college. I work with students in math and physics classes to deepen and broaden their understanding, as well as provide advice on study skills and college application and survival - as someone who's "been there, done that".

Education

Rochester, NY

Activities and societies: jazz ensemble, capoeira club, Japanese Student Association, WITR student radio, Tau Beta Pi (honor society)

Contact

GitHub