Russell D. Fish

E-Mail: fish@cs.utah.edu Home Address: 1618 East Meadow Moor Road http://www.cs.utah.edu/~fish Salt Lake City, Utah 84117 Cell phone: (801) 953-3778 Home phone: (801) 274-2834
This document may be accessed on the Web at http://www.cs.utah.edu/~fish/resume.html .

Summary:

I am an experienced system designer, developer, and problem-solver.

My highest skill is to lead a technical team in developing and refining systems designs, detailing and producing implementations, and evolving software systems from rapid prototypes to mature products.

Education:

Computer Knowledge:

Professional Experience:

March 2004 - Present: Computer Science Researcher, Flux Research Group, School of Computing, University of Utah, Salt Lake City, Utah

Responsibilities:

Worked as a research staff programmer in a networking and operating systems research group. Extended the Emulab.net network emulation testbed system, used by over 1500 researchers in hundreds of organizations worldwide. Emulation means each experiment has repeatable access to hundreds of real physical computers and network VLANs, with controlled network link characteristics.

Some Emulab details:

Major Projects:

May, 2003 - February 2004: Software Engineer, Think3 Inc. Industrial Design Applications R&D group, Salt Lake City, Utah

Responsibilities:

I worked as both the local system integrator and a software developer, contributing to Think3's Computer-Aided Industrial Design software product.

As a software developer, I used C++, STL and ATL/COM, together with a proprietary GUI environment and OpenGL, to implement new functionality for the ThinkDesign product.

As the local system integrator, I did the final merge of software changes and additions flowing from the seven programmers in Salt Lake City, checked them in to the weekly world-wide build cycle in Italy via ClearCase Attache, downloaded and compiled the next official build of the system and prepared it for the developers, and ran the official regression test suites. To support this process, I used and enhanced a suite of Perl programs developed in the French R&D office of Think3, extended by my own automation using CygWin/Bash. I also introduced software power tools for use by the whole group, including WinMerge and WinCvs.

September, 2001 - December, 2002: Software Engineer, Stabro Laboratories, Inc. (Now a division of Simco Electronics), Salt Lake City, Utah

Responsibilities:

I worked with the Stabro (now Intermountain Metrology Services) Information Systems director to create the next generation of Web-enabled calibration laboratory work-flow software using a combination of C#.NET client apps, XML-RPC/SOAP, and Linux servers with Apache, Zope, Python, MySQL, OpenSSH/OpenSSL, Samba, CVS and Amanda.

Stabro Laboratories is the only calibration service in the state of Utah which is accredited by the A2LA under the ISO Guide 17025 standard. Companies which use many kinds of measuring tools (electronic, dimensional, pressure-force, temperature/humidity, light...) send them to Stabro to be calibrated against standards which are traceable to NIST standards or physical constants.

Stabro uses software to track and schedule calibration work and maintain the necessary history and standards traceability in an accredited Quality environment. Just to make things interesting, calibration work is done at a main lab, satellite labs, and by mobile technicians at customer sites.

We architected and implemented an evolution to the new C# (C-Sharp) CLR .Net environment for visual client programs. This incrementally replaces the legacy stand-alone Visual Basic and DOS applications programs, front-ending DBASE/Clipper and Access/ADO databases on a Novell server. In the new system, distributed calibrations are handled by Web Services client connections to Debian Linux Zope servers, using XML-RPC/SOAP over HTTP, authenticated by OpenSSH public keys and encrypted by OpenSSL. Server-side business logic is written in Zope/Python and runs against MySQL databases.

We also implemented a Web Application server for calibration work status queries by Stabro customers. This was done using the FCGI-Python interface to Zope from the company web site on an Apache/HTTP server. Python code processes data which was submitted by customer forms and queries the MySQL database tables, dynamically generating HTML/JavaScript pages in response.

January-August, 2001: Systems Programmer, Halosoft, Inc., Pittsburgh, Pennsylvania

Responsibilities:

I created extensions and TechMetrix applications server benchmark code for the Viva system as part of a small core team.

Our first two goals were to prove Viva on its own as a very high-speed applications server, and to implement very high-speed Java J2SE applications code compatibility.

