J. Craig Cleaveland craig at craigc.com http://craigc.com OBJECTIVE: Free lance consulting, contracting, or teaching in the areas of Internet applications, Java, XML, or domain engineering. SKILLS: Technical leadership; team player; creative and innovative; 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). EXPERIENCE: Whitebirch Software, Inc., 2002-present 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 Consultant/Instructor, 1998-present 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: 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 various rooms. This site was sold to go2net and can be seen at http://www.playsite.com or through the Lycos site. 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. 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 publications. I was awarded the Distinguished Technical Staff Award in 1987. Tools 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 http://www.ivystar.com/. 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. Education 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 throughout AT&T. Consulting 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 Degrees: 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: 1. GAMMA and Delta, expression-oriented programming languages for microcomputers, 2. a library system for SARA, a design methodology system, 3. a Meta 7 parser for Algol 68 and 4. improvements to two Meta 7 compilers (translator writing systems). I maintained an Algol 68 compiler and the Meta 7 translators and provided consulting services to users. Also see my publications from this period. Academic Honors: 1974, UCLA Undergraduate Honors Program 1975, Phi Beta Kappa 1976-77, IBM Fellowship Miscellaneous Notes 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.