I am fluent in C (over 19 years experience), and have recently acquired competence in object-oriented programming in Java. I also have experience programming in Python, Bourne shell, Forth, Pascal, 8-BOL, and assembly language on a wide variety of CISC and RISC processors, including Intel IA-32, Motorola 68000 and 68HC11, and Digital Alpha and PDP-11. I am most familiar and comfortable with development tools found in UNIX-like environments such as Linux. My background in digital hardware design is very helpful for writing software which interacts directly with the hardware, such as device drivers or low-level operating system support, and for working with hardware designers to choose the best partitioning of features between hardware and software.


I enjoy designing and implementing all sorts of software, and intend to continue to make this the focus of my career. I am particularly interested in operating systems (kernel internals and porting, as well as user-mode daemons), device drivers, and embedded real-time systems. I am seeking a challenging and stimulating position in a professional work environment in which I can learn new technologies while continuing to refine my existing skills.


Embedded Systems Engineer, Alerton Technologies, Inc., Redmond. WA. November 1999 - October 2001

Alerton develops and manufactures software and hardware for controlling HVAC (heating, ventilation and air-conditioning) and other building systems. The company was one of several driving the development of BACnet, an ANSI standard protocol for building automation and control networks.

My first project at Alerton was to adapt Linux for use in a new generation of products based on Motorola's embedded PowerPC processors. Starting with an existing port of Linux to a Motorola evaluation board, I backported math emulation code from kernel version 2.3 to 2.2, worked on a gdb-based kernel debug environment, and began designing startup and bootstrap code.

Following the departure of a key developer, I took over his project to develop WEBtalk, a web interface for Alerton's BACtalk for Windows, a Windows-based user-customizable GUI interface for building control systems. As one of two developers on the project, I played a major role in determining product requirements, writing specifications, and designing this system. I was responsible for writing the client portion of the product using Java and Swing for a user interface and HTTP streaming data back end, along with a C program to convert BACtalk for Windows display description files into Java source code that is then compiled into applets. I also assisted in developing some portions of the Linux-based server software, writing Bourne shell and Python scripts. This product was completed and is now shipping to customers.

I also participated in a team effort to improve the software development process at Alerton by defining engineering procedures and updating an existing coding style guide.

Software Principal Engineer, Digital Equipment Corporation/Compaq Computer Corporation, Bellevue, WA. May 1997 - August 1999

As a member of the DECWest Engineering team supporting Windows NT/2000 on Digital's Alpha microprocessor, I maintained and enhanced Alpha system firmware and the NT HAL for various Alpha systems; developed code that was supplied to Microsoft for inclusion in the Windows 2000 kernel and OS Loader; debugged Windows 2000 problems on Alpha and suggested fixes to Microsoft; and resolved customer problems with existing products. My work involved detailed knowledge and understanding of the Alpha processor architecture and various Alpha platforms, interrupts, memory management and virtual memory, direct mapped and scatter/gather DMA, cache coherency, and symmetric multiprocessing.

My primary project was to design and develop the low-level software that works with the Windows 2000 power management subsystem to implement hibernation (suspend to disk) on Alpha platforms. This included making changes to the NT kernel and OS Loader to save and restore Alpha architecture-specific context, and resolving issues arising from differences between the Alpha and Intel IA-32 architectures.

I also participated in the development of AGP support on Alpha platforms. I reviewed design specifications for system chipsets supporting AGP, identified necessary changes and justified them to hardware designers, and answered hardware designers' questions about software issues. I wrote the Alpha architecture- and platform-specific portions of an AGP bus filter driver for an upcoming Alpha platform.

Software Engineer/Lead Software Engineer, Zetron, Inc., Kirkland, WA. 1987 - 1997

At Zetron I was responsible for a wide range of new product development and sustaining engineering for the 2000 Series Paging Terminals (radio paging control equipment) and related products. My primary activity was real-time software development in C, Forth, and assembly language. I also had some project lead responsibilities, worked closely with hardware engineers to find the optimum partitioning of functionality between hardware and software, helped debug hardware, and worked with customer support technicians and applications engineers as well as directly with customers to resolve problems in the field.

Among my more significant achievements, I wrote a message-passing real-time operating system, device drivers, and specialized test software for a T1 telephony interface; was software project lead for development of the Model 640 paging terminal, originating some of the key features of the design making it possible to meet the marketing goals; helped specify new hardware for recording and playing audio, and modified an existing voice file system so that it could be used on large disks and supported disk mirroring; and created a custom PC BIOS and BIOS extensions for the 2000 Series CPU.

Design Engineer, Summation Inc., Kirkland, WA. 1984 - 1986

I designed the digital portion of a 10 MHz waveform recorder, and wrote the software device driver to operate the waveform recorder in the final product. I also implemented a Forth system used by all engineers during hardware development and testing.

Test Engineer at Advanced Technology Laboratories, Bothell, WA. 1981 - 1984

I wrote test software in C and Forth, and designed and built special test equipment for manufacturing test of ultrasound imaging and X-ray image processing systems.

Test Engineer at Fairchild Subassembly Test Systems, Latham, NY. 1980 - 1981

I wrote self-test software and designed associated test hardware for use in the manufacturing of in-circuit automated test equipment, wrote test procedures used in conjunction with the software, and conducted technical training sessions for production employees.

Digital Systems Engineer at GE Corporate R & D Center, Schenectady, NY. 1975 - 1978.

I designed and implemented software and hardware for a real time multi-access database management and transaction processing system, and supported both at customer sites.


BSEE, Cornell University, 1974
I majored in digital systems design, with a minor in computer programming.

Master of Engineering (Electrical), Cornell University, 1975
My design project was an analog/digital/analog audio delay system using dynamic RAM.

Windows NT Internal Architecture, David Solomon Expert Seminars, 1997

Windows NT Kernel Mode Device Drivers, David Solomon Expert Seminars, 1998

Windows 2000/98 WDM Device Drivers, David Solomon Expert Seminars, 1999

I can read, write, and speak basic Russian and German.


William Roman
31330 NE 178th Pl.
Duvall, WA 98019
+1 425 788 4749