Sun Microsystems 2550 Garcia Avenue Mountain View, CA 94043 415 960-1300 TLX 287815 10/20/87 To Whom It May Concern ====================== Performance Review of Donald E. Hopkins Donald E. Hopkins worked at Sun Microsystems from June 15 to August 28 as a summer intern in the CAD department of Sun's Workstation Division. He was hired to implement software to replace the user interface of a CAD system with an interface based on the FORTH language. This is a challenging project considering the complexity of the software and requirements of the pro- ject. Details of the project are given in the enclosed pro- ject description. Don's performance by far exceeded that expected of a summer student. He is very creative, bright, and hard working. He produced high quality results within a short time. Don turned out to be an excellent match for the pro- ject. Before he started at Sun he had already a thorough understanding of most software components involved in this project like UNIX, C, Suntools, and Forth. But he had to learn CADroid which is a rather large software system writ- ten in C. This was no problem for him. He understood its structure within a short time and knew how to modify it. Don's creativity and initiative are outstanding, he managed to resolve very complex problems without relying on manager's assistance. He works quite independently, yet interfaces well with other programmers in solving problems and handing over solutions. The project was originally considered to be experimen- tal, but turned out to be production quality and was integrated in a regular release to be used by Sun hardware engineers. It was a pleasure to have Don on our development team and I hope to get a chance to hire him again. (signed) Gudrun Polack (Gudrun Polak, Manager) Enclosure: Project Description ======================================================================== Project: User Interface for CADroid The project was to replace the user interface of CADroid, Sun's schematics CAD system for system and board design. The existing user interface to CADroid encompasses keyword driven commands as well as programming and macro capabilities. The commmands are drawing instructions, cursor move- ment, scaling, window and file operations. In addition, programming capabilities are available that allow the user to define typed variables, to evaluate expressions, and to specify control flow with loops, conditional statements and functions. User input is entered in three different ways. The user has the choice of either typing commands on the key- board, selecting commands and their parameters from a menu, or using the mouse. The programming capabilities are extremely powerful and useful but the original language was considered too res- tricted and the existing syntax too clumsy. The implementa- tion poorly coded and hard to modify. The objective of the project was to replace the com- plete frontend with a new interface based on the FORTH sys- tem. The new frontend uses FORTH's capabilities but preserves most of the original command language. New syn- tax was defined for loops, conditional statements, vari- ables, expressions, and macros. Extensibility was achieved by extending macro and function capabilities and by using FORTH's underlying layer. This approach was taken to provide a user friendly extensible language interface without reinventing and rewriting the code for scanning, parsing, error recovery, and key binding. Don's first assignment was to identify the proper interface inside the CADroid code for FORTH. He then designed and implemented a command processor in FORTH that executes CADroid commands as FORTH subfunctions. The following step was to add higher level CADroid statments and the mouse interface. Since CADroid struc- tures are not always compatible with FORTH's stack and post- fix notation the implementation had to provide the necessary preprocessing and interpretation for some statements. The implementation was done in C and FORTH.