Work Experience
Cruise San Francisco, CA
Senior Staff Software Engineer June 2020 - Present
Senior Staff Software Engineer June 2020 - Present
Key Technologies
- C++17
- C99
- ARM Cortex A53
- ARM Cortex R5
- GHS u-velOSity
- ISO 26262
- Git
- Make
- Bazel
Responsibilities & Achievements
- Acted as Program Architect for two model year vehicle programs, where I set the technical direction and roadmap for up to 80+ members of the Embedded Systems (ES) organization.
- Worked with leaders across the company to align on high level program direction, then bring those milestones into the ES roadmap.
- Defined, oversaw, and delivered several major vehicle milestones, enabling early vehicle development and integration.
- Led all ES teams in bottoms-up program planning and roadmap alignment.
- Worked with ES teams to raise and resolve system level architecture concerns and gaps.
- Developed and oversaw a new sensor data collection asset, which enabled early sensor derisking with reduced complexity and maintenance for ES teams.
- Worked cross-functionally teams to define and implement safety processes and standards, design and review software architectures, and set future direction to meet safety requirements for autonomous vehicles.
- Developed and championed a Cruise-wide high assurance software development process, based off of ISO 26262 Part 6.
- Defined C and C++ coding standards for safety-critical embedded software.
- Developed new documentation processes and templates which fulfill safety requirements and lead to improved communication and faster project onboarding.
- Drove initial bring-up and planning for the system's "root of safety" processor, which houses many of the core safety-related functions in the vehicle.
- Led a benchmarking effort working with various teams to determine if using a lower cost, earlier timeline processor variant was feasible.
- Led evaluation of several safety certified RTOSes and executed the purchase and bring-up of a microcontroller RTOS based on these findings.
- Led the effort to plan and execute a Cruise-wide workshop which aimed to align on and develop a more functionally safe software architecture for the core driving stack.
- Resulted in creation of a widely cross-functional architecture working group to further develop and align on a safety architecture.
- Assisted FuSa team by owning safety analysis of several functions in the system-level functional architecture, which was later used to analyze functional safety of the system, develop technical safety concepts, and drive requirements down into individual components.
- Supported hiring as a prolific interviewer (2-3 interviews per week), including acting as a Bar Raiser for other teams.
Zoox San Francisco, CA
Staff Software Engineer Oct 2016 - June 2020
Staff Software Engineer Oct 2016 - June 2020
Key Technologies
- C++11
- ARM Cortex A53
- ARM Cortex M4F
- NXP PowerPC
- QNX
- FreeRTOS
- CAN
- DDS Pub-Sub
- Make
- Bazel
- Git
Responsibilities & Achievements
- Architected, designed, and programmed safety-critical embedded software for autonomous vehicles.
- Set technical direction within the team and served as a technical advisor and contributor on projects both within Firmware and cross-functionally.
- Authored and rolled out team-wide guidelines and standards on multiple topics, including software design and architecture, documentation, code review, and testing.
- Developed middleware, application frameworks, infrastructure, and testing tools and patterns to help encourage guidelines and standards adherence.
- Acted as a key contributor to the development of a Zoox-wide high assurance software development process based on ISO 26262, including defining a C++11 coding standard (based on AUTOSAR C++14), owning static analysis tool evaluation and selection, and developing documentation processes and templates.
- Served as a champion of strong testing and development practices.
- Helped build the team from 2 to over 40.
- Served as a key interviewer and developed several interview questions.
- Mentored multiple junior developers, most of whom went on to successful roles within the team.
- Started and owned a biweekly Lunch & Learn meeting to improve communication both within the team and with adjacent teams.
- Worked closely with highly cross-functional teams to define both the hardware and software architecture of a high performance, safety critical embedded system which monitors the autonomous driving stack and provides an interface to control the vehicle.
- Designed and developed embedded software for a safety critical, low level monitor on a microcontroller to ensure safe public roads operation of a supervised level 3 autonomous test vehicle.
- System ran for years with minimal maintenance or updates and enabled hundreds of thousands of safe vehicle testing miles.
- Designed and developed an OS Abstraction Layer (OSAL) in C++ which improved portability, testability, and safety of all embedded applications and supported multiple OSs.
- Designed and developed a logging library and API which enabled portable and configurable logging across x86, application processor, and microcontroller platforms.
- Designed and developed an Inter-Process Communication (IPC) pub-sub framework and abstraction layer which was adopted in all embedded devices and enabled more modular and testable designs.
- Developed multiple shared C++ utility classes/functions and containers to meet safety, real-time, and constrained memory requirements.
- Served as key developer and maintainer of a
make
-based build system which supported multiple target devices and their associated libraries, RTOSes, toolchains, and CI.
Airware San Francisco, CA
Senior Software Engineer Oct 2014 - July 2016
Senior Software Engineer Oct 2014 - July 2016
Key Technologies
- C++03
- C99
- ARM Cortex M4F
- uC/OS II
- CAN
- UART
- SPI
- GNSS
- Make
- Git
Responsibilities & Achievements
- Designed and programmed safety-critical, real-time embedded systems for commercial drone applications.
- Spearheaded multiple board bring-ups, starting at application design and specification through to programming, testing, and manufacturing support.
- Designed and programmed drivers for CAN, SPI, and UART sensors and peripherals.
- Made use of RTOS concurrency primitives to engineer multi-threaded systems.
- Drove initiative to reorganize and expand documentation using Doxygen, including software requirements specifications, design documents, and in-code documentation.
- Wrote functional tests, integration tests, and 100% LOC coverage unit tests as part of the definition of done for all production software.
- Collaborated with Test Automation team to run automated functional and integration tests.
- Worked on cross-functional feature teams to research, test, and solve issues.
- Worked closely with team members to continuously update standards and best practices according to lessons learned and retrospectives.
Cognitive Anteater Robotics Laboratory, UC Irvine Irvine, CA
Senior Development Engineer Feb 2010 - Oct 2014
Senior Development Engineer Feb 2010 - Oct 2014
Key Technologies
- C/C++
- PIC12/16/18
- Eagle CAD
- Solidworks
- SVN
- Git
Responsibilities & Achievements
- Designed, built, and maintained robots and electronics used for computational neuroscience research.
- Programmed and tested firmware for 8-bit and 16-bit PIC microcontrollers, including code for motor control, sensor integration, and communication.
- Designed custom printed circuit boards (PCBs) and built and/or ordered printed circuit assemblies (PCAs). Boards were designed to meet size, cost, and functional specifications for each project.
- Designed custom mechanical components and assemblies using Solidworks CAD software. Components and assemblies were specified in drawings for precision machining or hand built for one-off testing and prototyping.
- Tracked and maintained parts inventory, purchase orders, reimbursements, and component and part libraries.
- Took on the role of system administrator of the lab server, including maintaining Subversion (SVN), MediaWiki, and Bugzilla installations, granting user access, and installing updates and fixes.
Education
Carnegie Mellon University
Bachelor of Science, Mechanical Engineering
Bachelor of Science, Mechanical Engineering
Pittsburgh, PA
2003-2007
2003-2007
University of California, Irvine (Extension)
Certificate Program, Embedded Systems Engineering
Certificate Program, Embedded Systems Engineering
Irvine, CA
2011-2012
2011-2012