Professional Bio

Eric Armstrong
This document has the following sections:
See Also: Publications and Ideas.
TimeLine
- 2001
- Currently participating in design and construction of an automated FAQ
knowledge base at Sun.
- wrote LinkCheck -- combined the link-processing facilities of LinkFix
with the HTML-reporting and statistics accumulation of DocCheck to create
a batch-mode link checker suitable for large, multi-user installations,
where documents are maintained in separate locations and combined together
when published to the web.
- wrote LinkFix -- a program that rewrites HTML files after modifying
as directed, using regular expressions, removing links with nothing to
click on and, if asked, unlinking anything that references a non-existent
file.
- revised XML tutorial at http://java.sun.com/xml/jaxp-1.1/docs/tutorial.
extended it to cover XSLT, filters, and filter chaining. Published in
HTML and PDF.
- DocCheck utilities package for checking Java source code API comments
published: http://java.sun.com/javadoc/doccheck
(Java)
- Covered the Knowledge Technologies conference, and wrote an as-yet-unpublished
series of articles on the future implications and technological-unerpinnings
of the semantic web
- Stub-generator program to create api-complete, code-free versions of
Java source files (Java)
- 2000
- Covered JavaOne conference for JavaWorld
- Java "Web Start" Client and Servlet with HTTP messaging that displays
localization glossaries stored in XML. (Displays lists of terms in two
user-selectable languages. Sorts based on selected locale. Allows adding,
deleting, and changing terms. Atomic data file updates in a background
task during quiet times. Stores user settings in cookies. Began with HTML-
forms front end.)
- Participation in Douglas Englebart's Bootstrap Colloquium at Stanford
(http://www.boostrap.org)
- Initiated Open Source Effort for maintaining source code in XML (http://extende.sorceforge.net)
- DOM section of XML tutorial
- 1999
- Covered JavaOne conference for JavaWorld
- SAX section of XML tutorial
- DocCheck application to identify errors in JavaDoc comments (Java)
- Automated localization procedures at Sun (Perl, Csh)
- 1998
- Covered JavaOne conference for JavaWorld, and wrote several articles
- API documentation, Sun
- Program to automatically generate missing comments based on inspection
of method names. (Java)
- 1997
- The JBuilder 2 Bible, IDG Books A Java tutorial using the JBuilder IDE,
including an A/I application (Othello) and a tree-structured personal
project planner (tracks tasks for one user and predicts ending dates).
(Java)
- 1996
- Help Systems author, Siemens Rolm
- Project Manager on one project.
- 1995-1990
- Developer/Writer, Oracle (reference manuals and FrameMaker-->InterLeaf
conversions)
- 1990
- Generic tree-library, Ashton-Tate
- 1989-1987
- Contract programming for document-development support, at Sun, East
Coast (C, Awk, sh, csh)
- Reengineered voice mail system, Genioss (PL/I)
- 1987
- Production version of outliner delivered
- 1986-1985
- Founded company to developer outliner productivity software (2 co-founders)
- Focused on marketing, product design, and usability testing
- 1984-1982
- Major Opportunities Team, Data General (Benchmarks, Application Design,
Presentations)
- Demo of Colorized Office Automation Software (Forth)
- "Expert" Expert System (Prolog)
- Voice mail demo (C)
- Client-side terminal emulator (C)
- 1981
- Developer, Data General
- Tie for 5th in international computer-Othello competition (SP/Pascal)
- Excecution-time profiler (SP/Pascal)
- Multitasking library (Assembler)
- 1980
- Field Consultant, Data General
- Performance consultation and pre-sales presentations
- 1979
- First version of AI program (Othello) (MP/Pascal)
- 1978-1976
- Post Graduate work, Computer Science, Ohio State University, while
working as systems admim/systems analyst (PL/I, RPG-II, Data General "CLI"--a
command language interpreter featuring recursion, no loops)
- 1972
- Undergraduate degree, "Techniques of Analysis": Philosophy, Political
Science, Psychology, General Systems Theory, Mathematics. (Abstract Algebra,
Topology, & Logic). Ohio State University.
Professional Background
In the 70's, I was attending Ohio State University. I minored in Philosophy,
Political Theory, Systems Theory, Mathematics, and Psychology, rolling them
all into a degree under the heading: "Techniques of Analysis: Methods for Defining
and Resolving Problems". (My middle name is "eclectic".)
The systems theory work occurred in a variety of departments, since many departments
seemed to have one course devoted to a systems theoretic view of their subject
matter. It was in this courses that I was exposed to the concepts of feedback
loops and unpredictability of large, complex systems. (Forrester was particularly
clear in this regard, as I recall.)
I was exposed to computers during my work in the Political Science department
(where I mainly concentrated on Political Theory). It was then that I saw the
computer's potential for simulating complex systems in order to help us anticipate
otherwise unforeseeable reactions to policy interventions and figure a way out
of the kinds of messes that were already on the horizon -- problems which are
even more acute today.
So the reason I got into computers in the first place was to use them as a
tool to augment human reasoning.
After doing graduate work in computer science, I experimented with "artificial
intelligence", in the form of a game program that did a tree search. It implemented
alpha/beta pruning and original evaluation heuristics. It performed quite well
in international competition: It was the first program to extend the search
horizon for forced moves (Hans ____ at Carnegie Melon later wrote a paper on
the subject). It was also the only program to "play like a human" after securing
an initial advantage. (Most programs at the time worked hard to get a good position,
but were incapable of effectively capitalizing on it afterwards.)
As a result of the forced move searches and its unique heuristics, the program
managed to completely "wipe out" its opponent on two occasions -- the only tournament
wipeouts ever recorded in competition. (One of them was against David Levy's
entry. David, famous for his $10,000 bet that no computer would beat him at
chess by 1980, was running a program written by one of his company's programmers
-- a program that happened to be using the same algorithm that early versions
of my program had used -- and that later versions had been designed to beat.)
At bottom, however, the program was still fundamentally a "brute-force" program
-- which meant it was not "reasoning" in any form that we could hope to learn
from or use to improve ourselves. Despite its significant accomplishments, therefore,
it was still profoundly "unsatisfying", because it had not achieved it's primarily
goal of augmenting *human* intelligence. (I had originally hoped to use the
playing strength it developed to produce an infinitely patient teacher -- but
that vehicle could not be built on a brute-force chassis.
It was around this time that I began to value the concept of "man/machine symbiosis".
It struck me that one way to arrive at good symbiotic mechanisms was to set
up some sort of a war game where one computer acted as the playing ground, and
other "players" (who might consist of a man, a machine, or a combination) competed
against each other. It struck me that the right combination of strategic thinking
by the human and detailed execution by the machine would probably produce the
winner, and the game would provide the means for identifying just which method
of interaction was the best.
After doing the artificial intelligence work, I wound up at Data General. While
there, I wrote a multi-tasking library in assembler and an execution-time profiler
for programs. The last year of development on the AI program had been devoted
mostly to performance optimizations. That experience, coupled with the systems
optimizing I had been doing out in the field, eventually led me to participate
in their Major Opportunities division, where we gave presentations, ran benchmarks,
and undertook any technical task necessary to close large business deals.
Because of my interest in computer languages (at last count, I had learned
some 20 of them), I wound up in a 3-week project in which we had to produce
a complete set of demos for a new computer system, for which the operating system
was not yet ready! We used Forth, and I became close friends with the 4 other
fellows who participated in that project.
As the deadline loomed, we were there pretty much around the clock, so we got
to know each other pretty well. I still vividly recall the final moments before
the exhibition. The marketeers were out on stage giving their slideshows. When
the finished, the panel behind them would swing up like a garage door, exposing
all the new computers and all the demos we had written. While they were speaking,
we were sitting in that little room, frantically putting the finishing touches
on the code! The last of us (me!) finished without about 10 minutes to spare.
Then the door swung up, the customers came in, and we proceeded to give the
demonstrations.
During this time I also wrote a small voice mail application in C and a terminal
emulator for the client side of an early client/server prototype. The company
sent me to Toronto for a week to learn Prolog. When I got back I prototyped
a small "Expert" Expert System. The system kept track of who was knowledgeable
in what subject areas, and kept track of subject-area relationships, so that
the "closest reasonable" expert on a given topic could be found.
While at Data General, I began looking a directory trees as hierarchical data
structures, and realized I could use those same constructs to organize the large
volume of action items for my software projects. While working on one module,
I would typically have ideas regarding several other modules -- the hierarchical
structure gave me an easily- manipulatable outline I could use to record the
action item. Then, when I started working on a module, all the ideas that had
occurred while working on other modules were right at hand.
I did one prototype using directory names and command scripts, and latter a
second prototype using Basic and atomic file manipulations. Eventually, I started
a company to develop outliner programs. (The goal, as with the bootstrap project,
was to build productivity software, use it to be even more productive, and take
advantage of the positive feedback loop!) Our eventual result, StreamLine was
a technical triumph, but a marketing disaster. It was good a general purpose
tool, but did not solve any one problem so completely as to be compelling. I
learned an important lesson from that.
I vividly remember my experiences when trying to communicate the value of an
outliner. I would explain to people and they would reply "But I can do that
with a text processor." It was almost impossible to make them realize just how
much more easily they could do it in an outliner. Eventually, I'd get some to
try it. Then they would say, "This is great! I don't know how I got along without
it!"
It's humorous in retrospect. But it was also frustrating, because the very
next person I spoke to went through the same reactions. And the next one. And
the one after that. I could never seem to get the idea into their heads! (Eventually,
I got good at doing that, but it took 2 years before I figured out how to get
their attention in 30 seconds, pique their interest in a couple of minutes,
and get them to sit for a demo.)
I did some consulting work at Sun during this time period, and wound up reengineering
a voice mail system for a subsidiary of Data General in Dallas, Texas. That
experience taught me the value of keeping a design journal, and brought vividly
to light the importance of being able to answer "Why?" when starting a page
after page of "mystery code".
After moving to California, I worked at Oracle, where I became a writer. The
patient editors there poured so many tons of red ink on my early manuscripts
that you could barely find the text. But they had found that it was easier to
train a programmer interested in writing than it was to teach a writer who didn't
understand programming. The collaboration worked, and I became a writer.
I then had a stint authoring help systems. Again, the programming experience
was helpful, and I began to get good at communicating information in a hypertext
medium.
By this time, I was looking forward to getting back to programming. When the
opportunity came up to author a book on Java, I jumped at it. The result was
The JBuilder 2 Bible, which taught Java from the ground up, using an an IDE.
It was designed as a community college textbook, as well as a self-help book.
It got *great* reviews from people learning the language -- the people it was
aimed at. Unfortunately, the editors' decision to call it a "bible" caused hard-core
techies to pick it up and come away dissatisfied. (I begged them to change it,
but they had the final say). I also wrote several articles for JavaWorld during
this time period.
At the moment, I'm contracting at Sun, where I authored the XML programming
tutorial at java.sun.com/xml, and where I also wrote several applications to
automate the document production and localization processes. (The tutorial has
also received great reviews. Several people said that it is the best thing they
have seen on the subject to date.)
"Extra-Curricular" Projects
Other projects I'm working on (only one at any given time):
- Weight Training book
Most weight lifting books are written for the body builder. But little has
been written that describes an effective routine that augments daily activies,
to improve health, fitness, and sports peformance, without the fatigue and
ennui associated with overtraining. Avoiding the symptoms of overtraining
is still a big issue, but I have developed an effective, minimal-time routine
after years of experimentation and study. (Out of the research for that book
came a design for truly effective abdominal exercise equipment. Working on
that now.)
- Nutrition/health book
I started focusing on writing it an article at a time, so I get bits and pieces
published, and eventually collect it into a book. Making a little progress
frequently is working out better for this project than trying to find a block
of time.
- Nutrition-systems model
I am convinced that a nutritional approach to healing is a serious possibility,
but I am equally convinced that a large scale computer model is necessary
to do it. With such a model, it should be possible to to adjust nutritional
inputs in a way that mimics the observed symptoms, and use the information
to to generate a targeted nutritional protocol that addresses *all* of the
observed symptoms -- minor as well as major. It might also let us predict
the health consequences of the "toxic nutritional environment" we are living
in (as described by the head of one department from a large university on
the east coast. (My few attempts at creating a nutrition model made me realize
that we need an "language" that lets us specify what we know, or think we
know, in abstract terms -- a mechanism that lets us track the evidence for
what we think is true, make corrections as our understanding grows, and use
the model to find connections that might otherwise elude us. I am convinced
that the project needs a deep mathematical theoretician, though. I hope to
find one some day!)
- Tune Teaching program
A program that teaches people to learn tunes "by ear". The idea is to turn
music into a *language* people can use to join in musical dialogues with others,
and grow a sense of community. (Rather than building a community around a
golf course, why not around a dance hall? Hold dances once a week, so people
get a chance to meet each other. The sense of community that results from
the social interactions may well be fundamental to regaining a sense of ethics
in business and politics.) Defining a notation that combines XML for musical
structure and ABC-notation for musical notes to use as the basis for the program.
Goal is to publish the notation and create a new standard.
- Learn By Ear series
A series of books (with companion CDs) that helps people learn different kinds
of music "by ear". The first half teaches the principles of learning
by ear, and introduces the music style covered in that book (Irish, Greek,
etc.) The second half has the sheet music for the musical phrases contained
on the CD, combining them into larger and larger parts until eventually the
whole tune is mastered.
- The Bootstrap Project
Aimed at creating knowledge repository systems that augment mankind's ability
to solve complex problems. This project combines my interest in knowledge-mining
systems and source code management! (www.bootstrap.org/colloquium)
- Source in XML
A project aimed at maintaining Java source code in XML. Such a project would
bring the many benefits of hierarchies to source code, not the least of which
would be the potential to eliminate the need for braces and end-comment marks.
Personal Interests
- Music camps.
There is a great one run by Lark in the Morning (www.larkinam.com). It's in
the Redwoods in Mendocino, 8 miles from the Ocean. About 350 classes a day
in every folk instrument and or folk music style you can name. Impromptu sessions
and at least two different kinds of dancing every night. Really awesome. Gaelic
Roots in Boston is also superb.
- Music
Took up Irish bouzouki, bodhran, tin whistle, and flute. Learned a few tunes
on each. (Slow, but I have fun.) Returned to the guitar for a while, worked
on singing, took up the fiddle, and now working on bagpipes. I love them all
so much, it's impossible to choose! (But that bagpipes have the advantage
that, with an electronic chanter, I don't annoy the neighbors. :_)
- Irish dance.
I got pretty awesome considering I only did it for 5 years. I looked like
an expert, unless you were familiar with *real* dancers. But the number of
people I could fool into thinking I knew what I'm doing rose considerably.
- Martial Arts
Awarded black belt in Jung SuWon (an advanced spiritual version of Tae Kwon
Do) in January, 2002.
- Meditation Drumming
The right sort of music elevates the spirit. Rhythmic drumming and chanting
seems to open doorways in the soul that are usually closed. I greatly enjoy
drumming in that kind of setting, although opportunities are rare. (At its
best, dance and music are like that, too.)
- Positive Music
- In Cape Breton, a small island near Nova Scotia, they've kept the ancient
Celtic traditions alive. There, the bagpipes are for dancing, rather
than marching, so they have a sound unequaled in rhythmic complexity.
The step dancing, too, is for rythmic percussion. There are no set steps
or grand visual displays. Rather, the dance is a form of drumming. Tres
cool.
- The traditional tunes from the Greek islands are full of arabian influences.
Moving, fascinating scales (some with 3 or 4 half steps in a row!) and
great rhythms (7/8 and 9/8, as well as 4/4).
- Perhaps the most positive music I've heard, on only rare occasions,
consists of devotional chants from India combined with taksim ("tahk-seem"),
or free improvisation on the scale, by the musicians. This combination
is a ticket straight to ecstasy. The chant builds a rhythm and an unconscious
awareness of the scale. The individual solos take on creative leaps, while
the other players droning in the background maintain a hypnotic trance.
I've seen it alternate between the chant and a round of taksim (where
each player takes a turn) again and again. The combination transports
you to other worlds, where you breathe ecstasy.
§ Home ·
Health · Software
· Dance ·
Essays · Links
§
www.TreeLight.com