Jonathan Coxhead
00 Xxxx Xxxxxxx Xxxx
Foster City CA 94404
+1 650 430 6564 (mobile)
A software engineer and system architect who excels at the
design and coding of large or complex software systems, paying close attention
to efficiency and correctness, with a record of developing imaginative 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.
- Design of efficient, correct, elegant, durable code using up-to-date
techniques and efficient algorithms, sometimes in novel ways
- Coding style that is readable and maintainable with attention to
forward-compatibility issues
- 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)
- A mathematical approach to problem-solving, often leading to new insights
into the problem being solved
- A fast, independent learner who continually acquires new techniques,
languages and libraries
- 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
Highlights of accomplishments
- Completely overhauled and revised the TSSA (“TriMedia Software
Streaming Architecture”), which is NXP’s (formerly 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. This also 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. TSSA is used to
connect codecs, muxes and I/O components in media-processing applications for
many media formats: MPEG2/4, MP3, AVI, H264, WMT, Bluetooth, video frames, AC3,
AAC, PCM.
- Designed and implemented 2 big steps forward for TSSA: a common media player
(CMP) framework, and a synchronous data flow (SDF) framework, pioneering the use
of the whole range of C++ idioms to showcase sophisticated new signal-processing
algorithms for echo cancellation, noise reduction and beam forming.
- Designed and implemented many important low-level systems components, 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. I also invented and promoted a simple
convention for C coding that is equivalent to C++ exception handling. (This has
been observed spreading virally in the wild.)
- 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.
- 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.
- 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.
Education
MA in Mathematics, 1984 (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
NXP, San José, CA (2006–2009)
TriMedia DSPCPU development: multithreaded systems involving multiple
asynchronous communicating hardware and software components communicating in
complex ways in an embedded environment, meeting 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.
My main task was the development and maintenance of TSSA.
I designed and implemented many important systems-level libraries, including
- a tracing library
- a heap integrity and fragmentation checker
- conventions for coding virtual functions in C
- a 64-bit integer library which gave a seamless transition when the compiler
was extended to supply them itself
- a timer library with well-defined and useful semantics (drift-free, correct
over wrap-around, misses no alarms on frequency-change) for all operations
- an error simulator to drop packets for testing of codec robustness in the
face of noisy inputs, using the geometric distribution.
Design and coding of test software, with an emphasis on
“completeness” in some appropriate domain. Designing and providing a
suite of makefiles to run all tests as regression tests without user
intervention. Performance testing.
Supporting clients (on-site if needed) in completing their products
incorporating NXP hardware and software and bringing them to market, including
Sirius, Vecima, LG, Ordina.
Philips Semiconductors, San José, CA (1998–2006)
The former name of NXP.
Origin (1995–1998)
During one particular year, I was the engineer who attracted the highest
billable revenue. My contibutions included development of a set-top box
browser—table layout, input and textarea controls, audio rendering&mdash
and 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. I was responsible for the Draw
and Paint standard apps.
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. This involved lots of solid geometry (lines,
planes, spheres etc), numerical methods and some 3-d graphics.
Training
- Philips COM and Microsoft COM (2 days)
- Formal review of documents and inspection of software (1 day)
- Project management (2 days)
- 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