Does this site look plain?

This site uses advanced css techniques


One of my earliest communications controllers, and one in which I had by far the most involvement, was VSI-FAX. This is by far the leading commercial UNIX facsimile system, with more than 40,000 server installations worldwide. At one time we supported more than 30 UNIX platforms and have since ported to Windows NT as well.

Conceived in 1988 by my then-partner David Droman, I perfected the first public demonstration late in that year, with commercial release in early 1989. Our first platform was the AT&T 3B2 due to our company's close relationship with AT&T, but over the years expanded to support more than thirty different UNIX platforms. I performed all those ports.

Modem Driver Development

I have been responsible for development of every modem driver ever shipped, though the company refers to these drivers as FIMs (Fax Interface Modules). From the early days on the AT&T 3B2 - with notoriously underpowered serial hardware - to supporting the fantastic high-end Brooktrout TR114 family of intelligent fax cards, my experience in class 2/2.0 fax modems and UNIX serial communications is very broad.

[Multi-Tech modem] Though fax modems often support flow control to regular the flow of data through them, the fax protocol does not: this means that once a fax starts to arrive, the FIM must be able to accept the data at full speed. UNIX serial input queues are typically 256 bytes large, and when they overflow, the entire buffer is discarded without notice. On a busy system, this can be quite a challenge.

Furthermore, for many years, we never met a platform with a bug-free serial subsystem. Though "regular" serial terminals and printers usually worked quite well even for low-end hardware, a modem driver exercised the serial I/O system in ways that were not typical: our software was notorious for finding bugs. All of these had to be worked around, sometimes with a great deal of effort.

Our first modem was the Fujitsu dexNET 200, which was a quasi-class 3 device (lots of smarts, easy to control), and we expanded to support the outstanding modems from Multi-Tech Systems. We had an excellent relationship with the company, and (in particular) their chief fax engineer. Multi-Tech has long been the favorite vendor for UNIX class 2 fax modems due to their peerless firmware.

The port to Windows NT meant that we could then support the TR114 family of smart fax cards from Brooktrout Technology. These multichannel devices were very intelligent and offloaded a great deal of the work from the main CPU, and were able to do much better image compression and (especially) call control.


Facsimile is ultimately based around images, and our software handled many kinds: I was responsible for nearly all imaging aspects.

Facsimile Data Encoders and Decoders
The actual fax data that travels over the phone line is compressed using various algorithms. The primary algorithm is the CCITT T.4 standard for Modified Huffman Group 3 encoding, and this was very compute intensive (lots of "bit banging"). I created a library of functions that performed extremely efficient encoding and decoding of this binary data, and these libraries have been essentially unchanged in more than ten years.
VSI-FAX would accept Level 1 PostScript jobs from users, and our software would render them down to TIFF files in preparation for sending. We used the excellent "PowerPage" PostScript clone from Pipeline Associates, and I was responsible for porting and integration of this software into VSI-FAX. This integration was quite close and involved substantial involvement in the imaging and font machinery.
I was also responsible for tracking down customer imaging problems: they would find that something printed differently on their HP LaserJet than it did via VSI-FAX, and I'd get the PostScript files for research. We usually found this to be non-standard use of PostScript, but nevertheless got quite handy with debugging the language.
Character Generation
[Sample Fax text] Our Epson-to-fax generator read "regular" text - with Epson-style escape codes - from the user's fax job and fully rendered the page into Group 3 fax data. We had our own font system based on the excellent Fujitsu "Roxbury" font, and I created libraries for rendering character data a line at a time.
Even though the job pages themselves were fully rendered before being submitted to the modem for transmission, the per-page headers were always done contemporaneously. Because we controlled all the bits being sent, all fax jobs sent via VSI-FAX had the same "look" in the header across the entire supported platform and modem line.
Efficient Image Printing
[Laser Printer] Modern printers use highspeed parallel ports or even faster network connections, but in the late 1980s, it was much more common for laser printers on UNIX systems to have slow (19200 bps) serial connections. The nature of fax data was that these images tended to be quite large, and the customary methods of sending images to PostScript printers expanded the data stream substantially.
I created a series of "fax fonts" that both PostScript and PCL print drivers used that drastically cut down on the time required to print an image, and our competitors never came close to our efficiencies. Eventually, faster printer channels and PostScript Level 2 support reduced our advantage, but this was a big selling point for a long time in the early years.

Technical Support

Early in the product's life, I was responsible for not only development but technical support as well, and my team routinely scored "11 out of 10" on customer surveys for satisfaction with our support. We were targetting the VAR (Value Added Reseller) market, and we knew that if our VARs knew they could count on us to help them support our product, they would actually sell our product. My team learned from me: I was never "out to lunch" for a customer if I was actually in the office to take a support call, and we knew that "technical support" was as much about "support" as it was about "tech".

Documentation and Training

I was not responsible for writing the end-user product manuals, but I prepared much of the dealer training materials as well as very extensive documentation for technical support. My 100-page The Service Class 2 Specification and VSI*FAX Class 2 FIM technical manual - first written in in 1992 - is still in use today.