Phone: 1-617-803-1797
Email: or
Smail: 33 Cedarwood Ave, Waltham, MA 02453 USA
Network and Unix/linux software in C, perl and tcl.
Music and music software.
Network search software.
Mathematics, 1966, Washington State University,
Computer Sciences, 1968, University of Wisconsin
plus partial work toward Ph.D.

Years of experience with various languages
In the past few years, I've done a fair amount of Perl and TCL programming. I've used C for over 20 years, and C++ on a few recent projects. Since I've worked mostly on unix-like systems, this has included all the common "shell" languages, of course. Before that, I used an assortment of other languages, including Pascal, APL, Prolog, Snobol (3 and 4), Lisp, and even Fortran, Cobol and PL/I.
Educational web site
The Digital/Compaq/HP Remote Access Lab is an online version of their customer education courses. It consists of a lab with a lot of hardware of various types, and several varieties of "virtual network" boxes that can hook things together into various small networks. The web interface shows you a list of the available courses. When you select one, it assigns needed equipment to you, runs a set of configuration scripts (with something not quite correct), shows you a picture of the setup and the user's description of the problem. It's your job to fix the problem. The picture has active icons, and clicking on one gives you a telnet connection to that device. You also have links to assorted online documentation that is relevant to the problem. Most of the exercises also step you through the stages of a solution. I wrote most of the code behind the lab, in a mixture of perl, tcl/expect, and C.
Musicians' web site
This is an example of a special-purpose web search and retrieval site. In addition to a repository of "sheet" music, it has a web search "spider" that builds an index of titles available online, plus a lookup tool that can locate music and return it in PostScript, GIF, PNG, MIDI and other formats. One of the interesting aspects of this is the difficulty in finding similar information from the large web search sites, due to the lack of useful terminology to distinguish recorded music from musical notation.
Network management agents
I've built several agents, mostly HTTP- and SNMP-oriented, for Digital, GTE Government Systems and GTE Labs. They were based on several public agents, and all had sizable private MIBs. The Digital agent included a module to talk over a serial link to a plant management system and convert its command-line interface to SNMP. The GTE agents acted as proxy agents to packages on other computers; one a large ATM switch, another a distributed telephony database. In several of these, I also added a HTTP interface to help in debugging and to provide the same data to web-based packages. I have a simple demo of SNMP over HTTP that shows the basics of such a second interface.
Miscellaneous fun projects.
On another project, I built a low-level packet-forwarding program for linking mobile computers with radio modems to their base stations. I implemented an interactive kernel debugger for a Prime Unix Sys/V box. Another consisted of making a Web interface to a SQL database work properly. Back in the early days of the Internet, I built a distributed Unix-like system that made a large set of computers act like a single multi-processor system. I've also worked on a number of projects involving high-throughput Internet transfers, such as streaming and archived video.

Many short-term jobs are omitted, so that this document remains somewhat readable. Most jobs under 6 months are omitted, unless there's something interesting about them. Note: Some of the links here don't work due to the usual mergers, purchases, and renaming. As I find where they've gone, I'll update the links, but I expect that some are gone forever.
Feb 2002 - July 2004: Compendium Research, Inc

Main project: Extracting data from a variety of file formats and making the data available via distributed databases on linux-based servers. The input data was an assortment of billing and other corporate reports from older mainframe systems. The output data was initially simply formatted for input to Oracle and Sysbase; later versions also produced HTML and XML for building web sites.

Smaller projects: Writing programs to extract data from several web sites such as and several medical reference sites, and build web pages that were usable from small (PDA-type) comm devices. Investigated and compared features of several Internet-telephony packages (SIP, Asterisk, Skype, etc.)

Languages: Mostly C, with a lot of prototyping in perl.

Jun-Dec 2000:

Networked video and audio software.

This was a small startup for developing network video servers. Most of my portion involved developing debugging and test software. The general approach was to incorporate a small HTTP interface in the servers, and then provide a web interface to display the information about the state of the servers.

Computers: Linux (mostly Mandrake). Languages: C, C++, Perl, JavaScript.

Mar-Jun 2000: Lucent Technologies

Support software for network testing. Much of this involved working on java-based tools for downloading and installing test and monitoring software.

Computers: Sun (Solaris) Languages: Java, perl, C.

Jan-Mar 2000: Sitara Networks

Worked on fixing bugs in user interfaces, both web-based and an extended tcl shell.

Computers: FreeBSD, linux NT. Languages: Perl, tcl, C, JavaScript.

Oct-Nov 1999: Compaq

Added new features to Remote Access Lab.

This was an extension of an earlier web-site project, to add the ability to use and configure multiple devices attached to remote systems.

Computers: Compaq (linux), Alpha (linux, True64Unix). Languages: Perl, tcl/expect, C, JavaScript.

Aug 1999 - Sep 1999 Compaq/Altavista

Testing firewall and proxy software.

Computers: Digital Unix, NT, linux. Languages: Perl, tcl (tk & expect), some C and java.

Jan 1999 - May 1999: GTE Laboratories, Waltham MA

Worked on general mail (email, voice mail, fax) web site: HTML portability testing, performance testing, configuration, etc.

Computers: Sun (SunOS, Solaris), NT, W95/98. Languages: Perl, JavaScript, HTML, tcl, C.

Jan 1998 - Dec 1998: Digital Equipment Corp, Nashua NH

Implemented web site for Digital's Remote Access Lab. Web pages and CGI scripts supporting remote "hands on" teaching of configuration, trouble shooting, and other support of Digital's networking products.

Computers: Alphas running Digital Unix (OSF1) and NT. Languages: Perl, tcl (tk & expect), C, and a little Java.

April 1997 - Oct 1997: Fujitsu/Nexion, Acton MA

Project: Worked on network management subagent for Frame Relay and ATM boards. Analyzed and documented a lot of code. Built debugging and test tools.

Computers: Sun (SunOS and Solaris). Languages: C, C++ tcl, perl, HTML.

April 1996 - March 1997: Digital Equipment Corp, Merrimac and Nashua NH

Project: Built software for moving large (gigabyte-size) files around on the network. Helped build GUI (Graphical User Interface) tools. Built HTML pages to provide Web access to video archives. This was part of Digital's Alpha Studio project, which is building alpha-based controllers for networked video equipment.

Computers: Alpha with OSF1 (Digital-Unix) and NT. Languages: C, perl, tcl, HTML.

January 1996: NTSI (New Technologies & Solutions, Inc), Braintree MA

Project: Helped build Web site for managing and displaying contents of in-house employee database for a large firm. Wrote and debugged perl CGI programs that build Web pages from a Sybase database.

Computers: Sun (Solaris). Languages: perl, sybperl, HTML.

March 1995 - Nov 1995: GTE Laboratories , Waltham MA

Project: Built software for remote monitoring of networks and telecomm packages. Added private MIB to network management agent that reports alarms, database info, process and file system status, etc. Built tools with tcl and perl to display status and alarms for remote nodes. Installed WWW software and modified documents to work with HTTP; wrote scripts to convert documents to Web pages.

Computers: AIX, Sun , PC. Languages: C, perl, HTTP, HTML . Languages: C, perl, tcl, HTML. Graphics software: tcl/tk , Mosaic, httpd, X/Motif, X/OpenLook.

May 1993 - March 1995: GTE Government Systems Division, Needham MA

Project: network management agent to include MIB for new ATM switch, and wrote most of the documentation. Also wrote (and modified) some network graphics demo software, and tested several network management packages.

Computers: Sun SPARC (4.1, Solaris). Languages: C, perl, C++, Ada. Graphics software: tcl/tk , X/OpenLook.

Oct 1992 - March 1993: Complex Architectures, Inc., Gloucester MA

Project: Wrote a Communications Agent program that runs in background and forwards messages across async (serial port), TCP and X.25 links. Wrote assorted test programs, including network connectivity, status reports, and remote file access. And lots of documentation.

Computers: Tandem S2 (Sys/VR3), Sun Solaris, Esix (Sys/VR4), etc.

Nov 1989 - June 1992: Digital Equipment Corporation, Littleton MA

Major projects: Ported network management agent to an assortment of computers and added to its capabilities. Wrote documentation and simplified demos of the use of SNMP and OSI protocols. Tested and documented techniques for doing X-Windows across various network links. Developed and taught a short course in SNMP agent writing. Developed "proxy" network management agents for several subsystems, including a plant management system and IBM's NetView (SNA) package.

Secondary projects: Developed debugging and auditing tools for various network and communication packages (especially SLIP) and developed associated diagnosis, installation and data compression routines; helped set up and maintain an assortment of network links; developed performance measuring code for various network applications. Helped develop tools for making SCCS more usable. Built assorted diagnostic and reporting tools for TCP/IP networks.

Computers: DECstation 3100 and 5000 (Ultrix), HP 9000 (HP-UX), Silicon Graphics, Sun 4, Convex (IRIX), Alliant, Apollo, IBM PC, and others. Languages: C, Bourne & C shells, perl .

June - Aug 1989: Prime Corporation, Milford, MA

Designed and developed software for automating the installation, configuration and administration of Unix systems. This included tools to build kernels, configure disks and file systems, install various packages (such as uucp, sendmail, lp, lpr). Part of the task involved developing a portable menu oriented command language based on the termcap/terminfo/curses package.

Nov 1987 - Mar 1989: Mitre Corporation, Bedford, MA

Major project: Participated in multi-vendor development of OSI network management tools. This involved working with the OSI Network Management Working Group (attending meeting, criticising documents, maintaining the mailing list); developing a graphics user interface on Sun workstations; writing a wide assortment of related software (network agents, diagnostic and test routines, report generators, etc.); helping run a booth at a trade show.

Minor projects: Installed, tested, debugged X-windows on Sun workstations. Tested and compared network management tools from several vendors. Installed and maintained various electronic mail, news and bulletin board packages on an assortment of computers. Developed security testing software and guidelines for networked Unix workstations. Wrote proxy agents to interface with several vendors' proprietary network management systems.

Computers: Sun , Vax, IBM PC; OSs: Unix BSD, SunOS, Sys/V, Xenix, MS/DOS.

Aug - Oct 1987: Digital Techniques Inc, Burlington MA

Installed VRTX (a small real-time kernel) on 8086/80186-based embedded computer; developed C libraries; wrote translator from several graphics languages to Digital Techniques' proprietary language.

June - July 1987: Prime computer, Framingham MA

Designed and implemented diagnostics package for Unix (Sys/V) kernel; coded, debugged and augmented interactive Unix kernel debugging module.

April - May 1987: Interactive Systems Inc, Boston MA

Installed and debugged AT&T's Basic Network Utilities on IBM PC/RT.

June 1985 - Feb 1987: Codex Corporation, Canton MA

Installed, maintained, and taught engineers to use electronic mail and bulletin board systems; interfaced them to several in-house email and file transfer systems.

Developed menu-driven backup system for networked Unix workstations.

Wrote installation, startup, and run-time packages for VRTX (a small real-time kernel) to help supply a consistent platform for software developers across a wide range of VMEbus-based boards.

Wrote general purpose downloading program to hide the complexities of various LANs and on-board monitors.

Wrote portable line monitor and login program to allow the use of Unix ports freely in either direction without super-user privileges.

May 1984 - June 1985: Codex staff position at MIT's Project Athena:

Designed and built network operating system; used to provide network versions of Unix utilities like vi, cp, make, grep, kill, etc. This was a layer on top of the network and the single systems, that merged all their file systems into a single heirarchy, provided for local control over outside access, and gave Unix programs access to all the machines' resources without any source-code changes.

Designed and built network performance monitoring tools.

Ported the "C gateway" to Motorola's VME/10 workstation; added serial link driver to its list of interfaces.

Feb 1983 - Apr 1984: Intermetrics Inc, Cambridge MA

Wrote design specs and proposals for an Ada-based distributed system; analyzed the feasibility of designs for specific hardware.

Designed and wrote software for managing distributed industrial plant monitoring system; debugged comm routines for various physical links.

Nov 1980 - Dec 1982: Paradyne Corp, Largo FL

Ported several vendors' C compilers to IBM mainframe for use as cross-compilers for minicomputers. Wrote C run-time libraries for IBM VM/CMS system and several embedded microprocessors. Wrote emulator for Z8000 microprocessor. Helped to convert an assembly language engineering department to using C.

Jan 1979 - Nov 1980: DASD Corp, Dallas TX (worked in Florida)

Software consultant for large aerospace firm; developed interactive database support software; developed interactive user interfaces to replace keypunch operations.

Large software conversion project (IBM DOS to OS/MVS) for Broward County.

1974 - Nov 1978: University of Wisconsin, Madison

Manager and chief programmer for interdepartmental minicomputer lab; coordinated schedules; developed math, comm, and graphics software for other researchers; technical consulting and help in research design.

Helped design, build, and document medical database system on Univac 1100 mainframe. Languages: Snobol, Fortran, Algol, Cobol.

Implemented and supported an assortment of programming languages for the central campus computer center, including Algol, Snobol, Lisp and Trac.