wpe4.jpg (1337 bytes) Company Profile
PE03257A.gif (4096 bytes) What's new?
jmnicon.gif (1393 bytes) More about me
wpe3.jpg (1219 bytes) Related sites
Graduat5.wmf (6028 bytes) Courses
? Why a flounder?
cornucopia.gif (1567 bytes) Downloads
MVP Tips Page


I have published in a variety of areas. The citations below are to only a selected subset of my over 70 publications (including three major books and a major user manual).


Edward N. Dekker and Joseph M. Newcomer, Developing Windows NT 4.0 Device Drivers, Addison Wesley Longman, 1998.

This is an in-depth introduction to the art and science of writing Windows NT 4.0 Device Drivers. My co-author is an experienced Windows NT Device Driver writer, and this is the book he wishes he had when he started writing Device Drivers (see my criterion below for Win32 Programming).

Brent E. Rector and Joseph M. Newcomer, Win32 Programming, Addison Wesley, 1997.

The Windows programming book I wish I'd had when I started programming Windows (that was my basic guiding principle during the writing). Not only is it an extensive in-depth compendium of Windows techniques, but it emphasizes proper Windows programming style. It also contains chapters on memory allocation, threads and synchronization, and DLLs.  The CD-ROM has over 150K lines of source code.

Joseph M. Newcomer, "A Generic About... Box", Dr. Dobb’s Sourcebook: Windows Programming #218 (Fall 1994).

This article describes how to build a single About... box that derives all of its information from the VERSIONINFO resource. This is covered in more detail in the Win32 Programming book.

Joseph M. Newcomer, "Avoid PATH Cram with FreePath", Dr. Dobb’s Sourcebook: Windows Programming #218 (Fall 1994).

This describes a solution to a serious problem in Windows 3.1 (16-bit). In Win16, sloppy programmers would depend on the setting of the PATH variable, and every lazy programmer in existence assumed that the PATH variable could easily be used because each one knew that no other programmer ever used PATH for any purpose whatsoever. The result was that programs couldn't run because the very limited PATH size (128 bytes!) was quickly exceeded by people who refused to do the job right. This program insinuated itself into the operating system using  a nice package and some really strange code hacks, and dynamically loaded DLLs by simulating the use of the PATH without actually needing the PATH. Fortunately, Windows NT made this technique unnecessary.

Joseph M. Newcomer, "Faking DDE with private servers", Dr. Dobb’s Sourcebook: Windows Programming #205 (Fall 1993).

Joseph M. Newcomer, "Modeless Dialog Boxes For Windows", Dr. Dobb’s Journal 18,5 (May, 1993).

Joseph M. Newcomer and Bruce Horn, "Undocumented Windows: The Windows ‘Region’ Structure", Dr. Dobb’s Journal 18,3 (March 1993).

This paper had the honor of being the very first publication in Andrew Schulman's Undocumented Windows column. It describes the internal structure of a Windows "Region" so that the region could be dynamically rescaled. This involved Bruce and I reverse-engineering the structure.

Arrow.bmp (114 bytes)Return to top of page

Historical Computers

J.M. Newcomer, "1401 Simulator Manual", 1986.

This was the result of having a brain-numbing job trying to explain to DoD how to get quality software. In order to feel I was doing something useful with my life, I built a simulator for the IBM 1401 computer. The Computer Museum had requested that anyone who could construct a simulator for any historically important computer would gain some recognition by the Museum. My simulator, which was character-based (really!) ran in MS-DOS, simulated the 1401 "GUI" exactly, and on a 33-MHz 386 ran only slightly slower than the 1401 itself. This simulator is now a cataloged item in the Computer Museum collection.

Arrow.bmp (114 bytes)Return to top of page

Compiler Technology

J. M. Newcomer, D.A. Lamb, B.W. Leverett, D. Levine, A.H. Reiner, M. Tighe, and W.A. Wulf, "TCOL.Ada: Revised Report on An Intermediate Representation for the DoD Standard Programming Language," CMU Computer Science Department report CMU-CS-79-128, June 1979.

TCOL.Ada was the predecessor of the DIANA intermediate-language specification; the DIANA specification was a more rigorous spec written in the IDL system (and for which IDL was developed).

R.G.G. Cattell, J.M. Newcomer and B.W. Leverett, "Code Generation in a Machine-Independent Compiler," SIGPLAN Notices-Proceedings of the SIGPLAN Symposium on Compiler Construction, August 1979, 65-75.

B.W. Leverett, R.G.G. Cattell, S.O. Hobbs, J.M. Newcomer, A.H. Reiner, B.R. Schatz, and W.A. Wulf, "An Overview of the Production Quality Compiler-Compiler Project," CMU Computer Science Department report CMU-CS-79-105, 1979.

PQCC was the ultimate expression of the work of my PhD dissertation, and in fact was based largely on the successor dissertation by R. G. G. Cattell. This technology was the core of the technology of Tartan, Inc., where I spent several years developing CASE tooling for compiler automation.

