Edward N. Dekker III
36 Blueberry Lane, New Ipswich, NH 03071
Graduate Studies, 1979-1981 M.I.T.
B.S.E.E. (Computer Option), 1978 Northwestern U.
I have over 40 years of computer systems development experience. I am available on a contract basis as an individual technical contributor or as a project leader on Windows Device Driver or Real-Time projects. I also conduct training in Device Driver Development for programmers.
My technical experience includes work on: device drivers, real-time systems, compilers, languages, databases and networks. I have extensive experience with Microsoft Windows. I also have experience with UNIX, VAX/VMS, MS-DOS, C, C++, Ada, FORTRAN, IDL, SQL, various assembly languages, and numerous microprocessors and workstations.
Development facilities in my office include a variety of systems running Windows 10, and older versions of Windows in both the Workstation and Server versions.
Microsoft Windows 10 and older versions of Windows:
I am co-author of the book Developing Windows NT Device Drivers: A Programmer’s Handbook published by Addison Wesley Longman. The book provides an in depth introduction to Windows device drivers including an introduction to Windows 2000/WDM style drivers.
I am co-author and an instructor of a Windows NT/2000/XP Device Driver Course. This is a one week course with labs. The lecture portion of this course including optional material consists of over 1400 slides. In order to support the labs I wrote a driver which simulates the "lab hardware". This driver and the associated hardware simulator provide the student with "hardware" and a debug monitor to examine the "hardware" state.
I have written filter drivers to capture activities of a running Windows system.
I wrote a driver for a specialized USB data acquisition peripheral. The driver reads and buffers the data from the device and collates the data for read requests.
I wrote driver software for a large format touch sensitive panel. The Panel is used with a projection display to form a table sized multi person touch screen.
I wrote the Device Driver for the high speed interconnect hardware for an Enterprise class server system. The interconnect bus connects servers in a system to each other and also to shared peripherals. This driver exported an interface used by the reliable communications driver. The reliable communications driver in turn provided the interface used by higher level drivers.
I designed and implemented a virtual Ethernet adapter driver for the Enterprise class server system (see above). The driver was developed as a WDM Adapter Miniport. The driver exported the standard Adapter Miniport interface. The driver functioned without physical hardware by passing data to a reliable communication driver which controlled access to the interprocessor communications link.
I worked on a high performance Video Server File System. The project used a server computer to control access to data distributed on Fibre Channel disk drives. For optimal performance the data was stripped across multiple disk drives. I wrote the disk access code which performed parallel access to the drives for the disk I/O requested by the higher level components of the File System Driver. We used the OSR File System Development Kit to facilitate the development of the higher level File System components of this project.
I designed and implemented a driver which creates a disk pseudo-device. The disk pseudo-device exported the interface of a disk driver to higher level software (including the file systems) but split the disk I/O across a number of physical drives. This allowed a RAID like split of data across many disks without the NT RAID restriction on Disk Block size. Constraints of the system required the use of far larger blocks of data than the Microsoft RAID implementation could allow. Data is stored on up to 16 physical disks. The driver read and wrote data on the physical disks in response to requests on the exported logical disk.
I worked on a network attached peripheral. The peripheral attached to the Ethernet and provided services to the workstation. An internal network switch forwarded normal network traffic to the corporate network. Constraints on the design prevented the use of any standard network protocol for communications to the peripheral. I designed the network protocol used for communication with the peripheral and implemented the protocol driver on Windows NT and Windows 2000. I designed the other system level Windows software for the project and wrote the initial software design documents. I debugged the protocol implementation on Windows and participated in the debugging of the firmware implementation.
I wrote extensions to a display driver for Windows NT to support YUV conversion for a custom video-editing system. I participated in the hardware debugging of the adapter card and debugging of the core driver supplied by the graphics chip provider.
I wrote various Kernel mode drivers to support a large multimedia project.
I wrote extensions to the display driver for Windows NT to accelerate the operation of X Windows (X11) video operations. This extension driver was done for the TGA graphics chip and the Alpha processor. This provided a significant increase in X-Server throughput over a system using a stock video driver.
I debugged and enhanced a printer driver for a complex PCL printer.
I wrote a device driver for a specialized CCD array used in semiconductor processing to monitor the thin film thickness on a wafer during vapor deposition.
I wrote a device driver for a NVRAM device on Windows NT. The NVRAM device is a PCI device on an Alpha based computer.
I worked on porting a low level hardware access DLL from Windows 3.1 to a Windows NT kernel mode driver. The DLL controlled a video scaling chip.
I prepared an estimate and proposal for a Windows NT printer driver for a high end printer. I debugged a minimal driver for a subset of the required functionality and prepared a Technology demonstration based on the minimal driver at a major Trade Show. I prepared an estimate of the remaining effort to produce a product quality driver. The prototype was demonstrated under Windows NT workstation for both the X86 and the Power PC.
I evaluated the operation of a prototype SCSI CD-ROM autoloader with the Windows NT CD-ROM MiniPort and SCSI drivers. This project included the analysis of the operation of a prototype unit with the standard Windows NT drivers and the preparation of an estimate for custom drivers for the unit.
I designed and implemented video scaling code for two desktop teleconferencing systems. These systems used the Pixel 2070 video chip. My work included assisting Pixel debug the early implementations of the chip. In one implementation I programmed the Pixel 2070 and 2080 directly, in the other I used the Pixel DLL for the low level I/O.
I was the onsite representative for an Ada Compile vender (Verdix) at a customers development site for Six months. I was an onsite resource in the Ada Language, the Verdix Ada Compiler, Debugging a real-time system and Motorola 68000 assembly language programming
I designed and implemented software to control an excimer laser. The laser was one component of a semiconductor stepper system. The laser control software consisted of 4 tasks which run on a 68020 VME processor card under VxWorks. This software was implemented in C.
I rehosted the VxWorks cross development system from the Sun Workstation to the Concurrent (Masscomp) workstation. The system used the Concurrent compiler and linker to compile and link applications to be downloaded to the 68000 based embedded computer.
I developed the code to manage and utilize dual port memory on a multiprocessor system designed to monitor T1 telephone lines. I also wrote the low level communications code and assisted with the debugging of the system hardware and software.
I prepared tools for the measurement of the performance of an MS-DOS compiler.
Other Device Drivers:
I have written other device drivers for various devices. These include:
- VAX/VMS - Driver for the Raster Technology model One High Resolution Display
- VAX/4.3 BSD - Driver for the National Instruments IEEE-488 bus (HPIB)
- RSX-11M - High pressure liquid chromatography driver
- RSX-11M - Modified the serial Driver for better async line support.
- 68000/VxWorks - Driver for the Matrix 4 line serial card
- 68000 / System III - Driver for a communications coprocessor
- 80x86/ Microsoft Windows 3.0 (3.1) - Display driver for a new display device
I worked on database design and the implementation of data access libraries for a client with a complex relational database. The system was implemented under Ingress with embedded SQL in C code. The database consisted of 168 tables. I designed and implemented new functionality in data access code, added new capabilities to the schema, and redesigned the schema/access code to improve the efficiency of the system.
I have been involved in evaluations of commercial database systems. In each of these evaluations the systems functionality were compared, and the leading contenders were then benchmarked.
Compilers and software tools:
I retargeted the Tartan Laboratories IDL translator to produce GNAL source code. I enhanced the translator extensively both to process a larger subset of the IDL language and for compatibility with other Tartan tools. IDL is a language to describe data structures including the links between data elements. The compiler generated the allocation and access code as well as a run-time symbol table. The symbol table allowed runtime code to provide functions for reading and writing data graphs.
I developed an SDLC line definition language and compiler for continuing development of an SDLC communication system. The compiler required only lexical analysis and was built with a lexer generator. This tool simplified the process of configuring the SDLC lines. Before this tool was generated it was necessary to make parallel edits to a large number of files. With the compiler only one file was updated to change the configuration.
I was a member of a team that designed an econometrics programming language and environment. I had complete responsibility for the design of both the workspace manager and the distributed processing aspects of the system. I implemented a workspace manager for a prototype environment and interpreter.
I prepared a suite of tests for a new FORTRAN-77 compiler hosted on a 680x0-based UNIX system.
Communications and Networking (non-Windows):
I performed work to improve capacity and performance of an SNA communications system. I also wrote a report that evaluated long-term options for SNA communications support for the client.
I designed and implemented a communications link between the VAX-based Spatial Database Management System (SDMS) and the Navy communications network. The link used IEEE-488.
I planned for and implemented the installation of an ETHERNET network using the TCP/IP communications protocols and a link to the ARPANET.
I designed and worked on implementation of AppleTalk for the Cadmus workstation. This project included: Design of the AppleTalk System, Debugging of a 68000-based network interface coprocessor, Implementation of the UNIX device driver to communicate with the coprocessor, Implementation of the AppleTalk Link Access Protocol in C.
I worked on an Electronic Mail system intended for office automation applications. The CCA COMET Electronic Mail System (EMS at Digital Equipment Corporation) was written in Assembly Language for RSX-11M. This was the first electronic mail system targeted to non-technical users
At Tartan Laboratories I managed the Systems and Operations Group. The group consisted of 3 engineers, an operations supervisor, and 3 operators. In this capacity I was responsible for the operation, enhancement and maintenance of the computer facilities. The facilities included two DEC 2060 computer systems, Two VAX system and various workstations. The computers were all networked to the LAN and the LAN was routed to the ARPANET. I was responsible for the preparation of both capital and personnel budgets for the systems and operations group.
At Strategic Information I managed a small tools group in addition to my duties as an individual contributor. The tools group consisted of two programmers who worked under my direction on software tools for our software group.
At various times I have acted as a project leader or project manager for my consulting clients.
- April 1992 to present. Eclectic Engineering (my consulting company)
- August 1986 to April 1992. Principal Consulting Engineer, Software Leverage (Arlington, MA).
- November, 1985 to May, 1986. Independent consultant
- January 1985 to October 1985. Principal Engineer and Manager of UNIX Utilities Cadmus Computer Systems (Lowell, MA).
- September, 1982 to December, 1984. Computer Scientist, Manager of Systems and Operations Tartan Laboratories (Pittsburgh, PA).
- May through August 1982. Independent consultant.
- August, 1980 and May, 1982 Computer Scientist, Strategic Information (Burlington, MA).
- April, 1979 and July, 1980 Software Engineer, Computer Corporation of America (Cambridge, MA).
- July, 1978 and April, 1979 Programmer, Harris Bank (Chicago, IL)
- October, 1975 to June, 1978, NIH project Northwestern University (Evanston, IL).
C, C++, Ada, Basic, BLISS, DATATRIEVE, IDL, Pascal, SQL, COBOL, FORTRAN, Modula, and LISP.
Computer systems and assembly languages:
Pentium, VAX, PDP-11, 80x86, 80x88, CDC 6000, IBM360, and 680x0.
Microsoft Windows, Microsoft Windows, Microsoft MS-DOS, LINUX, Android, UNIX (SUN, 4.2 BSD VAX, System III, and System V), VAX/VMS, VxWorks, TOPS-20, RSX-11M, Apple Macintosh, Z80 CP/M, Burroughs 5000, and PDP-8 OS-8.
TCP/IP, DECnet, Appletalk, Ethernet, IEEE-488 (HPIB).