OBJECTIVE
Although I have basically retired from employment and am not looking,
I continue to develop software. I would tentatively consider working as a
part-time software engineer in a stimulating
environment, performing either quality assurance tasks or the design
and implementation of software systems that are used and appreciated.
SUMMARY
A highly experienced senior software engineer with an
outstanding ability to solve complex problems and develop quality
software, working independently or collaboratively.
A thorough, innovative, and pragmatic designer with a
reputation for rapid completion of reliable and efficient
implementations. A diplomatic and effective consultant.
Have demonstrated successful involvement with the full software development cycle,
including design, development, testing, debugging, maintenance,
enhancements, and documentation.
Have also dealt with modifications and debugging of legacy software.
TECHNICAL SUMMARY
Languages - C, C++, C Shell, Perl, JavaScript, lex/yacc,
HTML, SGML, Common Lisp (including object-orientation), VAX Pascal,
FORTRAN and other high-level, list-processing, macro, and assembly
languages.
Operating Systems and Environments -
MS Windows from 95 through 7 and parts of the MS Visual Studio;
Borland C++ Builder;
familiarity with MS Visual C++, Visual InterDev, and FrontPage;
UNIX, especially on Sun; VAX/VMS; PDP-11 with RSX-11/M; various other DEC
machines; Emacs on the PC and other computers.
EDUCATION & ACADEMIC WORK EXPERIENCE
Ph.D., Computer and Information Sciences, University of
Pennsylvania
- Designed and built an interactive graphical system for
graph theory
- Implemented an L6 list-processing system, based on its design
done at Bell Labs
- Developed a powerful cross-assembler for PDP-5/8 programs
on the IBM 7040
- Designed and implemented symbolic and octal debuggers for
the DEC PDP-5/8
M.S., Computer and Information Sciences, University of
Pennsylvania
- Developed an algorithm for the determination of maximally
complete subgraphs; this was implemented in IBM 7094
assembly language
B.S., Electrical Engineering, Massachusetts Institute
of Technology
- Wrote the Executive of the pioneering PDP-1 time-sharing
system; designed and implemented the pioneering
interactive DDT debugger for this machine;
these were done using PDP-1 assembly language
PROFESSIONAL EXPERIENCE
Self-employment, 2004-present
Designed, developed, and now supporting the software product
WHAT
(Wolfberg's Helpful Anagramming Tool), which is
really a toolbox of integrated tools which is a
powerful aid for word enthusiasts, especially Scrabble® players.
This high-end tool provides an innovative combination of a command language
with a substantial GUI.
Performed a full range of tasks for the product's life cycle:
- Responsible for conception/design, especially command language design
- Work with reviewers of the design
- Perform programming/development using Emacs and Borland C++ Builder on
a Windows laptop:
- parse WHAT commands "by hand", without a language tool
- use multi-threading to allow for the user to stop
processing for too much computation or for overly voluminous output
- produce multiple lexicons, using several developed programs and
shell scripts
- produce/enhance a dictionary (with definitions), based on prior work by others
- Responsible for QA, and coordinate field testing
- Write and produce extensive off-line documentation: user guide, tutorials,
quick reference, flyer, collections of examples, etc.
- In charge of marketing and packaging, including the necessary artwork
- Provide a website for the product - supported by editing HTML files
directly, and including the use of CGI/Perl scripts and JavaScript
- Distribute the product via the web and CDs
- Handle user donations via PayPal; Previously sold the now-free product via the web with various payment options, including credit cards
- Provide customer support: end-user support, maintenance, upgrades - with
occasional product releases
Belsoft, Inc., Lexington, MA, 1998-2004
A software products company specializing in
software tools to enhance programmer productivity.
As employee #2 of 2 for 5 years and then part-time consultant,
co-designed and co-developed EDGE, a source code text editor that includes
a C parser and is thus able to report on errors, etc. as a programmer is
writing, editing, or reading code.
Used primarily Emacs and Borland C++ Builder, but focused on computational
parts of the program, not GUI work. Involved with several tasks, including:
- Set up the framework for the program and established a programming style,
especially naming conventions for identifiers in the EDGE implementation
- Responsible for the lexer and macro processor; EDGE supports the
expansion of macros one level at a time if desired, so that users can
better understand why there might be problems in their source code;
developed the handling of include files;
authored a new algorithm to handle recursive macro calls
- Responsible for the semantic analyzer (for most of C and
for some of C++), where many errors can be detected,
but also, many questionable constructs can be noticed and warnings produced;
Gimpel Lint suggested many of the checks which deserved to be made
- Designed and implemented a timing profiler; used this with various test cases to locate areas of the parser which deserved speeding up
- Provided extensive QA testing of the product by authoring a large
collection of test cases of small C and C++ programs, but also worked
with some large preexisting packages of code
Self-employment, 1997-1998
Intentional personal catch-up time, including marriage, plus
the following technical activities:
- Selected and acquired a state-of-the-art laptop,
became familiar with the PC, Windows/95, MS Visual Studio, and many other
PC applications.
- Ported several C programs to the PC and created new C programs - see
"Independent Software Projects" below.
- Produced a continuously active and maintained
mostly-textual personal web site that
includes the use of frames, CGI/Perl scripts, and JavaScript, using
Visual InterDev to support the site.
Interleaf, Inc., Waltham, MA, 1991-1996
A software products company specializing in
electronic publishing.
With job title Member of the Technical Staff, served
on the Liaison and SGML development teams.
- Reviewed the API design and served as a quality assurance
engineer on the development team for Liaison, a
cross-platform, object-oriented messaging substrate for
Interleaf's product line.
- Responsible for customizing the SGML parser, a large C program -
enhancing it and porting it to several platforms.
- Designed and implemented an SGML "Visualizer"
in Lisp for graphically presenting DTD structure.
- Co-designed LDL, a layout definition language to control
the formatting of SGML documents; implemented a parser
for LDL. Began to implement a user dialog to relate
formatting with SGML elements, using object-oriented LISP.
Compass, Inc., Wakefield, MA, 1969-1991
A software products company specializing in
languages and compilers.
With job titles Senior Analyst and Staff
Scientist, served as an individual contributor,
collaborator, technical leader, and consultant on a variety of
in-house, commercial, and government projects.
- Co-designed and implemented the PRL compiler tool for
pattern-directed tree walking as the basis for code
selection. Performed collaborative language design and
compiler writing. A yacc-like Compass tool was used.
- Designed and implemented the Compass Memory Manager, used
by various Compass projects to control the acquisition
and release of pools of memory in a C environment.
- Designed and implemented an improved user interface for
controlling the Compass DTB data structure tool. Ported
DTB from UNIX to VMS, and rewrote the code generator.
- Chief programmer on a project which converted
ComputerVision's 6 million-line CADDS 4X CAD/CAM product
to run on Suns; responsible for the aspects of this
conversion relating to global variables, especially
re-hosting the system with many overlays to a flat
virtual address space. Wrote a parser of loader command
files.
- Wire Verification System for AT&T
- Designed, implemented, extended, and maintained
two generations of the VIPER system of programs
for the DECsystem-10 which produce continuity
tests of backpanel wiring for the Western
Electric No. 4 ESS long-distance switch.
- Ported the VIPER system to VAX/VMS,
re-engineering the MACRO-10 code into C.
- Co-designed and co-implemented the software for
the MONGOOSE backpanel tester, which replaced a
vendor-supplied program. This saved the company
significant time and money by reducing the
duration of a test from 24 hours to 20 minutes!
Enhanced the precision of the diagnostics,
facilitating rapid repair of faulty wiring.
- As a consultant, designed a real-time multi-user process
control network for Foxboro Corporation, and designed an
emulator of a telephone switching computer for ITT.
- Co-designed and "prototyped" the AMBIT/G
two-dimensional programming language.
- Packaged and made product-worthy the AMBIT/L 2-D
programming language list-processing system.
- Designed and implemented: an overlay linking loader, a
run-time segmentation and overlay system featuring
off-segment dynamic linking, a device driver, and printer
and plotter spoolers.
INDEPENDENT SOFTWARE PROJECTS
- Wrote and ported programs to play BOGGLE®, solve
difficult word puzzles, and aid in the preparation for
playing competitive Scrabble®.
Initial versions were written in FORTRAN and MACRO-10;
these are now in C. The lex tool was used in the first
generation of a Scrabble®-oriented anagrammer.
- Statistician for the Lexington, MA and Exeter, NH Scrabble® Clubs.
This role also entails the production of weekly newsletters, which
are issued on the web, by e-mail, and in hard copy.
This work is supported by shell scripts, several C programs,
and website files including CGI/Perl scripts.
- Webmaster for Boston-area Scrabble® and badminton clubs.
- Designed and implemented a PDP-8 program to referee a
Kriegspiel Chess game.
- Computerized the Concord Newcomers Club Gourmet Group to
organize dinner/party evenings to enhance meeting others.
This was done using FORTRAN.
PUBLICATIONS
Numerous manuals, documents, project reports, and published
papers (DECUS, ACM, IEEE, etc.).
A complete list is available upon
request.