A software engineering or R&D position that allows me to use my skill in designing simple robust solutions to well-defined challenging problems in computer graphics, computational geometry, math, and physics.
2005/5/1 - 2013/6/1 Industrial Light & Magic (Lucasfilm), San Francisco CA
As an R&D Engineer, used my math, physics, and engineering skills in developing new ideas and features, diagnosing problems and bugs, interacting with users, and providing support. Significant contributions included:
- Shape Springs - had insight that Procrustes' method for best-fit-rotation yields a useful shape-restoring force with well-behaved physical properties, leading to implementation of several force models (shape springs, point cloud glue) that have turned out to be very useful in physics simulations for films.
- Stiction - took part in design and implementation of the static friction model used for Davy Jones' tentacle beard in Pirates of the Caribbean 2. This effect led to an Academy Award for Best Visual Effects, a patent application and SIGGRAPH paper.
- Blue noise - implemented well-separated point scattering on polygonal and catmull-clark surfaces, for various simulation and modeling purposes such as particle emission and hair root placement.
- Critiqued/contributed to several methods used in PhysBAM (Stanford's math/physics simulation software).
- On numerous occasions, replaced ill-defined ill-implemented component algorithms with solid, sound, efficient, clean rewrites.
- Consistently successful debugging feats requiring extensive specialized knowledge and skill across multiple interacting software levels (Zeno, PhysBAM, compiler, distributed build system, runtime linker, OS).
- Constantly advocated for code quality/excellence and provided tools to support it.
- Harnessed our confidence test suite to be run under various intrumentation tools: valgrind (memory corruption), gcov (code coverage), cppcheck (static error analysis). Wrote postprocessing and web-based tools for visualizing and drilling down into the results of each.
- Essential tools for QA and management:
- crashView - co-wrote this tool for browsing and correlating Zeno crash reports
- usage/crash stats - web-based (xhtml/css/javascript/jquery/sql) presentation of recent Zeno sessions and crashes, allowing categorization/focus on any of product,version,show,site,date,user and drill-down to individual session logs / crash reports
- Bundle builds - was the primary architect and go-to guy for our recent transition from monolithic builds of all our software projects to well-defined subsets ("bundles") of them
- Developer productivity tools - provided (and heavily used) tools to compensate for inadequacies in products we depend on (version control system, bug tracking system). E.g. p4diff and p4annotate (diff and blame tools better than the ones provided by perforce), sqdump (command line tool for querying the bug/task database) and many others.
2003/10/30 - 2004/8/13 ESC Entertainment, Alameda CA
As a member of R&D staff for feature film visual effects, supported animators and compositors with shot pipeline tools implemented as Maya and Shake plug-ins and scripts. Co-implemented a Pose Space Deformation tool which deforms a mesh based on a set of poses and associated control values; this is used to correct deformation problems introduced by vertex weighting, and was used for character modeling/rigging in Catwoman. Implemented arbitrary-dimensional wavelet based image compression/decompression. Developed simulations to assess feasibility of cloth and crack algorithms.2003/4/1 - 2003/10/29 Andes Engineering, Sunnyvale CA
As an independent contractor, worked on Blue Marble Viewer (an earth browser using Open Scene Graph), debugged a flight simulator using IRIS Performer clipmaps, and set up a network boot environment for small clusters of Linux boxes to be used to run flight simulators.2001/6/4 - 2003/3/31 Keyhole Inc., Mountain View CA
As a Senior Graphics Engineer, worked independently and on a team of 3-4 engineers on various aspects of the EarthViewer3D product (now Google Earth), including: navigation; paging hierarchical levels-of-detail of roads, boundaries, and labels, and layering them on elevated terrain. Audited server/client communication code for security and robustness. Implemented JPEG2000 decompression.2000/3/15 - 2001/2/21 Predictive Systems, Santa Cruz CA
Worked as a Senior Consultant in the following areas:
- Network Performance Management - In a team of 3, developed a suite of tools to be used in a network operations center for real-time measurement and visualization of network performance and identifying bottlenecks on a nationwide network.
- Network Security Management - Audited code for security and robustness. Wrote tools for quick parallel scans and queries of network management devices over millions of IP addresses via SNMP. Testing required writing software to tunnel UDP through TCP.
1992/12/14 - 2000/1/10 Silicon Graphics Inc. (SGI), Mountain View CA
Worked on teams developing, supporting, and releasing various large graphics API libraries for IRIX, including the following:Highlights:
- IRIS Performer (visual simulation runtime and scenegraph library)
- Fahrenheit Scene Graph library
- ImageVision (image manipulation library)
- IFL (image format library used by ImageVision) and Imgtcl (Tcl-based scripting language for ImageVision) - designed and implemented the initial versions of these libraries.
- "From Outer Space to In-Your-Face", a demo/application featured in SGI's booth at IITSEC and SIGGraph '98 and '99, which was the predecessor to Keyhole's EarthViewer3D (now Google Earth). Wrote hard key parts of this program, including:
- Precision management for smooth real-time zoom and pan throughout a dynamic range of up to 31 power-of-2 levels of texture detail (1 billion by 1 billion texels of virtual mipmap), on a graphics system that only understands IEEE single-precision floats (24 bits of precision).
- Adaptive morphing textured spherical tesselation of the earth
- Extremely efficient so that it's feasible to recalculate it per-frame as part of a 60Hz realtime animation
- Produces a tesselation with a small bounded number of triangles, morphing between a static uniformly subdivided mesh when flying at high elevations to an exponentially subdivided mesh at low elevations.
- Tesselates only the part of the sphere that is above the horizon for the current eyepoint
- Crack-free morphing boundaries between adjacent textured spherical patches of mixed arbitrary sizes and possibly-overlapping positions
- Produces geometry in concentric bins or "clip rings" centered at the eye, with per-ring texture-level-of-detail information, as required for use with virtual clipmapped textures on InfiniteReality machines
- A concise file format parser and IRIS Performer scene loader plug-in that reads the configuration as a list of possibly-overlapping textured spherical patches
- Motion and interaction model that makes cruising speed proportional to height-above-terrain, with an original hyperbolic-space curve splining technique to create smooth flight paths with respect to this motion model
- Wrote and informally supported libdmalloc, a malloc debugging library for detecting memory corruption and leaks on IRIX. This library is implemented as a shared library that can be enabled via an environment variable; once it is turned on, it intercepts memory allocation functions and checks every program the user runs for corruption. Lightweight enough that it can be kept on all the time, it pro-actively finds and reports bugs in software being developed, as well as the development tools themselves and any other program that is run. libdmalloc proved to be exceptionally useful for developing multi-threaded apps and libraries (such as IRIS Performer) since it intercepts IRIX shared-memory allocation functions which are used heavily by such programs and which aren't recognized by most other memory debugging tools.
- Wrote p2, an instruction-level program-rewriting program to perform dynamic memory access checking and leak detection on multithreaded IRIX/MIPS executables and shared libraries. This required intimate familiarity with the intricacies of dynamic linking, the Elf object file format, and MIPS assembly language.
- Invented a system for efficient mixed-native-precision calculation using a type algebra and rules for mixing coordinates and transform matrices of different precisions (e.g. single- and double-precision) in a matrix stack and transform pipeline, while sending only single-precision composite transform matrices to the lower-level graphics system or back-end. This allows the app to specify high precision selectively where it is needed in a scene database, while running on a system whose low-level graphics system only supports single-precision. Used this system to add double-precision matrix support to the IRIS Performer realtime graphics scene library.
- Designed a simple robust algorithm for fast well-behaved affine transformation of bounding spheres, a tricky problem that had plagued scene graph libraries for years. (Patent US 6664975 B1).
Summer 1991 Z-Code Software Corporation, San Rafael CA
As a consultant, developed the following modules for the Z-Mail program. These modules are required to work across a wide assortment of UNIX platforms.
- Portable forms - An ascii file format for describing widget forms which are displayable and editable in the various Z-Mail user interfaces such as Motif, Openlook and curses. These ascii files are human-readable and resemble the forms they describe.
- License checking module - Allows time-limited site licenses and user/machine specific licenses to be described in an encrypted file. Licensed programs can request access through this file or from a network license server daemon.
Spring 1991 U.C. Berkeley, CA
- Constrained Delaunay triangulations and extended Voronoi diagrams - Wrote the first implementation of Raimund Seidel's modified Fortune-sweep algorithm for calculating the Delaunay triangulation of a planar point set with some edges specified. One application of this is finding the "best" triangulation of a polygon.
Summer 1988, 1989, 1990 Ardent Computer Corporation, Sunnyvale CA
As a consultant, developed interactive graphics programs to demonstrate the capabilities of the Titan computer and the Doré rendering environment for Ardent's presentation at SIGGraph '88, '89, and '90. Projects included:
- Rubik's Hypercube - A fully functional interactive 4-dimensional Rubik's Cube program, including an original algorithm for solving it. (A more recent collaboration, which works on Unix/X or Windows/NT, is available from http://www.superliminal.com/cube/cube.htm .)
- Polytope - A system for rendering and interacting with "perspective" projections of 4-dimensional regular objects (polytopes) into 3-space.
- CSG Sculpting - A program that uses Doré and a Constructive Solid Geometry function library, allowing the user to interactively combine primitive solids and to perform boolean operations (union, intersection, difference) on them to create new solids.
- Marching Cubes - Implemented this algorithm for obtaining a polygon mesh "iso-surface" from a volume of scalar data.
- FEA Viewer - A postprocessor for displaying and animating results of Finite Element Analysis programs. Allows the user to interactively select viewing parameters such as how an object is colored (e.g. by temperature or displacements throughout the object) or a "shrink" factor to be applied to individual elements to allow easier viewing of the interior.
- Data Explorer - An object-oriented widget-driven system allowing simultaneous viewing and interaction with FEA results (similar to FEA Viewer, above) and various representations of volume data, e.g. slices and iso-surfaces.
- Fabergé Eggs - A series of ornamental eggs to demonstrate Doré's texture mapping features.
- Rose - Interactive simulation of a rose blooming.
Winter 1988 U.C. Santa Cruz, CA
- Juggling - Wrote a juggling simulator for a Computer Animation course. This program displays any number of people juggling any number of balls in user-specified patterns, in a real-time 3-D perspective display on a Sun, IRIS or Titan workstation. It uses an original language for mathematical representation of complex juggling patterns, and performs collision detection and recovery.
Summer 1987 Island Graphics, San Rafael CA
- Desktop Publishing - Participated in development of a drawing package/desktop publishing system for the Sun workstation.
February 1987 Computer Science Board, U.C. Santa Cruz, CA
- Machine Learning - Wrote a demonstration program to graphically display faculty's current research on machine learning algorithms.
Summer 1986 Stanford Research Institute, Menlo Park CA
- Release Control Manager - Wrote the initial version of this program, which is an extension of RCS designed to work on directory hierarchies of large-scale software projects under UNIX.
Last updated: Thu Jun 27 19:54:18 PDT 2013