Resume for Philip L. Thompson Page 1
Philip L. Thompson
* Education: BS and MS degrees in Computer Science from UC Irvine
* Experience: over 25 years in software development
* Expert programmer in over 20 computer languages
* Design and development of algorithms and systems
* Design and implementation of powerful software tools
* Metacompiler development, parsers, source code generators
* Knowledge and application of:
* structured programming, structured analysis and design
* object-oriented programming, object-oriented analysis and design
* current Computer Science theory and practice
* current Software Engineering practices
* current software development technologies
* Documentation at all levels of system development
* Software engineering:
* All phases of the Software Development Life Cycle
* System maintenance, re-engineering, conversion, testing
* System development for engineering, business, R&D, Internet, networks
* Classic user-centric systems analysis to obtain user needs and requirements
* Systems programming on micros to mainframes, including embedded/real-time
* Database development, data collection, security applications
* Web and GUI development, scripting, report generation
* Computer graphics, CAD/CAM, games, simulation, virtual reality
* Parsers, code generators, analysis tools, domain-specific languages
* Automated conversion of legacy code and data using customized software tools
* Software project audit, review, assessment, revision, codebase analysis
Master of Science degree, Information and Computer Science.
University of California, Irvine. June, 1979.
Bachelor of Science degree, Information and Computer Science.
University of California, Irvine. June, 1975. Graduated with honors.
Long Beach City College, 2 years. Major: Data Processing.
Resume for Philip L. Thompson Page 2
Sente Systems, Inc. (1997-2007, 2008)
Programmer, Consultant, System Architect.
Software development consulting on software engineering projects for client companies.
Systems analysis, design, and programming for a variety of platforms, languages, and
applications. Projects include system security, encryption, web development, system
administration, software project auditing. Project support software and software tools.
Design and implement GUI and web-based applications. Maintain and use a full-featured
metacompiler and its runtime, a multi-platform tool for generating parsers applied to domain-
specific languages, source code analysis, code generators, automated code and data
conversion. Open source projects. (C, C++, gcc, Visual C++, dynamic HTML, XML,
PowerBasic; Windows 98, Windows NT, Windows 2000 and XP Professional, Linux,
OpenBSD, Sun Solaris, MacOS 9).
Recent projects for Sente Systems:
RBF Consulting (2004-2007)
Project: HR database project.
Fixed and enhanced a commercial off-the-shelf HR database application (Abra) for an
engineering company. Custom report generation using Crystal Reports. Improved interface
to Payroll, including additional database development for enhanced security. Wrote
documentation for the user interface, business processes, and system maintenance. (Abra
HR, Crystal Reports, Microsoft Access, VBA, Visual Foxpro, ODBC, SQL Server).
Project: Real-time train control system.
Software modularity project for a message-based real-time control system. Through code
analysis, restructuring, and re-engineering, the goal of the project was improved modularity
of the codebase to support a product line architecture. Programmed and debugged system
modules. (C, Visual C++, Java, Oracle, Tcl/Tk, make, scripting; Windows 2000, Unix).
Redhawk Vision (2001)
Project: Video capture and photo system.
Designed and programmed real-time video sequence capture modules for a Macintosh video
utility using QuickTime and MacOS system calls. (C, CodeWarrior C++, PowerPlant GUI;
Firewire, driver interface, QuickTime; MacOS 9, Macintosh; Carbon interface for MacOS X
Coldwell Banker (2000)
Project: Realtor listing and collaboration system.
Web database programming for a web-based application based on proprietary CGI-BIN
technology running on a large server farm. Analyzed the low-level memory control system
Diebold Card Systems (2000)
Project: Security access system.
Implemented documentation standards for software functional requirements based on IEEE
standards. Wrote functional requirements for the system, subsystems, and web interface
modules for a very large security system. Analyzed code and documentation to extract
system design. (C, Visual Basic, Visio, Data Flow Diagrams, Word, Perl; Windows NT).
Resume for Philip L. Thompson Page 3
Diversified HealthCare Services (1999-2000)
Project: Medical insurance billing system.
Designed and implemented database import programs for loading non-uniform customer data
from multiple sources into standardized record formats using dynamic SQL. Streamlined the
process for loading very large data files to the database (approx. half a million records per
load). Designed and implemented automated code generation and an easy-to-use user
interface for the process. Created utility programs to analyze user-selected database tables
and output their statistics in HTML for offline analysis and documentation. (Visual Basic,
Access, dynamic SQL, SQL Server, ADO, ODBC; Windows NT).
3 Day Blinds (1999)
Project: Manufacturing inventory control.
Designed and implemented a formula-evaluation engine as part of a data-driven control for a
business application. Used RAD prototyping to implement and test components. Dynamic
checking of user database formulas and schema information. Project documentation
produced in HTML using software documentation tools. (Visual Basic, Business Basic,
ADO, ODBC, dynamic SQL, Access, Visio, HTML; Window NT).
Project: Online job/resume system for an executive search firm.
Analyzed and documented a third-party web application using code scanning tools.
(C, HTML, CHTML, SSH, Oracle; Windows98, Sun Solaris).
Los Angeles Times (1998)
Project: Newspaper archiving system.
Enhanced existing text preprocessing software and developed new text formatting software
using standard compiler parsing techniques. Cross-platform development between PC and
Tandem mainframe. (C, Lex, Borland C, Tandem C, MKS Lex; IBM PC, Tandem).
Experian, Inc. (1997)
Project: Business process re-engineering for a very large consumer database.
Analysis, design, implementation of modules for a business process re-engineering project.
Developed GUI front-end to very large databases. (Visual C++, Visual Basic, Delphi, SQL,
COM, MFC, ActiveX controls, SQL Server; Windows NT, IBM mainframe).
Intellisurvey Inc. (2007-2008)
Testing framework for a web-based survey system.
Design and implementation of a testing framework for system, integration, and regression
testing for server and web applications. Driven by a domain-specific script language for
testing using Perl as the driving control platform. Development done in a vmware sandbox,
running Linux VMs on WindowsXP as well as running on remote Linux LAMP servers.
Simulation Sciences Inc. (1989-1997)
Multiple projects for a very large chemical engineering simulator, including:
Designed and implemented a subsystem to generate backwards-compatible user datasets
from GUI-created engineering databases. The project goal was to make a data-driven
Resume for Philip L. Thompson Page 4
program easily updated for future maintenance. Auxiliary programs scanned and analyzed
database schemas to generate scripting files; this required generating parsers for 3 different
schema formats. The initial script file was 5,000 lines which was interpreted by a 20,000 line
C program. The subsystem was subsequently interfaced to the main program, a very large
engineering GUI application (approx. a million lines of code). (C, C++, MFC, Visual Basic,
Access VBA, QuickBasic, Fortran; MSDOS, Windows 3.1, Windows NT).
Appropriate documentation for the subsystem was produced at every step of the project, from
initial proposal and requirements, through analysis, design, implementation, and testing.
Automated tools were used wherever possible. A complete test plan and regression test sets
were generated and used to verify conversion correctness. Prepared and taught a training
class for in-house programmers on maintenance of the subsystem. (HTML, Visio)
Implemented test programs for an object-oriented engineering database based on an
international standard, PDXI. The database was implemented as two dozen cooperating
DLL's using Visual C++. Interfaces to the database DLL's were provided in Visual C, DEC
Fortran, and Visual Basic. (C, C++, Fortran, Visual Basic, Delphi; Windows NT).
Programmed, debugged, and tested modules for a very large chemical process simulation
system. Implemented a bug logging system and served on the version-release committee.
Worked on a committee to redesign the engineering database, from proprietary format to
object-oriented repository. (C, C++, Fortran, Access; Windows NT, VAX, Prime, Unix).
Teledyne Battery Products (1989)
Corrected problems in a customized accounting system running on a multi-PC network.
Debugged and fixed the communications interface between the payroll system and the bank
automated deposit system. (Business Basic; IBM PC, Novell network).
Ergodic Systems Inc. (1989)
Modified and implemented modules for a client database system and interactive user screen
interface (Cobol, Basic; VAX, VMS).
Scott & Goldman, Inc. (1988-1989)
Designed and implemented a client/debtor database system (dBase; IBM PC).
Southern California Edison, Inc. (1987-1988)
Converted a financial-energy model from a legacy modeling language to a program (from
Focus on IBM mainframe to platform-independent Fortran). Wrote terminal emulation
programs to interface PC development platforms to the department Prime minicomputer.
Designed and implemented a menu-driven interface to provide efficient user access to model
data. (Fortran, Focus, Basic; IBM PC, Prime, Unix).
Sigmatek, Inc. (1984-1987)
Programmer; Project Leader.
Implementation of a real-time system for traffic management and data collection for the Los
Resume for Philip L. Thompson Page 5
Angeles freeway system. Debugged microprocessor communications and controller
problems. Analyzed and rewrote the communications subsystem for the embedded software
in the field controllers. Compiled the microprocessor software and burned PROMs using a
Motorola development system. Debugged undocumented mainframe communications
subsystems. Implemented multiple CPU operation and failover. Developed libraries of
utility support software. Created software tools to support the development effort. Created a
Cobol interface to the Fortran and Assembler database routines. Responsible for hiring and
training additional programmers for the project. Responsible for mainframe maintenance,
updates, and sysgens. (Fortran, Assembler, Cobol; Modcomp, Motorola 6800, IBM PC).
Advansys Inc. (1983-1984)
Graphics and database programming for a financial planning system. Development of high-
and low-level graphics display languages for plotter and display. (Basic, dBase, bTree; PC).
Custom Software, Inc. (1983)
Conversion of a very large project management system from one computer to another (Prime
Fortran to VAX). Implemented low-level operating system access routines on the target
computer. (Fortran; VAX, Prime).
MCS, Inc. (1976-1979, 1980-1983)
Computer Scientist; Computer Operations Manager.
Multiple projects and responsibilities at a major CAD/CAM software house, including:
Development and maintenance programming for a very large CAD/CAM graphics system.
Systems manager and systems programmer on Perkin-Elmer, Prime, and VAX computers.
Responsible for hiring and training system support personnel. Responsible for major releases
of the commercial software package. (multiple platforms, ranging from minicomputers such
as VAX and Prime to very large mainframes such as IBM and CDC).
Software development for intelligent graphics terminals (commercial product). Responsible
for acquiring and developing tools to support embedded-software development, including
cross-assembler, compiler tools, and support libraries for the microprocessor. Reprogrammed
and installed EPROMs to update the embedded software. Debugged the embedded OS.
Developed communications protocols for the local network. (cross-platform development
using VAX and other minis; embedded software development for the Z800 microprocessor).
Santa Fe Engineering, Inc. (1979-1980)
Computer software support for Engineering Research and Development. (Fortran, APL,
Snobol, Assembler; PDP-11, Perkin-Elmer 8/32, Xerox Sigma-7, VAX).
University of California, Irvine (1975-1977)
Teaching Assistant; Lecturer.
Taught a course in structured Cobol programming. Assisted in developing and teaching a
graduate-level course on software tools and computer-aided software engineering. Assisted
teaching an introductory course in computer graphics. Maintained departmental accounting
software (Cobol, Algol, Simula, APL, Basic; DEC PDP-10, PDP-11, Xerox Sigma-7).
Resume for Philip L. Thompson Page 6
Standard Utility Rating Engineers (1974)
Designed and programmed a system to analyze customer utility bills and check for errors
(Cobol; Xerox Sigma-7 timesharing).
Long Beach Community Hospital (1972-1974)
Computer Operator; Operations Coordinator.
Resume for Philip L. Thompson Page 7
2.1 Academic Work
* Software design tools.
* Software engineering.
* Computer graphics.
* Artificial intelligence.
* Compiler design and implementation.
2.2 Computer Languages
* C, C++, Java, Basic, Pascal, Fortran, Cobol, Ada, Algol
* Rapid Application Development: Delphi, Visual Basic, VBA
* SQL, OODB, ODBC, SQL Server, Oracle, DB2, dBase, FoxPro, Access
* Lisp, Sail, Snobol, Modula, Pilot, Simula, APL, Smalltalk
* Assembly language, macro-assemblers, scripting languages
* TCP/IP, IPv4, IPv6, UDP, VoIP, BSD sockets, ports, services
* DNS, Bind, SSL, PKI, HTTP, FTP, SMTP, POP3, IMAP, MIME
* firewalls, proxies, dedicated and virtual servers, colocation, data centers
* security, password control, PAM, capabilities
* study various forms of attack: denial of service, zombies, bots
* apply defensive measures: chroot, sandboxes, honeypots, tarpits, tripwires
* operated an older Red Hat Linux server that was penetrated
* default OS utilities were insecure: ftp or news reader probable hole
* attacker installed Perl programs at root to attack global routers and sites
* attacker modified system logs, verified by later analysis of time lags
* analysis showed the attack came from a university in Germany
* on discovery, found and destroyed all attacker-installed software
* called or emailed sites my machine attacked to explain and apologize
* replaced insecure utilities, installed Tripwire for future intrusion detection
* currently operate a dedicated remote server
* running Debian Linux, Apache, MySQL, exim, telnet, ssh, ftp, Perl
* for prototyping and testing network-based applications
* for learning new network-based technologies
* supporting several domain names and websites
Resume for Philip L. Thompson Page 8
* SQL specification, schema normalization
* entity relationships, functional dependencies
* data wrangling, data conversion, encryption, dynamic SQL
* integrity constraints, transactioning, fault tolerance
* DBA controls, authorization, backup strategies
* Microsoft Office: Word, Excel, Access, PowerPoint, Outlook, Visio, VBA
2.3.1 Graphics and Multimedia
* Win32 GDI, DirectX, X Windows
* fonts, TrueType, OpenType, PostScript
* CAD/CAM, plotters, displays, input devices, output devices
* canonical forms, sound devices, speech synthesis
* OpenGL, 3D processing, 3D modeling, virtual reality
* textures, skins, mapping, object collision, shader languages
* homogeneous coordinate systems, BSP (binary space partitioning), Quad trees
* object-based model-view-controller, call back functions, styles of interaction
2.4 Computer Systems
2.4.1 Mainframes and minicomputers
* DEC VAX, PDP-10, PDP-11.
* Honeywell GCOS.
* HP 1000, 2100, 9000, Unix.
* IBM 360, RS6000.
* Perkin-Elmer 7/32, 8/32, 3230.
* Tandem. Modcomp Classic. Prime 750, 9955.
* Xerox Sigma-5, Sigma-7.
2.4.2 Microcomputers and Workstations
* IBM PC, Linux, FreeBSD, OpenBSD, Knoppix, Ubuntu, MSDOS, Novell.
* Windows 3.1, Windows 95/98, Windows NT, Windows 2000 Pro, Windows XP Pro.
* Commodore Amiga.
* Macintosh, MacOS 9.
* Intel 8080, 8088, 80x86.
* Motorola 6800, 68000, DSP56000.
* Zilog Z8000.
2.5 Professional Organizations
Past member of ACM, IEEE, and AAAI.
Resume for Philip L. Thompson Page 9
3. Technical Interests and Areas of Research
In order to keep up with today’s ever-accelerating computer technology, I find it helpful to
maintain a backlog of projects that interest me. These projects can be used to explore themes
and solutions to many of the problems encountered during everyday software development.
They can also provide experience in technologies not usually encountered during the regular
business of software development. In some cases they attempt to address the shortcomings of
real-life company practices.
The software projects I work on include: metacompilers; code generators; virtual reality; web
communications; security and encryption; improved passwords and password generators;
random-number generators; phrase generators; command-line tools; web page tools;
documentation tools; unit testing platforms; and software project audit tools.
Currently checking out: Croquet (3D collaboration environment based on Smalltalk).
Further discussion of these projects and associated writings, as well as samples of production
programs I've written, are on my website at: