Putting Pen to Paper
Fingers to the Keyboard
These are articles that I submitted or had planned to submit to magazines.
The text of the articles is as-submitted, not as-published;
a couple of them were edited by the magazines, much to my distress!
- "Farmer Brown on a 6800",
incomplete and unpublished.
- An article I wrote about KIM-1-like subroutines for keyboard input and
LED display output on a Motorola MEK6800D2 Evaluation Kit—512 bytes
of memory! I had planned on submitting the article to one of the early
microprocessor magazines: Byte, Kilobaud, who
- "Permutations on a TI-58 Programmable
Calculator", nonexistent and unpublished.
- An article I wrote about a recursive, alphanumeric permutation
generator—for a TI-58 programmable calculator with printer! I had
planned to submit it to Byte, back when Byte
might have published an article like that. Although I don't know what
I did with the article, I still have the program itself.
- "You've Got a Tin Ear!",
incomplete and unpublished.
- Playing the blues on a Commodore VIC 20!
- "Faster than Run-Time: An Optimized
ASCII-to-Binary Floating Point Conversion Routine", The
DEC Professional, March 1985.
- A VAX assembly language function that reduced the daily CPU time
required by one of our programs from 2 hours to 20 minutes.
- "F$USEFUL: A Look at Some Mundane VMS
Utilities", VAX Professional, April 1988.
- FORTRAN implementations of the VMS lexical functions,
- "Put the Power of DCL into Your
Programs", VAX Professional, August 1989.
- Spawning a CLI subprocess and feeding it commands.
- "Turning a Tree Upside Down: Automatic
Structure Chart Generation", unpublished.
- Generating cflow(1)-like structure charts from VMS object modules.
- "Enhanced Command Line Processing",
The C Users Journal, June 1991.
- Enhancing the
- "C Packages",
The C Users Journal, June 1992.
- Implementing Ada-style packages in C. (Based on a
memo I wrote.)
- TPOCC and Object-Oriented Programming:
- This unfinished document started out as a proposal to use Eiffel on our
satellite control system, but ended up being an organized memory dump of
what I knew (at the time) about object-oriented programming.
- Primality Testing
- A lengthy discussion of how I independently "discovered" a long- and
widely known optimization when determining if a number is prime. I
should get out more, figuratively speaking.
- Fast Integer Square Roots
- Another lengthy discussion, this time about how I implemented a
borrowed algorithm for quickly computing the integer square root
of an integer, along with performance comparisons with other
algorithms. I needed this fast square root function for the
software I developed.
- Integer/Prime Factorization
- I happened to come across in Wikipedia a C++ program for reducing
an integer into the product of its prime factors, a process called
integer factorization. I wondered if the C++ program was
subject to overflow errors and, lo and behold, it was. I pored
over the program trying to figure out how it worked and then I began
developing a slightly different algorithm that would eliminate any
On this project, we built racks of equipment to automatically test Milstar
components. I wrote the systems firmware that ran on the embedded 80286
single-board computers; i.e., the core firmware used by the
application-specific tasks to communicate with each other and the outside,
off-rack world. This project was FUN!
- Universal Firmware Design
- Universal Firmware User's Manual
Jumping on the UNIX workstation bandwagon early, we developed a generic,
satellite control center for NASA called TPOCC (Transportable Payload
Operations Control Center). I wrote numerous how-to memos,
a sampling of which follow. These were informal, internal memos that
left our second manager aghast at my lack of professionalism.
- Networking for Netwits! (1989?)
- Written when I was much younger than today; read with a grain of salt.
- TSTOL Issues and Answers
- Fending off attacks on my ego!
- Hashing Out XDR and Miscellaneous Other
- A look at XDR on the network.
- Naming Conventions (02/05/1991)
- Fending off attacks on our code by folks not knowledgeable about C!
- Second-Hand RPC Timeout Code Considered
- The "not-invented-here" syndrome has some advantages!
- TPOCC Configuration Monitor Design
- Object-based design in C.
- Non-Blocking I/O, One Way or Another
- VMS-like queued I/O under UNIX.
I also wrote:
- TSTOL Reference Manual
- The reference manual for TSTOL, the TPOCC version of NASA's Systems
Test and Operations Language (STOL).
A joint venture of the United States and European space agencies,
the Spaceborne Imaging Radar-C/X-Band Synthetic Aperture Radar
was flown on two shuttle missions in 1994. We built the "one-shot"
(or two-shot) operations control center based on TPOCC (see above).
We ported the TPOCC Unix/C software to VAX/VMS and developed our own GUIs.
The port went smoothly, in large part due to VMS's relatively complete
implementation of the C Library and the BSD socket library—and
in small part due to my in-depth knowledge of TPOCC and my extensive
experience with VMS! Let me take a bow! Despite the project being
on a very tight schedule (which we met), it was a lot of fun and I got
to work with a great group of people. A few employees had travelled to
Italy to work out the requirements with our Italian customer (Agenzia
Spaziale Italiana) and, when they returned, they established a daily
"brewing of the espresso" ritual every afternoon!
- XSAR and the TPOCC Display Subystem
- A proposal to use Tcl/Tk as the basis for the XSAR GUI.
- A Prototype XSAR Menuing System
- Tcl in action: a rapidly prototyped, scripted, Motif menuing system.
- An XSAR Forms Library (07/10/1992)
- A Forms Management System for X Windows?
- Static X/Y Plot Hardcopies and PRINT
- Generating screen dumps from within an X application.
- Solving the History Replay Problem
- A generic telemetry decommutation library?
- Extensible I/O (03/14/1994)
- A proposal for an extensible
I/O package that dynamically loads application-specific, user-level
- Generic Card Debugger
- Proposes a script-programmable card debugger designed to exercise
and monitor in-house-designed VLSI ASICs mounted on VME cards; see
- C'est Moi! (02/16/1995)
- Shows how an early version of gentle was coupled with a Tk-based
GUI, moi, for the purpose of monitoring and controlling our VxWorks
systems. I subsequently developed a Motif equivalent to moi,
called plum, which resulted in a reworking of the display classes
so that the same status page definitions could be used by both the Tk and
Motif versions of the GUI.
- SCTGEN Scripting Language
- The advantages of using Tcl scripts in place of application-specific
- You're an 8-Track Kind of Guy
- A proposed, Tcl-based design for the ETS Tape Recording Subsystem software.
The TPOCC, X-SAR, and Code 521 memoranda above were printed and distributed
in hard-copy form to the intended audiences. In late 1996, I began working
in an environment in which E-mail was widely available and heavily used.
Consequently, self-contained writings like those above were replaced by
the back and forth of E-mail discussions.
- GLoC's DECnet Interface to EPOCH
- Proposes and evaluates three methods of linking a customer's legacy
application (DECnet, VMS) with EPOCH (TCP/IP, UNIX).