CV
Skills
- C/C++
- Python
- Qt
- Git and Mercurial
- Make
- SQL
Experience
Summary
I have over 20 years of experience developing software in a wide range of industries: financial, personnel, research, marketing, and aerospace. My core skills are C, C++ and Python. With extensive experience in Git and Mercurial, Qt, SQL and multiple build technologies.
Software Engineer
Malin Space Science Systems
Mar 2013 - Apr 2024
Technologies: C/C++, Python, Qt, Mercurial, Git, GDAL, Make, SQL
Wrote, maintained, debugged and tested software that is part of the ground data system for cameras on several space missions. Existing software was written in a mix of C, C++ and Python. New software is mostly Python with some C++. New development included designing and writing a cross platform image viewing GUI written in C++ using the Qt framework, with a number of unusual requirements: in-house image formats, support for images up to 20 GB, geo-referencing on Mars, quickly scanning through hundreds of images. I also worked on the nightly build system that ran on multiple OSes, as well as running a suite of automated tests. Another project involved recovering data from images that had been corrupted by an unknown spacecraft fault.
Application Developer
Luth Research
Apr 2011 - Feb 2013
Technologies: C++, Objective-C, Cocoa, JavaScript, SQL
Developed client side and back end software for tracking online behaviors and allowing participants to take market research surveys. The software included a background service, extensions for Internet Explorer, Chrome and Firefox, and GUI's on both Microsoft Windows (XP, Vista and 7) and Mac OS X. The software included extensive communication with server side applications via SOAP calls.
Programmer Analyst II
Machine Perception Laboratory, UCSD
Mar 2006 - Mar 2011
Technologies: C++, Objective-C, Cocoa, Matlab
The Machine Perception Laboratory did research into designing and using machine learning algorithms (primarily visual) to solve social robotics problems. Designed and wrote an application called CERT, which finds faces in images or video frames then runs one or more detectors on the found faces. Detectors might find facial features (e.g. nose, left eye, etc) or micro-expressions called Facial Action Units. Tasks included: * Translate machine learning research code from Matlab into cross-platform C++ libraries. * Design and implement command line and GUI applications to run all of the machine learning algorithms. * The GUI is a Mac OS X application written using Objective-C, Cocoa, Xcode and Interface Builder. * Maintain an automated check-out, build and test system that was run on all code every night. * Write tests: unit as well as higher level tests. * Create and use formal procedures for producing official releases of CERT for both internal use and for distribution to collaborators and funding agencies.
Software Engineer
Nisus Software, Inc.
May 2001 - Jan 2006
Maintaining and updating Nisus Writer 6 (C/C++ and Classic Macintosh API), including designing and implementing an outlining feature. Designing and developing major features for the Mac OS X version of Nisus Writer (Objective-C, Cocoa) including: the macro system, find and replace, styles and stylesheets and compatibility with the Nisus Writer 6 file format. Some network and system administration: firewalls, CVS, Apache, MySQL, Bugzilla.
Programmer/Analyst
Cast and Crew Entertainment Services, Inc.
Sep 2000 - Apr 2001
Developing and maintaining payroll and personnel software in C, using a Unify SQL database. Although written in C, the software was organized using Object Oriented principles. The company made extensive use of static code testing (e.g. Lint) and had strict code style guidelines.
Programmer/Analyst
Financial Database Services
Mar 1997 - Aug 2000
Database programming in Informix's 4GL. The software is a financial and automation package for Broker/Dealer back offices. My duties include writing software to client specifications, estimating time required for tasks, and designing applications or sub-systems. Some projects included: converting text reports to PDF, updating and maintaining our in-house source control system and some web server scripting and maintenance in support of Java based products for our clients' sales reps.
Development Programmer
Computer Center Software
Oct 1995 - Mar 1997
Database programming in Informix's 4GL. The software is a large financial and accounting package for non-profit groups, municipalities, schools, etc. My duties included writing software to client specifications.
Research Associate II
Lidak Pharmaceuticals
Jun 1992 - May 1995
Purification of a fatty acid binding protein grown in bacteria from a cloned gene. Modification of the protein with a fluorescent probe and it's use in measuring free fatty acid levels in human blood. HPLC and Gas Chromatography of long chain fatty acids and alcohols. Preparation of sterile suspensions of long chain fatty alcohols for use in anti-viral testing in rhesus monkeys. The work also includes programming and running a Gilson 222 Sample Changer, an automated sample handling system.
Education
San Diego State University
1994 - 1998
- Programming Languages (covering: Cobol, Fortran, Pascal, C, and PL/I)
- Calculus and Analytic Geometry
- Assembly Language and Computer Organization
- Scientific Visualization
- Computer Vision
University of Southern Maine
1996 - 1996
- Discrete Math
UCSD Extension
1992 - 1993
- C Programming-Advanced
- Macintosh Programming, Introduction
- C++ Programming-Advanced: OOP, OOD, and OOA
UC San Diego
Biology Graduate Program
1990 - 1991
University of Delaware
Bachelor of Arts, Cum Laude, Biology
1986 - 1990
- Introductory Computer Science I & II