Dwight Cater
Simplicity is the key to good software design
Daniel Jackson
Designs well-crafted software that is highly-factored. Creative problem solver specializing in algorithms. Capable of leading a small team of programmers in innovative software that has a high degree of reliability.
• Sophisticated Algorithm Design
• Embedded System Architecture
• Image Processing Techniques
• Program Analysis Tools
• Experience Bringing Five Products from Concept to Market
EMPLOYMENT HISTORY
Coe Manufacturing, Portland, OR - Wood Scanning
Senior Software Engineer 8/93 to 4/08
Member of automation systems group that developed laser profile sensing technology. These scanners can employ up to 32 cameras and 224 lasers, scanning 4 sides of a board. While creating a 3D geometric model of the lumber, machine vision is used to classify biological defects on each face.
Developed image processing package, going from pixel to classification of biological defects in automatic veneer grading system. Using multi-core distributed architecture interconnected via pipes and sockets (TCP/IP).
• Designed image segmentation technique running on a PC to replace
FPGA code for image preprocessing. Implemented table-driven design
that can threshold 6-megapixel image in 50 milliseconds on dual core
3.0 GHz processor. By using a standard CPU instead of special
purpose hardware, I circumvented many of the design issues associated
with a hardware-based solution.
• Implemented high-speed circular Hough transform to differentiate ring
knots from regular knots.
Designed grade scan edger optimizer. This system had several technical hurdles to conquer and required the design of an optimizer that mirrored the nuances of human graders. It was the company's first entry into the lumber grade scan market. The mill manager said "It is the most sophisticated optimizer of its kind in the world". Used 5 CPUs, plus special purpose hardware for image preprocessing.
Designed system architecture for all scanners sold by automation systems group from Summer of 1996 through end of 2002. This streamlined architecture, included a multi-protocol plc serial communication package that eliminated about 40 different customized plc communication subsystem versions and the overhead of keeping that organized. After this architecture was put in place, complaints from customers dropped by 50%.
Team lead on veneer grade scanning system. Integrated parts from lumber optimizer, designed new architecture and added new components: grade analysis, outline analysis, user interface, and plc communication interface.
Invented algorithm for edge detection in veneer scanner, finding out later it was attributed to Paul Hough. This product became the first entry into the company's automatic veneer graders.
Wrote new algorithms in edger optimizer system to make it twice as fast with an improved optimization of 0.5%. Designed new technique using quad-trees to find regions void of defects in half the execution time of previous implementation. These two changes were key features that allowed the first sale of a Grade-Scan lumber optimizer from our company.
Cater Software, Salem, OR - Software Analysis Tools
Owner / Software Developer 4/86 to 8/93
Developed static source code analyzer for the C language. Parser was built on top of a "virtual memory in software" infrastructure. Purpose of system was reverse engineering / documentation of existing code by producing function tree diagrams, dataflow analysis, and cross-references of code.
Implemented ANSI C token-based preprocessor that automatically stores tokens in virtual memory for fast compilation of a large number of source files. This feature was brought out about 6 months before either Microsoft or Borland had a similar feature in their respective products.
Designed software modeling system utilizing Prolog interpreter to answer ad hoc queries of knowledge stored in database.
II Morrow, Inc. (presently Garmin AT), Salem, OR - Avionics
Software Engineer 12/84 to 4/86
Team member, performing formal software testing for FAA Instrument Flight Rule certification of airborne navigation system. Exposure to automated unit testing. Performed testing of front-end processor with binary pattern stimulation as well as doing desk analysis of overall system integration. Added small multitasking kernel to eliminate data corruption and improve overall system response time. PL/M-86 and Intel 8051 assembly.
Texscan/MSI, Salt Lake City, UT - Electronic Manufacturer
Software Engineer 6/81 to 9/84
Project lead on commercial insertion device that automatically overlays an advertisement on a cable channel. The system controlled two videocassette recorders and monitored a satellite feed in real-time using only a 4-MHz Z80. Although I was not the originator of this project, I worked out all the kinks in the system to bring it to the marketplace. It subsequently took 50% market share, has been the bread and butter product for this company and generated at least one start-up business. Assembly language on Z80 and Z8 processors.
Applied Geophysics, Salt Lake City, UT - Exploration
Scientific Programmer 6/78 to 6/81
Used numerical techniques to model and display 3-d geophysical data gathered from low flying aircraft. Co-authored paper presented at 1980 Geophysics conference on Position Correction of Inertial Navigation System Generated Flight Path Data. Fortran on Univac 1108.
EDUCATION
BS in Mathematics, 1983 University of Utah. Took graduate level courses in Digital Signal Processing.
SKILLS
• Proficient in C and Assembly, well-versed in C++, Lisp, and Prolog
• Hardware level debugging with in-circuit emulators, remote debuggers, and logic analyzers
INTERESTS
• Agile Methodologies: Lean Software Development, XP
• Automatic Drawing Algorithms
• Classical Music and Jazz
• Light-weight Formal Methods: Alloy
• Loudspeaker Design
• Machine Intelligence
• Program Analysis, Modeling and Transformation
• System Modeling Languages
• Travel