J.M. Newcomer, "Machine-Independent Generation of Optimal Local Code," Ph.D. Dissertation, Carnegie-Mellon University Computer Science Department, May 1975.

I spent quite a few years in the optimizing compiler game. Not only was my dissertation on the subject, but I did post-doctoral research on it, developing a platform-independent external form (TCOL) which ultimately became the predecessor of IDL.

J. Mitchell, J. Newcomer, A. Perlis, H. van Zoeren, and D. Wile, "Conversational Programming -- LCC -- A User’s Manual for a Language for Conversational Computing," Carnegie-Mellon University Computer Science Department, June 1971.

The LCC system was one of the earliest interactive languages developed, following JOSS, contemporary with APL (in fact, APL took some ideas from LCC!) and preceding BASIC. The work was done in 1967-1968, and was first done on beta releases of IBM’s TSS/360 operating system.

Arrow.bmp (114 bytes)Return to top of page

Information Processing

Joseph M. Newcomer, "BH - A General Information Organization Program (Version 100-105)," Carnegie-Mellon University Computer Science Department, Internal Report, January 1979.

BH was a program I developed in 1972 which quickly became the "standard" database system within the Computer Science department for a decade, until the machine on which it ran was decomissioned. Unlike many database systems, this one supported what we now know as "publication from database", where we now use techniques such as dbWeb or SQL-CGI interfaces. In addition to the notion of publication from database, I learned a lot about publishing international character sets. This experience is invaluable for understanding the HTML-on-the-fly tools and Unicode.

Arrow.bmp (114 bytes)Return to top of page

Multiprocessor Operating Systems

Joe Newcomer, Ellis Cohen, Bill Corwin, Dave Jefferson, Tom Lane, Roy Levin, Fred Pollack, and Bill Wulf, "HYDRA Port System," Carnegie-Mellon University Computer Science Department internal report, June 1978.

Joe Newcomer, Ellis Cohen, Bill Corwin, Dave Jefferson, Tom Lane, Roy Levin, Fred Pollack, Bill Wulf, "HYDRA - Basic Kernel Reference Manual," Carnegie-Mellon University Computer Science Department, Technical Report, November 1976.

The two HYDRA papers were two of many papers and tech reports I co-authored or edited; I spent several years on the C.mmp/HYDRA project. C.mmp was a symmetric multiprocessor system (16 processors, a crosspoint switch, and shared global memory), and Hydra was a capability-based operating system that provided significant security guarantees. The experiences here are invaluable in understanding Win32 multithreaded applications.

Arrow.bmp (114 bytes)Return to top of page

Software Technology

John R. Nestor, Joseph M. Newcomer, Donald L. Stone, Paola Giannini, IDL: The Language and Its Implementation, 604pp, Prentice-Hall, 1990.

This describes the IDL (Interface Description Language) developed at Carnegie Mellon University (Nestor’s part), a high-performance implementation of this object-oriented data description language (my part), the formal denotational semantic model for the language (Giannini’s part) and an implementation of "mini-IDL" (Stone’s part).

Joseph M. Newcomer, "Debugging Real-Time Systems", Dr. Dobb’s Journal 18,7(July 1993).

Joseph M. Newcomer, "Profiling for Performance", Dr. Dobb’s Journal 18,1 (January 1993), pp.80-87, 106.

Joseph M. Newcomer, "Heap Storage Damage Detection", the C User’s Journal, October, 1989

Arrow.bmp (114 bytes)Return to top of page


D.R. Reddy, W. Broadley, L.D. Erman, R. Johnsson, J. Newcomer, G. Robertson, and J. Wright, "XCRIBL: A Hardcopy Scan Line Graphics System for Document Generation," Technical Report, Carnegie-Mellon University Computer Science Department, March 1972. Also appeared in Information Processing Letters, 1972, 246-251.

The XCRIBL system, which we developed in 1969-1971, was one of the first systems that did text and graphics on a laser printer. In fact, it was so early that the laser printers didn’t even have lasers. My contribution was to rework DEC RUNOFF to support multiple variable-pitch fonts on this device, and thus I produced one of the earliest, if not the earliest, laser printer document production systems.

Arrow.bmp (114 bytes)Return to top of page


Joseph M. Newcomer, Personal Composer User's Manual, Personal Composer Inc., 1988.

This was the first complete (600-page) user manual for the Personal Composer computer-based music system. I worked on three releases of this product, and in one year wrote over 100,000 lines of C code (the creator only wrote 70,000 lines in the same time period, but he was also working on a Master's thesis and running the business!) This product was the first MIDI-based scoring system; it used traditional music scoring notation and could convert MIDI input to a musical score. This manual was reviewed as "The best user manual...in the music business" by Music Technology (July 1988, p. 98).

Arrow.bmp (114 bytes)Return to top of page

[Dividing Line Image]

Send mail to newcomer@flounder.com with questions or comments about this web site.
Copyright 1998 The Joseph M. Newcomer Co.
Last modified: April 20, 2008