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