Work Experience

Machine Learning, AI & Startup Consulting (Q4 2022)

  • AI consulting and dev work for previous employer (Ripcord)
  • Technology, software, AI & general startup consulting across a range of applications
  • Rapid design, prototyping and development of data drive physical decor products
  • Lots of travel, independent learning and helping friends + family

Ripcord - Senior Staff ML Engineering Lead (2017 - 2022)

ripcord

As the first data scientist and ML engineer at Ripcord, I served as a visionary and developer for first party ML and AI solutions. After introducing deep learning to the founding team, I led technical efforts related to ML including R&D, data-science and engineering. I began by enabling the automated digitization of physical paper documents and progressed to driving the intelligent extraction and organization of information from business documents at scale. I have worked to align objectives, understand critical problems, develop novel tooling and ensure successful integration into a larger engineering effort.

I have identified and defined problems fit for machine learning, translated state of the art research to production systems, and deployed scalable closed loop ML solutions that have solved complex real-world challenges. These efforts in Computer Vision and NLP have enabled the intelligent scanning, organization and extraction of information from customer documents at previously unprecedented scale. I have presented on vision, R&D, technology and road maps to diverse audiences including the company, investors and the board.​

Day to day, I foster a friendly work atmosphere that promotes passionate, curious engagement around challenging problems. I champion the pragmatic use of agile process, the appropriate introduction of automation, and the application of a product mindset. ​

A more technical breakdown of my experience is organized below. For those seeking insight into my process, you might also checkout my ML Practitioner’s Guide.

Natural Language Processing (NLP)

By automating processing w/ Machine Learning, I enabled Ripcord to offer advanced RPA and document workflows as a white-glove service for larger customers. To expand the impact, I led the technical effort of engineering a customer focused “self-serve” product enabling users to design and implement complex document based workflows with minimal engineering involvement.

  • Designed and implemented state of the art ML based solutions for complex information extraction and RPA use cases capable of handling unstructured and semi-structured documents!
    • Logical document splitting
    • Document classification
    • Named entity extraction
  • Developed multi-modal transformer models incorporating text, layout and image data to significantly improve performance compared to models operating on a single modality
  • Developed “Model In the Loop” annotation systems for real-time model assisted labeling, including strategies for active learning
  • Developed data generation and augmentation systems for localized document text data
  • Integrated creative strategies for low-shot NER including leveraging label semantics

Machine Perception/Computer Vision

Working in collaboration w/ Ripcord’s operations team, I designed and developed holistic systems for machine perception, which enabled the robotic digitization of physical paper at factory scale, across multiple facilities globally. Once digitized, I enabled advanced image processing workflows at scale. For years now these solutions have been scanning paper and generating revenue.

  • Designed and implemented machine perception systems based on deep learning for the control of physical robots, scanning machines, and digital RPA processes
  • Identified and defined problems fit for Machine Learning
  • Sourced and annotated data at scale
  • Implemented and trained state of the art perception models to robustly interpret and understand paper to such a degree that a robotic arm can physically manipulate paper, remove fasteners and deal with edge cases inherent in a dynamic and uncontrolled medium
  • Designed and implemented hybrid cloud inference solutions including hardware selection, model servers, inference model optimization and integrated client side software capable of scanning millions of sheets per day
  • Integrated solutions into the robotics software stack

Data Science

  • Staying informed on current state of the art in academic and industrial research, for many topics related to AI, ML and Computer Vision
  • Proven ability to translate techniques and concepts from research papers to working production code
  • Implemented, trained and deployed advanced Deep Learning models (neural networks) for
    • computer vision tasks including classification, object detection and instance segmentation
    • NLP tasks including the classification, extraction and organization of both structured and semi-structured information
  • Modeling uncertainty and calibrating networks
  • Systems for analyzing model performance, visualization and explain-ability
  • Engineering of complex multi-modal feature vectors for clustering, classification and sequence related problems
  • Unsupervised clustering for the organization of unlabeled data

ML Ops

  • Designed and implemented data engines for passive and pro-active fetching and subsequent organization of anomalous data from deployed robots
  • Designed and implemented ML Ops systems (workflow and orchestration systems for the ML lifecycle) including dataset maintenance, experiment tracking, model training and evaluation, model optimization, inference serving and deployment all based on open source technologies
  • Designed and implemented systems for highly efficient and scalable distributed training based on open source technologies
  • Implemented interactive tooling and dashboards to visualize insights around data, training experiments and production

