I formed Lexikos in the mid-'80s to build AI software for analyzing English text,
a research area we still follow. My core skills - formal modeling, problem
analysis and system design - arose earlier. Their origins may show how I work
(and why) better than my more traditional resume
(also in Word).
Problem Analysis; Solution Synthesis
My AI interests first arose at MIT, where I majored in Systems Analysis and
Modeling. With my new Masters (in ME), I found work at Draper Labs simulating
NASA's Apollo and Skylab vehicles. Once our team was celebrating a major
release and feeling cocky. "We can simulate anything", someone bragged, and
we debated various examples. The most compelling such task to me seemed "a
person reading", and I resolved to see how such a simulation might be done.
That quest led me back into an Sc.D. program at MIT's AI Lab, where coding concepts
helped explain how human minds work - in vision, language, reasoning, learning,
planning, etc. The combination of simulation, psychology, linguistics and engineering
showed me the power of formal modeling languages, especially those like LISP or XML
which one extends to fit every new problem. Java taps those same powers
with its wealth of polished, easily extended class libraries.
Ever since, I favor this pattern for software R&D: given a problem, I analyze
it enough to define primitives for a task-specific "modeling language", then switch
into synthesis mode, and embed them in a mini-interpreter. Then I "script" in that
custom language to meet the design goals, optimize the results for efficiency, and
I'm done. Such layered designs - like good simulations - are very robust. If
design goals change, or even basic models, they can readily be adapted.
Requirements and Design Processes
I next ended up at Wang Labs, just as work started on their Word Processor.
I wrote its first few editors, and added in keyboard macros (and primitives)
making them programmable. The macros aided WP's gigabuck sales, helped it last
longer as a product, and got me two software patents. My first 8080 WP editor
ran in 16kb, workstation-OS included. WP grew up with later microprocessors,
as did I. En route, Wang exploded 30:1 in revenues, and at each stage of growth,
I learned from its ever-changing team-design processes, good and awful.
For my final seven years at Wang, I ran Directed Research in their Office
Automation division. We prototyped new technology - an early object request broker,
a virtual memory for Z-80s, early spelling and grammar correctors, document assembly
groupware, etc. As sole Software Architect in a division of 400, I worked for its
VP (5 in all). Besides technical management skills, I learned the power of clear
business requirements, and how to work with groups, use cases, design patterns and
operational constraints to clarify them.
Today, machines run far faster, but good design is no less challenging. It still
comes from people working in teams to build good models of the problem. Defining them
early and clearly for everyone is key to efficiency, often to success itself.
|