Design and implement new algorithms for CAD feature construction from probe/laser data and meshes.
Port computational geometry algorithms from CPU to GPU (DirectCompute) and C# to C++ to improve performance.
Design and implement data acquisition for Romer, Faro, and Leica metrology devices.
neat-python (open source project)
Python-based implementation of the NeuroEvolution of Augmenting Topologies (NEAT) algorithm for evolving arbitrary neural networks.
Geometric Tools, LLC
Implement and optimize computational geometry algorithms. (C++11, DirectCompute)
Optimize computer vision algorithms.
2013-2014 Software Engineer (employee)
Build from-scratch implementations of deep learning training and runtime engines. (Python, C/C++, CUDA)
Develop data models and deep learning prototypes for medical imaging and network security applications.
I was the first full-time developer brought on board. My contributions helped secure additional work and a $1M funding round.
2010-2013 Senior Software Engineer (employee)
Prototype new computer vision and machine learning components/features for new and existing products.
Prototype a multi-threaded rigid body 2D physics engine.
Translate R&D implementations of numerical algorithms into production-quality code for face-tracking support in an XBox 360 Kinect title.
Find and correct numerical stability and accuracy issues in algorithm implementations.
University of Washington
2008-2010 Research Assistant (employee)
Mathematical analysis of the behavior of thin films and surfactant-free foams.
Design/implement/debug/optimize numerical solvers for systems of equations that govern thin films and foams.
Script execution of solvers to search parameter spaces and find interesting features in simulation results.
Google (Summer of Code Participant)
Spring 2007 & 2008 (intern)
2007: Implement new automated tests to improve test coverage of the Python standard library. Verify test correctness on Linux, Windows, and OS X.
2008: Migrate test framework from SciPy to NumPy (scientific computing packages) and write new tests to improve code coverage. Verify test correctness on Linux, Windows, and OS X.
ESRG Technologies Group
2003-2005 Joint Owner & Senior Software Developer
Maintain and improve legacy engineering data analysis and display software.
Design and implement from scratch a set of web dashboards and desktop applications to automate the collection, management, analysis, and reporting on equipment data (as a replacement for a number of manual processes and legacy spreadsheet analyses).
Design and implement from scratch a framework for applying data analysis algorithms to several months of historical data for several thousand pieces of equipment.
Design and implement equipment data analysis algorithms.
This company was a startup. I was the first full-time developer brought on board. My contributions helped secure additional work and funding, resulting in the hiring of several additional engineers and developers.
Implemented a new keyframe editor for trueSpace6, a 3D graphics package.
Worked with a geographically distributed development and testing team.
1997-2002 Software Developer (employee)
Develop and maintain condition-based maintenance software (ICAS).
Configure software to monitor customer equipment (primarily marine propulsion and power generation).
Perform verification and validation (V&V) testing on new software and on customer configuration data sets.
Produce 2D and 3D graphics as needed for customer equipment status displays.
Maintain company website, assist web development group with miscellaneous tasks.
1987-1997 Nuclear Technician (E-6)
Supervise, operate, and maintain shipboard electrical distribution systems.
Supervise and operate reactor plant systems during shutdown periods.
Develop software to manage watchstation personnel assignment and track training/proficiency requirements.
Perform ongoing ship-wide vibration monitoring and analysis of rotating equipment.