JONATHAN COXHEAD 660 Gail Ave #A3 Sunnyvale CA 94086-8160 +1 (408) 245-5285 jonathan@doves.demon.co.uk A software engineer and system architect who excels at the design and coding of large or complex software systems, particularly with a mathematical content, either alone or as part of a team; and who has a record of developing imaginitive ideas and taking them from conception to completion based on a tenacious commitment to satisfying the project requirements. SKILLS 20 years of experience covering all aspects of software engineering: gathering of requirements, design (OOD), implementation (OOP), debugging, testing, documentation (formal and informal) and support. o Design of efficient, correct, elegant, durable code using up-to-date techniques and efficient algorithms. o Coding style that is readable and maintainable with attention to forward-compatibility issues. o Maintenance, development and enhancement of existing code as needed, even where original documentation is poor or non-existent. Finding ways to provide new features while retaining compatibility (protecting investment in existing client code). o A mathematical approach to problem-solving, often leading to new insights into the problem being solved. o A fast, independent learner who continually acquires new techniques, languages and libraries. o A versatile working style, adaptable to working alone or as part of a team. MANY LANGUAGES INCLUDING C, C++, perl, sh, Java, Tcl/Tk, SQL, UML, FORTRAN (66/77/90), TriMedia assembler, ARM assembler, HTML, awk, sed, TEX, Pascal, yacc/bison, make/gmake. SYSTEMS INCLUDING UNIX/Linux, Windows (Win32), COM, VMS, VxWorks, pSOS, X Window System, RISC OS. COMPUTER AIDED SOFTWARE ENGINEERING UTILITIES INCLUDING cvs/rcs, emacs, Doxygen, dot, Continuus, Code Manager, Toolpack/1. HIGHLIGHTS OF ACCOMPLISHMENTS o Completely overhauled and revised the TSSA ("TriMedia Software Streaming Architecture"), which is Philips Semiconductors’ library and set of guidelines to promote development of complex networks of autonomous data-processing components (both software and hardware based). I was the chief architect and sole developer of this company-critical library for 2 years. I introduced the concept of a "virtual interface" for the first time in this codebase and provided foundations which are still being exploited. o Designed and wrote various system libraries at Philips, always with an emphasis on simple, clear specifications which are nevertheless ambitious, often exceeding a client’s assessment of their present needs; and accurately implemented to schedule. o Implementation (with contributions to the design) of parts of a set-top box browser for Origin, being a world-wide web browser based on HTML 2·0 with many 3·2 extensions. Latterly the positions of Technical Consultant and Team Leader were attained. o Development and maintenance of a major part of the application software shipped "as standard" with the RISC PC, Acorn’s ARM-based personal computer: the interactive object-based graphical editor, the bitmap-based graphical editor, the printer manager, machine start-up and configuration, the C window library, and the window manager itself. o Carrying through the complete design, development and release of OSLib, a standard C interface for the 1000+ system calls of RISC OS. I took this on as a personal project and, with Acorn’s support, released the result into the public domain. It has since appeared on various CD-ROM’s of PD software. Development is being continued by a small team, and it now resides on SourceForge. o I invented and promoted a simple coding idiom to promote reliability and maintainability in the face of errors. This is spreading virally and is now widespread through 3 separate organisations. EDUCATION MA in Mathematics, 1986 (University of Cambridge, England) 2-year entrance scholarship to Peterhouse, Cambridge 4 A levels; 2 S levels; 11 O levels NATIONALITY British citizen and permanent resident of the USA with right to work ("green card") EMPLOYMENT HISTORY PHILIPS SEMICONDUCTORS, SAN JOSÉ, CA (1998--present) Philips Semiconductors is the part of Philips responsible for the TriMedia DSPCPU, which is used in Philips and Magnavox digital media consumer electronics. Software development is done against a background of multithreaded systems involving multiple asynchronous communicating hardware and software components communicating in complex ways in an embedded environment, so there is the continuing challenge of avoiding deadlock, data loss, high or unpredictable response time, race conditions, re-entrancy problems, maintaining awareness of possible priority inversion, memory, reference-count and other resource leaks. RESPONSIBILITIES My main task was the development and maintenance of TSSA. This included: deriving formal specifications (formulating pre- and postconditions and UML descriptions) from existing code; proposing new developments by writing detailed design documentation for management approval; levelising, refactoring and redesigning existing code; and implementing new features. I also wrote introductory documentation, introducing new users to the concepts involved. Design and coding of test software, with an emphasis on "completeness" in some appropriate domain. This led to some interesting use of certain integer sequences, (eg, 1, 3, 13, 75, 541, ... the "preferential arrangements" of n objects). Designing and providing a suite of makefiles to run all tests as regression tests without user intervention. Performance testing. System libraries I designed included o A code-tracing library to log an easily-understood representation of complex interactions involving multipe threads and ISR’s working together. o A component to abstract away the differences between application startup, termination and command line access across different RTOS’s. (main()? root()? WinMain()?) o A 64-bit integer library with the requirements: (a) must be available on systems without 64-bit instructions; (b) must not lose efficiency on those with. o A timer library with well-defined and useful semantics (drift-free, correct over wrap-around, etc) for all operations. o A UART device driver, including synchronous ("return when done") and asynchronous (both "tell me when you’re done" and "I’ll ask you later") possibilities. Design contributions and some maintenance work on ... o The 2D graphics library. o A portable "OS Abstraction Layer", providing access to threading primitives (semaphores, queues, mutexes, events etc) on a variety of operating systems, with C and C++ bindings. Preliminary conceptual design work on o A simple window system, including event dispatch, calculation of invalid regions, window exposure. This was going to be the missing layer between Personal Java and pSOS. It was nearly finished when the project was dropped. o A very small yet complete language to describe and verify transitions between different configurations of streaming components---a "Graph Management Language". This is an innovation that I think will be needed in the next generation of streaming products. Ported various 3rd-party software to the Philips TriMedia DSPCPU, including: operating system pSOS, networking (TCP/IP), device driver software, Personal Java, DNS, PPP. General helpfulness---eg, a C comment stripper, a utility to move source files under source control from SUN Code Manager into Continuus, a LOC counter and differencer. Contributions to Philips-wide guidelines on issues such as coding conventions, error handling and good style. Travelled for work to Eindhoven (Philips Software Conference), Toronto (client support and training), Hamburg (team communication). ORIGIN (1995--1998) Origin is a software consultancy company, and is responsible for my move to the US. During one particular year, I was the engineer who attracted the highest billable revenue. RESPONSIBILITIES Set-top box browser development---table layout, input and textarea controls, audio rendering. Design and coding of an audio device driver to play audio files in various PCM formats, concurrently with web downloading. ACORN COMPUTERS LTD (1989--1995) Acorn was a major player in the UK Personal Computer market, competing with Microsoft and Apple. They designed the chip (ARM), wrote the OS (RISC OS) and system software, and a few applications too. They no longer exist, though their spin-off, ARM, has been very successful. RESPONSIBILITIES Design and coding of applications and system components: a fast renderer for the standard graphical data format, a dialogue box and library for colour selection, a HyperCard-like application, internationalisation facilities. Design of a new application suite (to replace the somewhat cobwebby offerings then provided): an editor for mixed text and graphics, a personal organiser application, a small cardbox-style relational database, and a world map for timezone selection. Consultation with other software engineers on design, maintenance and coding problems. Supporting the developer support department (particularly in the area of graphics); offering technical advice to customers at trade shows; and responding to problems and enquiries from our users. FEGS LTD (1984--1989) FEGS ("Finite Element Graphical Systems"; now TranscenData Europe Ltd) was in the CAD/CAE market. Their key product, FAMBUILD, was an interactive finite element preprocessor containing many CAD-like features in addition to its main capabilitiy of "meshing" a 3-dimensional model into the large number of finite elements which are then used by a structural (or other engineering) analysis system. RESPONSIBILITIES All my software projects at FEGS were concerned with FAMBUILD. It is written in portable FORTRAN-77, and any new machine or operating system dependencies required implementation on a variety of model hardware. I contributed to the design and implementation of: o A new multithread command-line based user interface with graphical user interface. o An improved geometric repliction facility, based on an object-oriented approach to the FAMBUILD database. o A slope-continuous reformulation of the discrete representation of curves, borrowing ideas from "lazy" implementations of some functional programming languages. o Design and coding of data structures for a "substructuring" facility. o Geometrical algorithms expressed in robust numerical methods providing a major enhancement to the mesh generation at the heart of the product. o Generation of data describing mechanical loads. Design of: o The subroutine interface for a new "results database" package, for use and implementation by (separate) 3rd parties. o Algorithms for the FAMBUILD database-access routine library with smaller time-complexity yet leaving the interface unaltered. Management of maintenance of the product, including bug-fixing and code support. Management of FEGS’ computer systems. TRAINING o Philips COM and Microsoft COM (2 days). o Formal review of documents and inspection of software (1 day). o Project management (2 days). o Database design (5 days). INTERESTS Folk music and dancing; science fiction and fantastic literature; mythology; current developments on science and technology; the theory and practice of programming languages (especially functional languages); character coding. Résumé of Jonathan Coxhead