Putting Pen to Paper
and
Fingers to the Keyboard
Various
Magazine Articles
Milstar
TPOCC
X-SAR
Code 521
EPOCH
Various
- Forget Crazy Earth, Look to the Future:
Voyager and Fortran 5 (2024)
- Were the Voyager spacecraft which flew by Jupiter, Saturn, Neptune,
and Uranus programmed in Fortran 5? No.
- In Defense of MP3 ID3 Tags (2024)
- ID3 Version 2 tags are not as complex as you think.
- Primality Testing (2018)
- 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 (2018)
- 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
"Primality Testing"
software I developed.
- Integer/Prime Factorization (2021)
- 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
overflows.
- TPOCC and Object-Oriented Programming:
A Tutorial/Proposal (1991)
- This lengthy, 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.
Magazine Articles
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. (c. 1978)
- 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
knows ...
- "Permutations on a TI-58 Programmable
Calculator", nonexistent and unpublished. (c. 1978)
- 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. (1985)
- 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,
F$PARSE()
and F$SEARCH()
.
- "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
getopt(3)
function.
- "C Packages",
The C Users Journal, June 1992.
- Implementing Ada-style packages in C. (Based on a
memo I wrote.)
Milstar
On this year-long project, 1984-1985, we built racks of equipment to
automatically test Milstar satellite
(Wikipedia)
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
TPOCC
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
(02/08/1990)
- Fending off attacks on my ego!
- Hashing Out XDR and Miscellaneous Other
Topics (04/02/1990)
- 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
Harmful (07/26/1991)
- The "not-invented-here" syndrome has some advantages!
- TPOCC Configuration Monitor Design
(1991)
- Object-based design in C.
- Non-Blocking I/O, One Way or Another
(10/28/1991)
- VMS-like queued I/O under UNIX.
I also wrote:
- TSTOL Reference Manual
(1993, includes X-SAR additions)
- The reference manual for TSTOL, the TPOCC version of NASA's Systems
Test and Operations Language (STOL).
X-SAR
A joint venture of the United States and European space agencies,
the Spaceborne Imaging Radar-C/X-Band Synthetic Aperture Radar
(SIR-C/X-SAR)
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
(05/21/1992)
- A proposal to use Tcl/Tk as the basis for the XSAR GUI.
- A Prototype XSAR Menuing System
(07/07/1992)
- 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
Buttons (09/04/1992)
- Generating screen dumps from within an X application.
- Solving the History Replay Problem
(1992)
- A generic telemetry decommutation library?
Code 521
- Extensible I/O (03/14/1994)
- A proposal for an extensible
I/O package that dynamically loads application-specific, user-level
device drivers.
- Generic Card Debugger
- Proposes a script-programmable card debugger designed to exercise
and monitor in-house-designed VLSI ASICs mounted on VME cards; see
gentle.
- 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
(02/23/1995)
- The advantages of using Tcl scripts in place of application-specific
configuration files.
- You're an 8-Track Kind of Guy
(03/15/1995)
- A proposed, Tcl-based design for the ETS Tape Recording Subsystem software.
EPOCH
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
(09/30/1997)
- Proposes and evaluates three methods of linking a customer's legacy
application (DECnet, VMS) with EPOCH (TCP/IP, UNIX).