Data Engineering

  • Curated, managed and maintained dozens of datasets on the order of millions of images
  • Designed and implemented creative solutions for sourcing ground truth data
  • Designed and implemented systems for on demand collection of data from edge case scenarios, as well as user feedback and other sources of ground truth annotations.
  • Integrated annotation tooling and oversaw process of annotating millions of images internally in collaboration with Ripcord’s operations team.
  • Designed and implemented creative systems for the creation of complex synthetic data

Software Engineering

  • Familiar and practiced in Agile software engineering methodologies
  • Experience going from customer need to a road map of scoped projects
  • Designed and bootstrapped countless software systems and projects
  • Designed, developed and maintained contracts, data schemas and APIs
  • Implemented Complex Processing Workflows
  • Designed and developed microservices and distributed systems
  • Extensive experience w/ Advanced image processing
  • Prioritized and implemented hardware acceleration and other optimizations for models, algorithms, workflows and processing services
  • Designed and developed numerous GUI applications

DevOps

  • Introduced automation wherever possible
  • Designed and maintained CI/CD for many projects
  • Automated complex multi-service and ML systems testing
  • Designed and implemented solutions for package, model and version management for ML systems and projects

Scanse - Director of software (2015-2017)

scanse

Scanse was a small 3 person startup attempting to democratize LiDAR: a traditionally expensive and complicated sensing component for autonomous robots, self driving cars, and environment capture. In two years, my colleagues and I designed, manufactured and shipped over 5000 hardware units with supporting software. Throughout the process we fostered an active community of builders, researchers, artists and hobbyists, continuously releasing additional documentation, open source projects and accessory products. While delivering our primary scanning product, we also prototyped new products for non-invasive indoor occupancy tracking.

At a small startup, you play a role in everything! However, my main focus was the design and development of interactive software for both the sensing and visualization of complex 3D data. My accomplishments included the following:

  • Designed, implemented and shipped cross platform desktop application for visualizing, interpreting and interacting with realtime LiDAR data and 3D point cloud data. Primary technologies included electron and WebGL
  • Designed and implemented a rudimentary but efficient javascript based UI component framework to update and render modified components in the DOM - before React was really a thing!
  • Implemented and maintained SDK’s used to control LiDAR sensor in various programming languages
  • Managed numerous contractors and external developers contributing to open software projects
  • Supported and fostered active customer community
  • Designed and maintained an open source software project for controlling an inexpensive 3D scanner
  • Prototyped various perception algorithms for 2D LiDAR data
  • Drafted a provisional patent application related to AI and sensor data which was successfully filed
  • Prototyped a distributed sensor system involving sensor fusion for occupant tracking and monitoring
  • Designed and implemented interactive labeling tools for multi-channel time series data
  • Prototyped various Neural Networks for time series classification of multi-sensor data using Tensorflow
  • Implemented technical documentation for numerous software projects both internal and open

NVIDIA - Software Engr Intern (Gameworks)

nvidia

During the summer of 2015 I interned at Nvidia, working out of the Santa Clara office in California. Specifically I worked for the Gameworks department on integrated PhysX in Unreal Engine 4. As an intern I improved the existing implementation of a software integration in a massive working code base, generated extensive documentation, interacted with interested community members and produced a large demo project to highlight the improvements and capabilities of the integrated software.

HTC Vive Tech Ambassador

htc

In February of 2016 I was hired to serve as a tech ambassador for the HTC Vive campus tour during their stop at University of Illinois at Urbana Champaign. Over the course of a week, I helped setup and deliver hundreds of HTC Vive Virtual Reality Demonstrations to interested faculty and students. I delivered marketing pitches, while also providing in-depth technical information and prolonged discussion with faculty, researchers and local businesses interested in developing experiences with the HTC Vive. Discussions included applying VR to entertainment, social networks, education, research, robotics, medical technology, data visualization and architectural visualization, as well as analysis of development obstacles unique to VR content. I generated new interest from a wide variety of demographics and highlighted new and useful industry information (problems, processes, connections, workflows, products etc) for those already working with VR.

Custom Computer Design, Overclocking and Repair

adpc

In 2013 a friend and I founded AD/PC, a small business specializing in the design and fabrication of custom Personal Computers. AD/PC catered to any computer needs, but the primary clientele were undergraduate students at Washington University looking for custom water-cooled enthusiast gaming PCs. As a small part-time business AD/PC stuck to commissioned work, rarely taking on more than one or two projects at a time. Word of mouth kept AD/PC with a steady queue of interested customers until I finished undergraduate.

Cypress Wealth Advisors

cypress

In the summer of 2013 I worked for a wealth advising firm in the San Francisco Bay Area, called Cypress Wealth Advisors. During my time there I built client databases in Microsoft Access, handled tax returns for small oil investors and developed software to automate the firm’s quarterly summary report process. The latter involved creating software in Java to parse the client database and compile information regarding individual investments before automating LaTeX to stitch together the summary reports for each of the investments relevant to a specific client. Before this, the firm was manually editing a Word Document to produce individualized summary reports which (for a few hundred clients) can take days. I also began working on a graphical interface to extend the functionality and usability of the automated summary reporting.

La Cocina - Restaurant

From 2007-2011 I was employed in various positions at La Cocina, a small restaurant in my hometown. Being a waiter also assumed acting as floor manager, where my responsibilities included opening and closing the restaurant, handling the documentation and security of money, managing other staff and even assisting in the design of a new computer system for online catering orders. I include this job on my resume to highlight a history of understanding service, customers and hard work.


Research Experience

Barbour Laboratory of Sensory Neuroscience and Neuroengineering

During undergrad, I worked as a research assistant in the Barbour Laboratory of Sensory Neuroscience and Neuroengineering. My work involved the design and development of mobile applications to aid in Cognitive Neuro-therapeutics, specifically auditory training.

A description directly from the website for the Laboratory of Sensory Neuroscience and Neuroengineering:

Our research group is fundamentally interested in how the brain encodes and processes information. The vertebrate nervous system routinely achieves feats of pattern recognition unparalleled by modern computers. The natural algorithms underlying this pattern recognition and the neuronal circuitry computing them both represent targets for research in my lab, predominantly by measuring single and bulk neuron activity in awake subjects. We are particularly interested in how complex sounds are encoded in the brain when interfering noise is present and how language is processed.

In related work, we also seek to be able to manipulate brain function for therapeutic purposes. Following brain injury such as a stroke, some function is lost and the brain network is disrupted. We apply principles of system theory and neuroplasticity toward developing brain-computer interfaces that can rewire brains and thus recover the lost function. We also explore how noninvasive technologies can be employed to induce therapeutic changes in the brain. One example of this is a series of smartphone-based video games we have designed to deliver listening training. These games are intended to optimize listening skills with a hearing-assist device, such as a cochlear implant or hearing aid.

Cognitive training software provides exercises whose completion strengthens certain cognitive processes. We seek to develop listening training software in the form of compelling video games playable on smartphones that naturally encourage individuals to complete their auditory training. The goal of this work is to optimize the function of hearing assist devices such as hearing aids and cochlear implants, as well as to enable individuals with a newly correct hearing deficit to learn to communicate effectively.


Education

Graduate - University of Illinois Urbana-Champaign

M.S. in Computer Science w/ a focus on Artificial Intelligence.

GPA 3.92/4.0 - coursework outlined below.

Computer Science

- Artificial Intelligence
- Models of Cognitive Process
- Geometry for Artificial Intelligence
- Applied Machine Learning
- Computer Vision
- Virtual Reality
- Software Engineering
- Embedded Systems
- Interactive Computer Graphics
- Computer Architecture in the Era of Custom Accelerators

Undergraduate - Washington University in St. Louis

B.S.E. in Bio-Medical Engineering, Electrical Engineering & Systems Engineering

GPA 3.8/4.0 - coursework outlined below.

Bio-Medical Engineering

- Introduction to Biomedical Engineering
- Biomechanics
- Physiological Control Systems
- Bioengineering Thermodynamics
- Signals and Systems
- Physics of the Heart
- Quantitative Physiology I
- Quantitative Physiology I Laboratory
- Quantitative Physiology II
- Quantitative Physiology II Laboratory
- Biomedical Engineering Design
- Bioelectric Phenomena
- Transport Phenomena for Biomedical Engineering

Electrical Engineering & Robotics

- Introduction to Electrical and Electronic Circuits
- Introduction to Electrical and Electronic Circuits Laboratory
- Engineering Electromagnetic Principles
- Signals and Systems
- (Control Systems)
- Robotics Laboratory
- Bioelectric Phenomena
- Introduction to Computer Architecture and Design
Computer Science

- Engineering and Scientific Computing
- Engineering and Scientific Computing Laboratory
- Computer Science I
- Computer Science I Laboratory
- Computer Science II
- Computer Science II Laboratory
- Introduction to Computer Programming (CS-50 Open Courseware)
- Algorithms and Data Structures
- Rapid Prototype Development and Creative Programming
- Introduction to Computer Architecture and Design (UC Berkeley)
- Computer Vision
- Videogame Programming

Math & Natural Sciences

- Calculus II
- Calculus III
- Differential Equations
- Engineering Mathematics
- Engineering Probability and Statistics
- General Physics I
- General Physics I Laboratory
- General Physics II
- General Physics II Laboratory
- General Chemistry I
- General Chemistry I Laboratory
- General Chemistry II
- General Chemistry II Laboratory
- Principles of Biology I (Bio-chem)
- Principles of Biology I Laboratory
- Principles of Biology II (Genetics)
- Principles of Biology II Laboratory

Social Sciences

- Microeconomics
- Macroeconomics

Teamwork

- Technical Writing
- Engineering Ethics and Sustainability
- Engineering Leadership and Team Building
- Conflict Management and Problem Solving in Engineering
- Bio-medical Senior Design
- Advanced Animation

Humanities

- Jazz Piano I
- Jazz Piano II
- History of Jazz (UC Berkeley)
- Classic Roman Literature (UC Berkeley)

Animation & Game Design

- Advanced Animation
- Videogame Programming (Game Design)​

Online Coursework - Programming + Technical Art

Udacity, Udemy & Others

- Self Driving Car Nano-Degree
- Professional Game Development in C++ and Unreal Engine
- Pro Unreal Engine Game Coding (Vehicle Physics)
- Game Physics
- Complete Unity Developer
- Unreal Engine Developer
- Virtual Reality Designer
- Intro to Premiere Pro CC
- Intro to Autodesk 3dsMax 2014
- Intro to Autodesk Maya 2015
- Quick-start to Animation in Maya vol:1-3
- Intro to Maya Fur
- Creating GameReady Ropes and Chains in Maya
- Simulating a Flamethrower Effect in Maya
- Creating Cartoon Vehicles in Maya
- Rigging Tank Treads in Maya
- Flooding a City with Bifrost
- Simulating Large and Small Scale Liquids in Bifrost
- Intro to UE4 Particle Systems
- Intro to Lighting in UE4
- Intro to AI and Navigation Systems in UE4
- Creating a Wheeled Vehicle in UE4
- Creating UI Elements in UE4​
- ZBrush Hard Surface Techniques
- CryEngine 3 Vol 1-3 An Intro and Application
- Product Design in Autodesk Fusion 360
- FastAI course
- Stanford CS-231


Software Development & Programming Experience

Programming is a powerful skill, but it does not replace an understanding of customer need, a critical experiment, a solid product design, or a high level plan for system architecture.

Before writing a line of code, I prefer to focus on communication, design, and architecture. With a strong plan, programming is often the easiest part of the puzzle.

That is not to say that I haven’t gotten my hands dirty coding. I estimate I have spent ~20k hours programming and developing software professionally. This experience yields some strengths:

  • I learn very quickly and adapt to new dev environments, code bases and projects.
  • I write extremely clean, organized and well documented code that requires very little maintenance. I aim for legibility over cryptic optimizations.
  • I excel in technical documentation and communication.
  • I have a broad knowledge of many aspects of software engineering, hardware and computer science topics, and understand how they interrelate.

I have worked with incredible tools and techniques ranging computer science, data science and software engineering disciplines. From a high level, I have experience with the following:

  • Programming
  • Computer Vision
  • Devops
  • Distributed Systems & Computing
  • Workflow orchestration
  • Systems and Computational Modeling
  • Robotics, Control Theory
  • Computer Graphics
  • Game Development
  • Networking & Concurrency
  • Algorithms
  • Data Engineering
  • Artificial Intelligence and Machine Learning
    • Data Visualization
    • Data Labeling/Tooling and Synthetic Creation
    • Dimensionality Reduction
    • Supervised Learning
      • Deep Learning
        • Model Development, Distributed Training, System Design etc.
    • Unsupervised Learning
      • Multi-modal Feature Engineering
      • Clustering
    • Uncertainty Modeling, Model Calibration, Explain-ability
    • ML Ops
    • Production Model Optimization, Inference, Management etc.
    • Closed Loop System Design and Active Learning
    • Self Serve Machine Learning Products