Haggai Nuchi

Machine learning, robotics, and computer vision software engineer with Math PhD. Based in San Francisco. haggai@haggainuchi.com

Work Experience

Robotics Software Engineer, Small consultancy, Spring 2022 to Winter 2024

I did the computer vision that let an industrial robot locate its workpiece to go autonomously do stuff to it. I also wrote algorithms to detect whether there were any unexpected items in the workpiece area in order to alert an operator. Some more purely-software problems I solved: I created a software package for simultaneously interfacing with both a simulated robot (in an off-the-shelf robot simulator package) and a real robot (an industrial robot arm) with a common API, streamlining the prototyping and deployment of robot toolpaths and allowing the team to write our applications just once and run them in both development and production.

ML Engineering Consultant, Small Startup, Summer 2021

I helped a small startup improve their machine learning model deployment process. Their process involved three change sets touching ~20 files to release an updated version of a search ranking model, and took at least 4 hours start-to-finish. I refactored their code and suggested and implemented a candidate-generation and reranking system. The result was that they could update their model with a 1-line change to a single file and only a few minutes of time, which allowed them to iterate and test and deploy changes much more quickly, as well as enabling contributions from data scientists who weren’t deeply familiar with the code base.

Computer Vision Engineer, Multi-object tracking for water fleas from video, November-December 2020

Pro-bono work for a longevity researcher, counting and tracking water fleas from video of their tanks of water. I used classical computer vision, kalman filters, and multi-object tracking and association to estimate the number of fleas in a given video.

Machine Learning Engineer, Airbnb, 2018-2020

I worked on search ranking and then on the machine learning platform team. I built ML search ranking models, including building a training pipeline and model architecture for taking positional bias into account when training on historical click data. I built automated train-evaluate-deploy loops, built a system for requesting ad-hoc batch inference jobs, re-worked the ML platform’s online inference system (used across all Airbnb) which required quadratic CPU cores (in requests per second) to instead use only linear CPU cores (saving $X00k/year), and improved my team’s productivity by creating and socializing a versioning and release system.

Senior Software Engineer, Cruise Automation, 2016-2017

Tech lead for the Prediction team. I developed technology for autonomous cars, to predict other vehicles, pedestrians, cyclists. I also worked on radar detection, sensor fusion, and multi-object tracking. C++ and Python, both machine learning and non-ML statistical and geometric algorithms.

Selected Solo Projects

Trombone simulator, Summer 2021

A browser-based playable physical simulation of a trombone. I implemented it in the Faust programming language, using digital waveguide theory to implement physical models of the lips, mouthpiece, slide, and bell.

Human-to-dog translator, Spring 2018

A human to dog translator running entirely in the browser. It works by compiling a Tensorflow model to WebAssembly. I did novel work for this project, implementing:

  • style transfer for audio (human content + dog style)
  • running a Tensorflow graph in the browser (compiled to WebAssembly)
  • a novel audio foreground/background separation

Technologies

C++, Python, Java, Tensorflow, Linux, macOS, bash, computational geometry, airflow, docker, kubernetes, computer vision, OpenCV, digital signal processing, machine learning, MLOps,

Education

Postdoctoral researcher, University of Toronto, Math department, 2014-2015

Focus on differential geometry

PhD in Mathematics, UPenn, 2014

Focus on differential geometry. Dissertation: The Hopf fibrations are characterized by being fiberwise homogeneous.