J. Craig Cleaveland
Freelance consulting, contracting, or teaching in the
areas of Web applications, Java, XML,
domain engineering, or financial planning applications.
Technical leadership; team player; creative and innovative;
software developer extraordinaire,
broad and deep technical expertise in Java, distributed
internet applications and groupware, software architecture,
specification-driven tools, application generators,
software reuse, domain engineering, design and specification of
languages, WWW publishing/programming, technology transfer,
and education (both course development and delivery).
I designed and developed an innovative financial planning and modeling application
for creating comprehensive financial models and long-term forecasts that go
beyond the scope of traditional spreadsheets and standard budgeting software.
The software has received rave reviews from customers and press, including a
Four Star rating from PC Magazine. The software is based on Java and DHTML and
deployed as a web application or desktop. See http://whitebirchsoftware.com.
I've taught Java, XML, and Program Generation courses for both
academia and industry. I've provided consulting and contracting
services to numerous clients including Rare Medium, Cedarpoint Communications,
Harmony Software, Progressive Solutions, Riverstone, TEST Inc.,
Caribbean Supplies, and Whitebirch Software.
Internet Games Corporation, CTO, 1996-1998
I designed and developed
a complete internet based multiplayer game network,
including the following features:
This site was sold to go2net and can be seen at
or through the Lycos site.
- Classic games such as Chess, Checkers, Backgammon, Othello,
Gomoku, and Boggle.
- Ratings for individual players for each game
- A completely automated tournament system
- A set of tools to aid a group of volunteers to
respond to complaints and remove or ban people from
Both server and client were written in Java.
Experience included security issues (SSL, encryption, ecommerce),
database issues, server monitoring and performance issues.
I also designed and developed related applications for
real time auctions, shopping shows, and chat networks
with customizable rooms. See
Digital Equipment Corporation, Member of Technical Staff, 1996
I spent about 11 months at Digital researching Java technologies.
I investigated different techniques for building distributed groupware applications,
including RMI, CORBA, and tuple-spaces. I created a number of
demonstration models showing how to create various
groupware applications. I also demonstrated how one
could develop a system for remote Java development environment and testing.
A secondary interest was Java performance issues.
I developed a number of performance benchmarks for use with
Digital's Just-In-Time Java compiler on Alpha machines.
AT&T Bell Laboratories, Distinguished Member of Technical Staff, 1983-1995
I've spent more time at Bell Labs than anywhere else and
enjoyed it very much. My contributions there fall in
three categories: Tools, Education, and Consulting.
Many of these activities are documented in external
I was awarded the Distinguished Technical Staff Award in 1987.
I designed and developed the following software tools for production use:
MetaTool: A tool for building application generators.
MetaTool is used at many AT&T locations for producing
a wide variety of application generators. MetaTool
(formerly called Stage) is trademarked and is available
commercially from Lucent Technologies. Consulting
services for MetaTool are provided by
WOODS and BriefCase: Tools for building software tools
consisting of small flexible data bases, user interfaces
and product generators. Both are used to produce data dictionary
tools, MR tracking tools, software reuse libraries,
application generators, documentation tools, and other
information management applications. BriefCase uses
an object-oriented database and X windows.
DCGS: An application generator for MML user interfaces for telecommunications
equipment. DCGS has been used by over 15 telecommunication projects.
Ring Simulator A tool used to describe SONET protection switching protocol
for ring networks. The tool also provided a graphical simulation environment
for testing independent of the hardware.
CAST: A module interconnection language, for describing software components,
their interconnections, and the communication mechanisms underlying
software connections. Used for constructing reusable software components,
and software architectures.
Tcl/Tk frontends: A tool that given a specification will generate
the C code for creating a Tcl/Tk interface, thus allowing users to
directly access the tool using the Tcl/Tk system. This tool was used for
MetaTool (see above) and a host test environment that was created
for CAST (see above).
WWW Tools: For the last 30 months at AT&T, I designed and maintained the
WWW site for the software reuse group. This included the transfer of a
paper newsletter to the web, the construction of domain catalog tools to
keep track of various assets, membership lists, and email discussions
for domain-specific user groups. Near the end I started working with
Java, at which point I decided I wanted to spend full time on Java.
I left AT&T at this point so I could find a job dedicated fully to Java.
Huffman: An application generator that will minimally encode
string data for DCGS and other application generators.
i51sas: A C-like structured assembler for the Intel 8051 line of chips.
I helped develop software education plans at AT&T. I organized
and developed a software engineering currriculum for a unique 2 year
retraining program (roughly equivalent to an MS degree) for a group
of 20 AT&T engineers. During my stay at AT&T I developed and taught
courses in programming discipline, data structures and algorithms,
data types, software engineering, software tools and programming
environments, software methodology, and software specification techniques.
The best of these courses was a 3 day course
on MetaTool and a 5 day course on domain engineering and software reuse.
Both courses have been taught (up to 1996) to several thousand students
I provided consulting services to most of the software projects
at Merrimack Valley. These services have included software
audits, reviews, inspections, and advising primarily in software
methodology, software architecture and design, and the use of
application generators. Iwas also an active member and leader
of the Software Methodology Engineering Circle which investigated
and solved problems in software at Merrimack Valley. Circle work
resulted in guidelines for establishing a software process,
a software reuse library, and techniques for formal specification.
University of Connecticut, Assistant Professor, 1978-1982
I did research in data types, data abstractions, specification languages,
semantics of programming languages, programming environments,
and software engineering.
I taught courses in data structures, principles of programming languages,
advanced software engineering, automata theory,
semantics of programming languages,
discrete mathematics, data types, and others.
I also worked on curriculum development, graduate degree admissions,
and graduate degree exams and requirements.
Please see my publications for further
information about my research here.
Perhaps the most interesting result from this time was the
demonstration of how to define the semantics of a programming
language using data abstractions and algebraic specifications.
In 1981, I was awarded a NASA Summer Faculty Fellowship where I spent
a few months helping develop a vision of how computer science
would aid NASA's programs.
University of California, Los Angeles, Student, Research Assistant, 1970-1978
- UCLA, B.A., Mathematics and Computer Science 1975
- UCLA, M.S., Computer Science 1975
- UCLA, Ph.D., Computer Science, 1978 Thesis: The Design, Implementation
and Correctness of an Expression-Oriented Language for Microcomputers.
I taught several undergraduate level courses in programming.
I designed and implemented:
I maintained an Algol 68 compiler and the Meta 7 translators
and provided consulting services to users.
Also see my publications from this period.
- GAMMA and Delta, expression-oriented programming
languages for microcomputers,
- a library system for SARA,
a design methodology system,
- a Meta 7 parser for Algol 68 and
- improvements to two Meta 7 compilers (translator writing systems).
- 1974, UCLA Undergraduate Honors Program
- 1975, Phi Beta Kappa
- 1976-77, IBM Fellowship
Footnote to history: My first computer science
job in 1972 included Arpanet access,
my first exposure to what would become the Internet.
The very first node of the Arpanet was installed in
the Sigma 7 room next to my office.
Over the years I have done numerous other activies including
giving talks at Universities and professional societies, reviewing
books, papers, and NSF grants.
I was a software consultant for Parker Brothers, Microkit Inc.,
Micropolis, Econergy Inc. and Environmental Dynamics Inc.
One page summary resume in MS-Word
Text-version resume suitable for printing
or email (excludes publications).