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, software developer, and problem-solver.

My highest skill is leading a technical team in developing and refining systems designs, detailing and producing implementations, and evolving software systems from rapid prototypes to mature products. I strongly support good team process, communication, and mentoring.

Education:

Computer Knowledge:

Professional Experience:

    Table of contents:

November 2009 - present: Senior Software Engineer, Verio, Inc., Orem, Utah

Responsibilities:

Verio is a large virtual web hosting company.

I am a member of the Cloud9 development team that is creating Verio's new cloud hosting product for small-to-medium-sized businesses, using Python, MySQL, and Django, together with a proprietary mix of cluster software components.

October - November, 2009: Embedded Software Engineer, Systronix, Inc., Salt Lake City, Utah

Responsibilities:

Systronix is a small contract electronic engineering firm led by Bruce Boyes, an electrical and computer engineer and entrepreneur.

I contracted with Bruce supporting early phases of software design and development for an embedded ZigBee Pro (802.15.4) wireless control network. In this product, a color touch-screen handheld unit controls rapidly reconfiguring sports facilities such as gymnasiums.

June - September, 2009: Independent Software Developer, Salt Lake City, Utah

Responsibilities:

Gem is a cross-platform aid to making precise, 2D and 3D diagrams, CAD drawings, and models of objects for engineering and manufacturing. It is designed to be easily ported to different languages and GUI toolkits, and to run either as a stand-alone application, or as a plug-in or extension to other drawing programs and modelers.

The Gem design includes a platform-independent GUI, implemented as a set of MVC (model-view-controller) object classes for handling interactive input events, 2D and 3D viewing controls, and OpenGL rendering of models.

Gem is also designed to work as a remote collaboration "design whiteboard", for example while diagramming software or designing mechanical parts.

The Python GemCore geometry library is a new implementation, quite similar in design to the Alpha_1 Shape_edit basic geometry library.

GemCore is nearly complete up through points and vectors, lines and planes, and arcs and circles including intersections and tangencies. At present, there's just enough basic NURBS curve support to make path (profile) curves and draw them through PyOpenGL in the default GLUT toolkit windows.

I have a CNC conversion for my little manual Unimat SL1000 lathe/milling machine, and intend to generate CNC g-code toolpaths from GemCore path curves, as we did in Alpha_1.

January 2008 - March 2009: Software Engineer in Computer Aided Design and Modeling, Nanorex, Inc., Bloomfield Hills, Michigan

Responsibilities:

I worked from my home in Holladay, Utah designing and implementing the NanoEngineer-1 molecular CAD software, in Python with the Trolltech Qt GUI toolkit and OpenGL/GLSL.

See an NE1 example screen and the NE1 Gallery for some examples of NE1 designs.

NanoEngineer-1 is:

My major project on NE1 was speeding up the real-time interactive 3D graphics display of molecular "ball and stick" models by a factor of 50 times faster, drawing 50 frames per second for single DNA Origami tiles. Assemblies of 10 tiles, which were previously impossible to design interactively, now display at 10 FPS, so a factor of 100 times faster.

Here's how I did it:

March 2004 - December 2007: 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, including Linux and Windows XP/Cygwin ports.

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: