Versatile, curious, quick-learning software engineer with: • ~15 years experience in a mix of autonomous driving, mobile full-stack, aerospace, point-of-sale, in corporate and small-startup environments • obsession with elegant, well crafted, beautiful code • an eye for shaping process and culture: how teams can work...
2021 — Now
I build data tools that allow AI/ML engineers to quickly quantify the impact of their work on self-driving performance, before any code hits the road.
2019 — 2021
Palo Alto, California, United States
Mashgin is re-imagining the checkout experience through Computer Vision and a top-notch user experience.
Features delivered:
Redesigned/refactored/rewrote the core "Checkout flow" on our self-checkout kiosks, stabilized it to run smoothly for ~750,000 monthly transactions.
Integrated with a fingerprint reader and 3rd party backend for identity/age verification.
Integrated credit card processing via two flows: (1) direct-access to Ingenico card readers, and (2) via a 3rd-party docker service, that supports more card reader models but is not as responsive in terms of possible UX integrations. The two flows were of entirely different designs, so it was a lot of work to get both of them working side-by-side in the same codebase (major refactor/rewrite of payments layer), while still handling stored-value payments and age verification as before.
Integrated with a 3rd party price/discounts/tax system to override ours during checkout.
Occasional fixes on API and UI
Techs: Python 3, Redis, MySQL, PM2, Linux shell, Node.js, React
Contributions to team processes:
Enhanced our in-house deployment system (Linux CLI in Python, web backend in Express, frontend in Vue.js) with support for sane version numbering, better logging for deployment failures.
Established Git code-review processes for development, and branching processes for supporting releases
Introduced CI/CD, lint, and unit tests
Upgraded from Python 2.7 to 3.5
Introduced Python type annotations
Investigated countless problems for our front-line support staff
San Francisco, California, United States
K-Motion produces wearable gyroscopic sensors and related software that enables golf enthusiasts and their coaches to take the guesswork out of training golf swings and correcting postures, by using motion recording, instant feedback as well as analysis.
My projects:
rewrote event-reporting / data-collecting system, which was implemented redundantly, but inconsistently, in both VB.NET and C#. Backend was a Microsoft Azure Cloud-managed DB.
data sync for user accounts and training regimens prescribed by coaches.
misc work in Unity
misc work with 3d transforms/quaternions, to compute angles and velocities from raw sensor data.
Acquired by Yahoo in 2014, continued to work on Aviate.
Developed a "sensor library" for Android, encompassing GPS, Wifi, Bluetooth, Screen/Cable/Battery state, Music Playback, and Activity Detection (e.g walking vs driving); signals served as inputs for our context engine, to adapt the homescreen for the user throughout the day.
Greatly improved battery usage by optimizing GPS use (trading off responsiveness for battery versus quality of user experience); gathered battery stats from 100k+ real-world devices to test the effects of different battery-saving heuristics
Implemented a client-side context engine to reduce network calls by 90% ("thin-client" is great, but sometimes you need a "thick-client" :-p )
Organized and moderated a recurring "technical deep dive" session for our team, where we could present and teach each other about the architecture and design of various features, as well as new dev tools, frameworks, paradigms/processing.
Mentored junior engineers in how to develop, debug, troubleshoot within the Android framework with our choice of libraries (e.g. Dagger 2 dependency injection, RxJava for asynchronous work)
Introduced "Reactive Programming" and the RxJava library to the team and codebase, used it to solve a slow start-up time issue in our app.
Championed Behavior Driven Development through unit tests (Robolectric + Mockito for mocking/stubbing + our dependency injection framework)
Pulled the team together during a difficult company transition (Verizon acquisition) to build and deliver a new prototype app in 8 weeks, while engineering and product management were still in a chaotic state.
Technical lead for 6 months on a sub-team of 3 engineers, building a news feed backend for our homescreen; included client APIs and integration, and data plumbing for future news personalization efforts.
2013 — 2013
Palo Alto, California
2nd engineering hire; we developed "Aviate" a home-screen for Android phones that surfaced useful apps and custom cards based on location, time of day, and other factors.
Implemented GPS location sensing using Google Play Services
Built diagnostic tools for analyzing and troubleshooting location accuracy.
Web API security using Keyczar library on Android and Python-Django backend.
Integrated Robolectric unit-testing and Robotium automation-testing frameworks, when both were in a very early stage (very little documentation, and it was poor/inconsistent/outdated at that!)
Performed production database migrations on tables with millions of rows.
General client and backend feature work
Education
2010 — 2013
Stanford University
Master of Science (M.S.)
2010 — 2013
2006 — 2010
Stanford University
Bachelor of Science (B.S.)
2006 — 2010