I have no interest in relocating from the Santa Cruz / Santa Clara area, and am not currently available for employment. My resume is published here solely to provide background material about my work experience.
Senior Staff Engineer / Software Product Architect / Software Development Manager
22 years experience as a software development engineer
13 years experience in team and project leadership
Experienced software developer on both Windows and UNIX platforms. Expert in software design and implementation. Outstanding written and oral communication skills; documentation is clear, concise, and usable while prepared briefings are informative and well presented. Effective in both leadership and technical positions.
As the senior technical person in Remedy's Enterprise Resource Management applications division, guided the architecture, design, implementation, and integration for three web-based products: a purchasing application, an expense reporting application, and a facilities management application. Designed, implemented, and maintained back-end server-side infrastructure for the purchasing and setup products, including application-specific servers, CGI programs, and code libraries. Responsible for maintenance and enhancement of the company's rule-based, role-based approval server. Interface work included integration of the ERM applications with Crystal Reports, Oracle Financials, online catalog services providers, financial institutions, and the company's own asset management application.
Subsequently, I served as one of four senior architects designing a common application foundation for all of the company's disparate application divisions. This application foundation included an object-oriented data modeling environment, a set of shared business objects, and rule-based specification of business processes and application behavior. Acted as technical lead and principal architect for the business rules portion of the application foundation from its inception.
Remedy Corporation was acquired by Peregrine Systems in August 2001. I continued to lead the development of the business rules portion of the common application foundation. During this time I also performed pre-development engineering (engineering evaluation and initial system and data architecture) for a proposed new product for portfolio analysis and management.
Responsible for the architecture and implementation of the client side of a client-server web-based business-to-business e-commerce application. As team lead, supervised the design and development of client-side processes including shopping, approval, user administration, and interfaces with clients’ accounting systems. Foci of personal technical contributions were the purchase approval process, smart card subsystem and public key cryptography, accounting system interfaces, and workflow engine. (Visual C++, COM, SQL, MSSQL RDBMS, Windows NT)
Responsible for the overall architecture of a system of cooperating databases which encompassed over 200 tables. The databases were the core of TravelNet’s only product, which provided both online transaction processing for travel booking and online analytical processing for back-office travel analysis.
In cooperation with the product analysis team, performed early reviews of feature descriptions and specifications. Developed high level and detailed designs for the implementation of new product features in the databases, including a data warehouse, decision support, travel authorization, and interfaces with external expense reporting systems. Spearheaded efforts to import data on fares, schedules, hotel properties, and currency rates from external suppliers and automatically update our customers’ systems weekly. Evaluated and selected software tools to enhance team productivity. Participated in team members’ professional development, arranging coursework and attendance at conferences, tutoring new hires as necessary, and designing tasks to build on each person’s individual strengths while stretching them in ways that made them better and more confident engineers. (SQL, C++, Sybase RDBMS, Oracle RDBMS, Sun SPARCstation, UNIX)
As a project manager, responsibilities included project planning and management of more than a dozen software development and system integration projects. In addition to project duties, managed 2 to 3 proposal efforts per year and participated in regular status briefings, employee reviews and applicant interviews.
As a senior engineer, analyzed requirements and allocated them to functional modules. Participated in briefings and design reviews. Evaluated and selected alternate system architectures, hardware platforms and commercial software components. Performed vendor qualification, product selection. Managed data interfaces with subcontractors’ tasks. Integrated subcontractors’ efforts. In addition to project duties, made substantial technical contributions to about 10 proposals per year, providing system design, component selection, task descriptions, and labor estimates for formal costing.
For a dental X-ray product, developed and implemented algorithms for content-sensitive contrast enhancement of scanned images, adaptive segmentation of objects from background, and automatic mount and film size identification. Designed and implemented relational database for use in recognizing known film sizes and film mount configurations. The sophisticated non-linear contrast adjustment (my design actually modeled the judgment of an expert consulting dentist) was crucial in winning FDA approval for the system. (Visual C++, MFC, Visual Basic, SQL, Access RDBMS, PC, Windows)
Using object oriented design and programming, designed and implemented an environment for developing and assessing applications of artificial neural networks. Implemented four distinct types of neural networks (as classes derived from a generic neural network class). Testbed functionality includes the creation and specification of neural networks, training of a network, and testing of a trained network. Ancillary functions, such as building a training or testing set from individually-specified cases, are also supported. Developed specialized visualization displays, giving the researcher complete visibility into the detailed operation of the networks, as well as overviews and performance measures for high-level indicators. Developed data generators for a set of classical problems which can be used as benchmarks to perform meaningful comparisons between very different implementations (the two spirals problem, overlapping Gaussians, etc.). The testbed also incorporated a relational database which stored information about neural network researchers and authors, publications, algorithms and learning rules, and applications of neural networks, as well as a glossary of terms. (C++, SQL, Oracle RDBMS, Oracle Forms, Oracle Book, PV Wave, Motif, Sun SPARCstation, UNIX)
Designed and implemented a testbed for evaluating model-based reasoning algorithms used for identification of aircraft in flight. A control-panel style graphic user interface provides visibility of all main option settings and clean access to the various test functions: selection of data sets, sensor subsets, decision rules, display selection, processing control, data filters for post-test analysis, and a statistical summary of results. Numerous data visualization displays (including a color-coded volume rendering of radar feature space) enable the experimenter to determine not only what decisions were made, but why they were made. (C++, PV Wave, Motif, Sun SPARCstation, UNIX)
Under contract to Varian, developed calibration procedures for use in calibrating the fields of view of multiple cameras used for real-time estimation of 3-D patient position and orientation for an automatic patient positioning system developed for use in radiation treatment. (C++, SQL, Access RDBMS, PC, Windows)
Developed a prototype MPEG pre-processor that reduced required data rates by a factor of two while improving image quality. The pre-processor had three stages: film grain removal (also removed holes and spots), content-sensitive temporal filtering, and content-sensitive spatial filtering. The pre-processor accomplished its goal by reducing the visually unimportant frame-to-frame differences, and the content sensitivity prevented the filtering from degrading visually important details. Scene change detection allowed filter parameters to be reset at each change of scene. (C, DSP, Sun, UNIX)
Led initial development of this system for tracking objects in video sequences, coordinating the efforts of six engineers. Participated in all aspects of the development effort from initial concepts, specification, and system design through the software development, testing, and configuration control. Developed and followed a multi-year product development plan. Prioritized, assigned and managed product enhancement tasks and bug fixes over the product’s 8 year life cycle. Designed inter-process messaging scheme to facilitate communication of multiple cooperating processes and client-server operation of the application over a network. Developed image processing algorithms for tracking of non-cooperative objects from video, camera calibration, coordinate system conversion, and decoding of data encoded into the video signal. Designed and implemented a database to maintain information about image sequences and their associated data products. Produced operation and maintenance manuals. Developed and delivered training courses. (C, X Window, Sun SPARCstation, UNIX)
Under contract to MIT, designed a data acquisition and display system for real-time gathering and visualization of data during high-energy laser experiments and for subsequent post-analysis. The system I designed and implemented used three cooperating processes communicating via shared memory to control two image pipeline processors and a real-time digital image disk. The image processors and real-time disk exchanged image data over a special-purpose high-speed digital data network. I did everything from the user interface and messaging scheme down to the DSP routines for generating the real-time mesh surface displays. (C, DSP Assembly, VAX, UNIX)
Responsible for creation, maintenance, and documentation of two large FORTRAN simulations of radar discrimination systems. System administrator for UNIX system on HP 9000. Participated in various department policy and equipment selection committees. Worked extensively on the generation, enhancement, display, and interpretation of range-Doppler radar image sequences, including software for the automated production of animated radar imaging movies.
B.A. University of California at Santa Cruz, June 1980
Certificate in Project Management from the University of California at Santa Cruz, February 1992. Courses included Project Management, Project Leadership, System Engineering, and Risk Management.
Other courses have included Radar Concepts, VAX Concepts, VAX Instruction Set (1982), Artificial Intelligence, Ada, Effective Presentations (1984), software development for Datacube image processors (1992), and CNAPS neural network simulator (1995)