CPK Smithies: Curriculum Vitae

Summary

I have had considerable first-hand experience of software development, the emphasis being on pioneering technologies and prototype development, working within multi-tasking and event-driven environments. I have also extensive experience of biometrics and digital signature technologies, and hold five patents in this area (with a fifth pending).

I have recruited, built and maintained a skilled and highly-motivated team of C++ developers, representing them at board and CTO level.

I have participated and given presentations on behalf of my company at international business and professional conferences, and have represented my company in contacts with French-speaking bodies.

Experience

Technical

Languages: Various assemblers, early BASIC, COBOL, Smalltalk, Lisp, Prolog, Pascal, XHTML, C, C++.

Technologies: Communications, displays, RISC, device drivers, networks, biometrics.

Systems: CDOS, PenPoint, MSDOS, UNIX, Windows 9x.

Other: class design, algorithm development, API design, system architecture.

Intellectual property

Trade marks, Patent drafting and filing; intellectual property acquisition.

General

Information management; education/training course design and implementation; presentations; company funding; technical personnel management.

I can converse in French.

History

1975
BA at Oxford in Philosophy & Theology.
1976
Study English Law.
1977
Shorthand Typist for British Gas Corporation Education & Training Department; trained in Instrumented Team Learning technology.
1978
Teach Religious Studies at Downside School.
1980
Commissioned by Downside School to look into computers in education.
Learn BASIC and Z80 assembler. Prefer assembler.
Write simple tape-handling OS for Nascom-2.
1981
Give up teaching.
Disassemble Superbrain CP/M, convert from 8080 to Z80 and greatly optimize.
Write order-processing system in BASIC for mail order company; company goes bankrupt.
Write numerous assembly-language routines for company producing COBOL business package. Greatly improve package. Company goes bankrupt.
Start on COBOL Plant & Asset register for Bus Company; Bus Company taken over and reorganized.
1982
Write firmware in 6502 assembler for card-operated petrol pumps, to output data to tape cassette and modem. Interface tape reader to Apple PC and write applications to send tape data to ICL mainframe via modem and to client Apple system. Petrol-pump company goes bankrupt.
Write Honeywell VIP terminal emulation program in Z80 assembler; 2 Survey analyses written in Pascal; Screen Form library with screen painter in Z80 assembler; Hard Disk backup utility in Z80 assembler.
1983
Learn C.
Start long-term contract with Future Computers Limited. Rewrite boot ROM for their FX20 and FX30 8088 microcomputers. Write BIOS for CP/M-86 (supporting all hardware-compatible CP/M disk formats); numerous configuration utilities in C and 8088 assembler. Integrate hard disk drivers into BIOS. Rewrite loaders. Write first MSDOS loader.
Write CP/M-MSDOS disk transfer utility.
Write XIOS (extended i/o system) and loader for Concurrent CP/M (CCP/M), a multi-tasking system based on a preemptive scheduler.
1984
Upgrade all utilities for Future Computers to CCP/M.
Implement multi-terminal multi-user version of CCP/M.
Assist in implementation of DRNET (Digital Research network) NIOS (network i/o system). Implement PCMODE (IBM PC ROM BIOS emulation) and Ram Disk driver for CCP/M 3.1.
Identify and fix bug in CCP/M 3.1 multi-tasking BDOS. Turn down job offer from Digital Research.
Write C standard I/O library for CCP/M implementing shared and read-only file access and record locking.
Assist in work on firmware for asynchronous VT52-compatible terminal.
Formatted screen input utility in C.
Design system- and machine- independent boot strategy for IBM-compatible PCs.
1985
Give course on the C programming language for Southampton University.
Produce ROM and loaders to boot diskless CCP/M machine off the DRNET network.
Design new Network Layer protocol for register-insertion LANs.
Write interactive disassembler for 80286.
Implement remote serial terminal console-switching for Future Computers CCP/M system.
Write parts of AT-compatible ROM BIOS for Future Computers 286 machine including XMODEM upload protocol for diagnostic test suite.
Port CCP/M 3.1 XIOS to CCP/M 4.1 (Now called CDOS) and implement CDOS 4.1 on Future Computers AT-clone, together with numerous system utilities.
Release CDOS version of hard disk archive program.
Learn Smalltalk, Prolog and LISP.
Design and implement psychiatric survey analysis for British Medical Journal.
1986
Write multi-terminal configuration utility for CCP/M 4.1, CMOS and mouse configuration utilities for Future Computers AT-clone, multi-port serial driver for 80286 Xenix and 3 multi-port serial drivers for CCP/M 4.1.
Give courses on the C programming language for Southampton University.
Design and write multi-user multi-process networked system for City dealing-rooms to access Stock Exchange TOPIC information (viewdata format) via TOPICLINE service using centralized database and re quest buffering system, involving multi-threaded and concurrent tasks, to run under CDOS with DRNET.
1987
Give courses on the C programming language for Southampton University.
Produce 3 device drivers for XENIX to drive various multi-serial- port cards.
Write Z80 interactive cross-disassembler for MSDOS.
Rewrite and significantly enhance COAX terminal firmware for Signetics 8X305 RISC chip.
Enhancements to TOPICLINE system including incremental search keyed page requests, state-machine editor software.
Assembler routines for Prolog interpreter to access IBM serial port, interrupt driven; and (what's more) Prolog terminal emulation program for testing purposes.
1988
XENIX-386 device driver for intelligent 16-port serial card.
Design and implement Stock Exchange Marketline data capture and real-time database management system, with several ancillary utilities.
Dealing-room fast stock data display system.
Much rewriting of coaxial terminal firmware (Z80 assembler).
Give courses on C for Southampton University and private company.
Learn C++. Port translator to 2 unsupported compilers.
1989
Courses on C for Southampton University.
Write event-driven X25 driver with double state-machine (C++).
Multi-threaded data-caching program to convert an XT-alike into a fail-safe buffer-box on a fast non-handshaking data feed (C++).
Port public domain C ISAM to C++ and implement it.
Design hypertext/database system in C++.
Implement inter-process communication facilities in C++ for use under Digital Research CDOS-386.
Interrupt-driven serial communications library for standard IBM PC/AT devices including high-level interface and ZMODEM file transfer.
Write serial communications driver for 16-port intelligent serial card running multi-user under Digital Research CDOS-386, with reentrant ZMODEM file transfer; implemented in C++.
Interface to serial libraries for CLIPPER database language, allowing background operation under Digital Research CDOS-386. Add custom extensions to ZMODEM protocol.
Modify IBM PC/AT-compatible ROM BIOS to run on non-standard hardware (without CMOS RAM).
Add functionality to IBM PC/AT-compatible ROM BIOS to cope with newly released multi-port serial i/o chips and, for '386 version, to cope with unforeseen memory configurations.
Prototype firmware design for hand-held point-of-sale devices; prototype software in C++ for host machine including stock control, security &c.
Temporary data object system for C library enhancement.
Maintenance of intelligent 16-port i/o card firmware (8088 assembler).
1990
Firmware (Z80 assembler) for hand-held point-of-sale terminal device with LCD screen.
Multi-tasking control program (in C++) to run on host machine, handling multiple such terminal devices, with stock control, supervisor functions etc, running under MSDOS.
Cross-rhythm graphical printout program for use by composers.
Kernel code to interface proprietary operating system to multi-port serial i/o card.
Courses on C for Southampton University.
Design and implement dBASE-compatible ISAM in C++, X25 message capture utility.
Attend a course by Go Corporation in San Francisco devoted to PenPoint, a new multi-tasking object-oriented operating system for pen-operated computers featuring a GUI with built-in handwriting and gesture recognition.
Maintenance work on MIDI sequencing package in 68000 Assembler; enhanced that part of the program which produced musical notation on the screen.
Produce a package employing a multi-tasking kernel (C++) running under MSDOS, implementing a telephone answering machine and speech monitor and using a Rhetorex multi-line Digital Signal Processor.
1991
Design & implement Clipper-compatible b+ tree index file classes in C++
dBASE/Clipper-compatible custom multi-user server for dial-up data base query (C++)
Article on the PenPoint operating System published in .EXE magazine
Office application to automate a charitable voucher scheme; involving database maintenance and cheque printing (C++)
Courses on C and C++ for Southampton University.
Modify telephone-answering software for a different voice-processing card.
Design and implement an office automation system in dBASE.
Port and develop a signature-verification component for biometric security on to the PenPoint operating system for Peripheral Vision Limited.
1992
Embark on design of security system for the PenPoint operating system
Write machine access security program for PenPoint
Design proprietary encryption technique and various C++ classes for data handling and graphics
Courses on C and C++ for Southampton University.
1993
Design and assist in implementation of PenOp Windows API for Peripheral Vision Limited. This API permits electronically captured handwritten signatures to be securely captured, displayed, attached to electronic documents and compared with one another using biometric techniques.
1994
Draft first US patent for PenOp signature system.
Appointed Technical Director of Peripheral Vision Limited
1996
First US patent (5544255) issued: method for signing electronic documents.
Presentation to American Society of Questioned Document Examiners (ASQDE) in Indianapolis.
1997
Presentation to ASQDE (Scottsdale, Arizona)
1998
Second US patent (5647017, continuation of 5544255) issued.
Participate in negotiations for purchase of an intellectual property bundle from AEA Technology Ltd.
1999
Third US patent (5818955, continuation of 5647017) issued.
Draft and file US patent on generic document signing architecture.
Participate in W3C/IETF Digital Signature Working Group (Toronto, Oslo).
2000
Draft continuation US patent on generic document signing architecture; design lightweight forensically acceptable Internet transaction signing package.
Fourth US Patent (6064751, continuation of 5818955) issued.
Fifth US Patent (6091835) issued: generic document signing architecture.
Resign from PenOp Limited.
Draft and file new patent.
2001
Presentation to Federal Trade Commission, Washington DC.

Last revised: 2001/05/25 21:30