Viva is the brain-child of Professor Levent Gursoz of CMU, who is the founder and CEO of Halosoft. Viva is a remarkable technology including a powerful, elegant programming language named V, together with a network-distributed, platform-independent operating system environment. V includes the ability to define language syntaxes as a low-level part of its own self-bootstrapping, as well as native language-specific datastructure primitives. It can thus naturally be used to implement multi-language compatible development and runtime systems for a networked virtual computer.

1980-2000: Co-founder and Project Technical Lead, GDC (Graphics, Design, and Computation) Project, School of Computing, University of Utah, Salt Lake City, Utah

Responsibilities:

I served as the first research staff member, chief system architect and a lead implementer of the Alpha_1 software project.

Alpha_1 is an extensible, portable, object-oriented, research software testbed for Computer Aided Design and Manufacturing, Geometric Computing, and Computer Graphics applications. Within that framework, I personally advised the software portions of at least thirty M.S. and Ph.D. research projects, as well as the continuous software evolution work of a staff of up to eight full-time programmers.

Major Projects:

1980-2000 - Led research in B-spline (NURBS) sculptured shape modeling, subdivision, refinement, trimming, and adaptive tessellation and graphical rendering algorithms, as well as portable and object-oriented implementation techniques. Mentored many generations of graduate students, some of whom then remained in our research group as staff or faculty members.

1986-1995 - Led research developing a feature-object based mechanical engineering language and manufacturing process plan representation, together with automatic CNC machining program generation methods. Sub-projects included CIDAM: Concurrent Integrated Design and Manufacture , RaDEO-MIND: Multiphase Integrated eNgineering Design , and MADE/MadeFast . This work culminated in the FeatureCAM commercial product of our tech-transfer company, Engineering Geometry Systems. I am one of the four inventors granted U.S. Patent number 5,726,896 for a real-time CNC machining servo-control method which added NURBS curves and surfaces to the usual lines and arcs handled by embedded machining controllers.

1982-2000 - Created and led the evolution of the Shape_edit interactive design and geometric modeling environment, featuring:

1982-1993 - Maintained and extended ports of the Utah PSL (Portable Standard Lisp) system implementation and a series of Lisp object class definition packages and inter-language Lisp-to-C/C++ interface linkages. This was the base of our Shape_edit interactive modeling language, before we built our own C++-based language. PSL is a self-bootstrapped system, written in a dialect of itself called SysLisp, a variant of the RLisp infix surface language developed for the Reduce symbolic algebra system. PSL includes interpreted execution and both incremental and batch native machine-code compilation and loading.

1980-2000 - With Beth Cobb, created StructGen, an object-oriented class definition system on top of the C language, and used it as the basis for evolving Alpha_1. The initial version was based on the system design developed in my Masters thesis and predated C++ by at least five years. StructGen is based on a meta-definition of the object structures similar to the current C++ dossiers or Java reflection. It includes generic method dispatching and polymorphic services such as deep copying, and very efficient interprocess serialized binary communication of structures of objects. Converted to C++ by Robert Mecklenburg in 1990, the higher levels are still the basis of distributed client-server interaction and persistent model state storage in Alpha_1. This has all been portable across more than a dozen Unix platforms, with PC Linux and NT ports underway now.

1990-2000 - Contributed to telecollaborative design research in our five-university NSF Science and Technology Center. This has included multi-way teleconferencing with H.263 over T1 lines and H.323 over IP, combined with real-time design refinement on networked computers. Concurrent distributed engineering design and CNC machining projects using our Alpha_1 and FeatureCAM software have included creation of a series of immersive augmented-reality research instruments with the UNC group, and development of a combined version of our design system with a post-WIMP gestural interface with the Brown group.

1977-1980: Scientific Applications Programmer, Envirotech Information Systems Division, Salt Lake City, Utah

Responsibilities:

Engineering and manufacturing support, including computer graphics programming.

Major Projects:

1975-1977: Graduate student, teaching assistant, and research assistant, DARPA 3D Computer Graphics Project, Computer Science Department, University of Utah, Salt Lake City, Utah

Research Area:

Portable, object-oriented geometric modeling systems architectures.

Thesis title:

Richly Structured Models and Modeling Systems

Advisors:

Martin Newell, Martin Griss, and Richard Riesenfeld

1973-1975: Computer Center Operations Manager and Systems Programmer, Parks College of Aeronautical Technology, Cahokia, Illinois

Responsibilities:

Administrative and engineering data processing

Major Projects: