Experienced, dedicated, and versatile programmer seeks position as lead/principal/senior software engineer in game, graphics, simulation, or tool development. Has worked extensively on production client, server, and library/engine code. Enjoys building intricate systems that solve complex problems using a balance of innovation and pragmatism. Adaptable and self-reliant.EXPERIENCE
High Fidelity, Inc., San Francisco, CAEDUCATION
Self-Employed, San Francisco, CA
- Software Engineer, April 2013-Present
Working on a new platform for networked virtual worlds. Added various rendering features to system, including atmosphere effects, glow effects, voxel-based skinned characters, screen space ambient occlusion, dynamic shadows, and model loading from Autodesk's FBX format with support for skinning, vertex blending, normal mapping, and simple inverse kinematics. Integrated support for several forms of devices, including the Oculus Rift, webcams (using OpenCV for face detection and Google's VP8 for video streaming), depth cameras (such as Microsoft's Kinect), InvenSense gyros, Sixense/Razer Hydra, and Faceshift and Visage face-tracking software. Advised other engineers on graphics and C++/Qt topics and mentored summer interns.
Three Rings Design, Inc., San Francisco, CA
- Software Engineer, February 2012-March 2013
Worked independently on an "ASCII sandbox MMO" game project. Developed thin Flash/ActionScript and HTML5 clients that transmitted keystrokes and mouse clicks via simple TCP/WebSocket protocols to a C++ server, which in turn supplied ASCII graphics optimized for scrolling scenes and moving characters. C++ side relied heavily on Qt, and provided session management, UI elements, server peering, HTTP/WebSocket server, and a bytecode-driven Scheme implementation for scripting.
The Naval Postgraduate School MOVES Institute, Monterey, CA
- Spiral Knights (published by Sega): Lead Engineer, May 2007-January 2012
Led a small team of engineers from initial prototype, through a series of alpha and beta tests, to launch and various post-launch updates.Developed underlying engine, Clyde, on top of existing Three Rings libraries and LWJGL (Java bindings for OpenGL, OpenAL, and input). Features included annotation-driven reflective object editing, parameterized configuration management, deep copying/comparison/hashing, version-resilient serialization to XML and binary formats, 2D system for world representation and gameplay, and 3D system for client display.Graphics engine included configuration-driven material and compositing systems, post-processing effects, flexible particle system engine and editor, dynamic geometry and procedural animations, animated model instancing and attachments, scriptable actions, and scene management based on spatial hashing, among other features.Gameplay engine included generalized geometry representation and full scene editor with generic systems for defining complex behaviors using configurable rules and triggers. Also included UDP-based networking system optimized for real-time movement and combat, inspired by first-person shooter engines and using reflective object delta encoding and adaptive time management.Worked on all aspects of game, including items and inventory management, shops, trading, world representation and mapping, matchmaking, social systems such as guilds and friends, administrative and diagnostic tools, build and deployment systems, and content management tools.Implemented peered server architecture hosted on Amazon EC2 (using RightScale management interface) for scalability. This included instancing systems to balance load between peers by hosting games and common areas on different servers, with players moving transparently between peers during gameplay.Integrated with Steam platform, including game installation, logon using Steam authentication system, automatic in-game friendships based on Steam friends, microtransactions, achievements, voice chat, game invites, and cross-game trading. Integrated with Kongregate, including authentication, automatic friendship, microtransactions, and statistics.- Bang! Howdy: Engineer, October 2005-April 2007
Worked on all aspects of game, including graphics, gameplay, artificial intelligence, networking, and database management.Developed renderer and editor for heightfield-based terrain using "splatting," water effect based on FFT synthesis, model instancing and animation system including hardware and software skinning, and particle-based effects on top of Java Monkey Engine.Added "gang" support, including membership management, gang inventories and upgrades, customizable logos, gang-specific attire, and leaderboards.Promoted to Lead Engineer after launch.- Yohoho! Puzzle Pirates: Engineer, October 2004-September 2005
Extended billing system to support additional payment methods such as PayPal, PayByCash, and Premium SMS.Implemented housing and furniture systems, mission system, single-player mode for boxed edition published by Ubisoft.Added card games Hearts and Spades.
- Research Associate, February 2001-September 2004
Co-developed Delta3D, an open-source game/visual simulation engine, and various associated projects, including a training program for shipboard firefighting and a multi-screen helicopter simulator. Specific contributions included a particle system editor using OpenSceneGraph and FLTK, 3D sound support using OpenAL, Python bindings, HLA networking code, animated characters, remappable input, physics (using Open Dynamics Engine), and paged terrain.Designed and developed the XRTI--a generalized, middleware-based communication mechanism for networked virtual environments--as a master's thesis project. The XRTI demonstrated improvements to an established standard, the High Level Architecture (HLA), in terms of ease-of-use, interoperability, and extensibility.Wrote the majority of code for the Context Machine, a simulated augmented cognition device implemented within the codebase of America's Army: Operations in C++ and UnrealScript.Assisted a series of students with their thesis research, authored or co-authored several publications concerning research projects, and presented research results at academic conferences and at the annual MOVES Open House.Acted as principal architect and developer for NPSNET-V, a Java-based component architecture for dynamically extensible networked virtual environments.- Intern Programmer, Summers of 1995-1998
Created and maintained a Java GUI for the Bamboo modular virtual environment architecture. Added environmental effects (fire, smoke, dust trails) to the Performer-based NPSNET-IV networked combat simulation platform, and developed user-friendly front ends for NPSNET-IV networking tools.
SOLO PROJECTS
Languages: C, C++, Java, Intel and MIPS assembly language, Lisp, Python, Prolog, Standard ML, Fortran, BASIC, HTML, CSS, XML, VRML/X3D, SQL, UnrealScript, JavaScript, ActionScript, MAXScript, GLSL Operating Systems: Windows, Linux, OS X Databases: MySQL, PostgreSQL, MongoDB APIs: DirectX (including Direct3D), OpenGL, Win32, STL, X-Windows, FLTK, Cosmo 3D, Java 3D, OpenSceneGraph, OpenAL, OpenCV, OpenNI, Open Dynamics Engine, Performer, libvpx, GDAL, Qt Standards/Protocols: DIS, HLA, CIGI, HTTP, WebSockets, SMTP, Telnet, LDAP
Fungible Insight, January 2012-Present
Project blog documenting an independent line of research into artificial intelligence and gaming technology.B-Bots (class project), December 2000
An animation editor and an animated music video, rendered on-the-fly in OpenGL. Included smooth hierarchical character animation using quaternions, scripted camera behavior, particle systems, and wireframe 3D implicit surface rendering using the Marching Cubes algorithm.e y 6 e s : pocket interface panel, 1999-2001
A Java intensive 'concept home page' featuring several 2D and 3D graphics applets, including a spherical panoramic image map; a 3D object slide show with perspective correct texture mapping, environment mapping, and Gouraud shading; a rolling fractal terrain applet with perspective, orthographic, and isometric view modes; and a 3D first person shooter game.