Senior software developer with extensive experience in satellite image
processing and spacecraft monitoring and control. Oh, and my
CORBA/FTP/HTTP/Forth networking software runs on a Nintendo DS.
- High-Level Languages:
C++ (GNU and Visual C++),
- Assembly Languages:
- Operating Systems:
- UNIX (various flavors including Linux), Microsoft Windows, PalmOS, VAX/VMS,
VxWorks (68K-based real-time OS), Intel iRMX (80x86-based real-time OS),
- CORBA Middleware,
Scanner (LEX) and
Compiler (YACC) Generators,
UNIX utilities (AWK, CURSES, TROFF, etc.), VAX/VMS utilities (FMS, SMG,
Internet Protocols (FTP,
HTML (you're reading it!),
- Personal Projects:
- (1) Wrote a web server in
- (2) Added networking
Integral Systems, Inc.
(1987 - 2007)
5000 Philadelphia Way. Lanham, MD.
Software developer on ISI's next generation, CORBA
middleware-based, EPOCH IPS satellite telemetry
and command system. (2001 - 2007)
- Designed and developed the spacecraft command database server.
- Ported EPOCH's proprietary-protocol-based, telemetry processing
applications into a TAO/ACE CORBA environment.
- Upgraded telemetry processing and simulation software for new satellite
- Designed and developed a Scheme-/CORBA-based
parameter calculation program that directly executes the nearly 800
Scheme equations supplied by the satellite manufacturer.
- Created a Python tool to convert
customers' existing display page definitions (which used ISI's
proprietary page description language) to XML for importation by
our Windows-based EPOCH Client.
- Developed my own lightweight
CORBA library and code generator for independent testing of application
- Wrote numerous tools
in C, C++, and Python on Unix and Windows that allow on-site and remote
monitoring and control of our system for testing purposes.
Software developer on the distributed, object-oriented
successor (Version 3) to ISI's EPOCH satellite
control system. (1996 - 2001)
- Ported legacy telemetry processing applications into a networked C++
- Maintained and enhanced the telemetry processing and simulation software,
including upgrades for new satellite types.
- Developed a C++
network communications library.
- Wrote networked
interfaces to and a software emulator for the
IN-SNEC CORTEX Telemetry and Command
- Developed numerous
tools in C, C++, Tcl/Tk, and Java that allowed on-site and remote
monitoring and control of our system for testing purposes.
Software developer on NASA's EOSDIS Test System (ETS),
which simulates various external interfaces to the Earth Observing System
Data and Information System
(1995 - 1996)
- Added ETS enhancements to selected LZP-II software applications (see below).
- Participated in the design of a telemetry data simulator to be implemented
- Developed an extensible,
FTP server toolkit used to implement an embedded FTP server that
accesses files via an
in-house file system.
- Created an embedded,
user-programmable HTTP server
that permits our systems to be monitored and controlled from a World Wide
Software developer on LZP Phase II, a NASA R&D project to
build a high-rate (50Mbps) packet processing system based on VLSI hardware and
embedded software running on multiple 68040 processors.
(1993 - 1995)
- Developed a number of library functions used to help port the existing
PDOS-based software to VxWorks and to allow the testing of embedded
software under UNIX.
- Developed an
extensible I/O package
that dynamically loads application-specific, user-level device drivers.
- Used the I/O package to add device-independence to the programs that sort
and assemble packets into data sets.
- Developed an embedded,
and a workstation-based,
user-programmable GUI used
during system integration and test.
to Computer Sciences Corporation (Laurel, MD) on
an ESA project to build a distributed, VAX-based control center for a
shuttle-borne radar instrument. (1992 - 1993)
- Ported parts of the UNIX-based TPOCC software (see below) to VMS.
- Contributed to the writing of the customer's Architectual Design Document
and of our own Detailed Design Document.
- Used prior TPOCC, C, UNIX, and VMS experience to assist other members of
the group in the design, code, test, and integration of various subsystems,
including the X/Motif-based GUIs, the real-time telemetry and command
software, and the database management utilities.
- Wrote many general-purpose and project-specific
- Developed tools and simulators used to test our software and to integrate
it with our customer's systems.
- Redesigned and coded the
program that arbitrates the primary/backup status of the redundant
- Supported the reverse
engineering of the existing TPOCC software and, when time permitted,
worked on upgrading that software to ANSI C standards.
Programmer/analyst for TPOCC
Payload Operations Control Center), a NASA R&D project to build a
generic satellite control center based on distributed UNIX workstations
and readily adaptable to new missions. (1987 - 1992)
- Developed an extensible, network-based, command language
server using UNIX LEX and YACC; the interpreter is now in use at a number
of sites, independently of TPOCC.
- Made significant contributions in the areas of display generation,
spacecraft commanding, and telemetry processing.
- Initiated and wrote 75% of the project's shared software library,
as well as most of the utility programs.
- Issued numerous memos
that allowed other members of our group to quickly come up-to-speed
on the intricacies of UNIX and TPOCC.
- Participated in the system and comprehensive design presentations and my
self-imposed, software documentation standards were incorporated in the
- Edited the TPOCC programmer's reference guide,
a large part of which I wrote myself.
General Electric Company, Space Division.
(1981 - 1987)
4701 Forbes Boulevard. Lanham, MD.
Senior software analyst for an image processing system built
and SPOT 1
satellite imagery. (1985 - 1987)
- Lead the team responsible for telemetry processing and geometric and
radiometric correction data generation.
- Prepared and presented the first build, integration, and test
demonstration of the project.
- Developed a number of tools, including a test environment that allowed
stand-alone testing of individual programs and an interactive, image
display utility that was widely used in the testing and verification
of the image processing hardware and software.
- Co-recipient of a $230K cost improvement award.
- Belonged to the core team selected to see the project through to its
completion (factory acceptance test and customer training) after the
closing of our facility.
Software analyst for an automatic testing system for various
digital system components that were to be placed on the MILSTAR communications
satellites. (1984 - 1985)
- Created the initial high-level design and structure of the real-time
firmware that resided in the Intel 80286 single board computers used
to control the test equipment.
- Designed, coded, and tested
the systems firmware,
including device drivers for IEEE-488 and RS-232C interfaces.
Programmer/analyst for the image processing system of NASA's
remote sensing satellite ground station. (1981 - 1984)
- Designed, coded, tested, and maintained a variety of programs, ranging
from real-time applications to file processing.
- Analyzed and documented the results of formal demonstrations of software
to our customer.
- Developed a number of interactive data analysis and display tools for the
Systems Engineering and Mathematical Analysis departments.
- Developed an automatic
structure chart generator which resulted in a $10K cost improvement
Laboratory for Pattern Analysis.
(1980 - 1981)
University of Maryland. College Park, MD.
Performed development and maintenance programming for various projects in
the areas of data analysis, image processing, and pattern recognition. The
applications included EKG signal processing (using the
WAPSYS waveform parsing
system), handwritten character recognition, and scene analysis.
B.S. Computer Science, 1981.
University of Maryland,
College Park, Maryland.
- "Faster than Run-Time:
An Optimized ASCII-to-Binary Floating Point Conversion Routine"
- in The DEC Professional, March 1985.
- "F$USEFUL: A Look
at Some Mundane VMS Utilities"
- in VAX Professional, April 1988.
- "Put the Power of DCL
into Your Programs"
- in VAX Professional, August 1989.
- "Enhanced Command Line
- in The C Users Journal, June 1991.
- "C Packages"
- in The C Users Journal, June 1992.
- Additional Writings
Association for Computing Machinery
and the following Special Interest Groups:
Programming Languages (SIGPLAN),
and Software Engineering (SIGSOFT).
(And previously: SIGAda,
Institute for Electrical and Electronics Engineers
(IEEE) and its