Bio. I’m currently spending time at Google Brain Robotics working at the intersection of robotic perception and manipulation. My research centers around Deep Learning and its applications to Computer Vision and Robotics. In particular, I am interested in developing algorithms that can allow machines to intelligently interact with the physical world and learn to master complex skills over time through self-supervision. I'm driven to build things that will have positive impact at scale.

Last summer, I interned at Nimble AI where I built and deployed a real-time, generative grasping algorithm for suction and parallel-jaw grasping. Before that, I was a visiting researcher in the Khuri-Yakub Ultrasonics Group at Stanford University, applying machine learning to enhance a chemical nose, an ultrasonic touch screen and a flow meter.

Outside of work, I enjoy contributing to open source and blogging.


April 2019 - I’ll be attending Stanford University in September 2019 to begin my master’s degree in Computer Science.
Feb 2019 - Present
Google Brain Robotics Intern
3D Perception and Manipulation
Summer 2018
Nimble AI Robotics Intern
Visual Affordance Networks for Robotic Grasping
Summer 2017
Stanford University Khuri-Yakub Group
Machine Learning for CMUTs
American University of Beirut
B.Eng. Electrical Engineering


A general-purpose library for robotics research. Supports RealSense D415 interfacing, pointcloud manipulation and visualization, UR5 robotic arm interfacing in real and in sim via PyBullet, and a transformation class for dealing with 3D positions and orientations.
Tune the hyperparameters of your PyTorch models with a HyperBand implementation.
Transformer Networks
A Tensorflow implementation of Spatial Transformer Networks accompanied by a two-part tutorial series.
show more
Vector Norm List Processor
A processor in Verilog that computes the L2 norm of an N-dimensional complex vector stored in doubly-linked list. Had some fun adding Python scripts to automate the reading and writing of test benches.