C++, performance, realtime technologies, game engines, virtual reality, augmented reality,
developer education, public speaking, writing, coordinating large projects,
managing and mentoring people, planning and strategy, cross-team collaboration,
telemetry and metrics
Software Engineering Manager, Facebook Reality Labs (previously Oculus Research),
July 2016 - present
Building the future of virtual and augmented reality.
Senior Staff Engineer, HBO Code Labs,
Mar 2014 - June 2016
Created new HBO entertainment experiences for people and devices worldwide. Prototyped a
wide variety of applications, with a focus on virtual reality storytelling.
- Built an
virtual reality experience
for Westworld in Unreal Engine 4,
featuring both 3D worlds and captured 360 footage
- Analyzed 360-degree VR capture systems, with a focus on production techniques and best practices
- Used Unity3D and Unreal Engine 4 to develop internal interactive prototypes
- Educated HBO teams and executives on virtual reality
- Built iOS prototypes for exploring the characters and locations of popular HBO content
- Developed a custom
installer with the minimal set of components required to run Unreal Swarm, allowing any
corporate desktop machine to participate in Unreal lighting builds
Principal Program Manager, Microsoft
Xbox Advanced Technology Group,
Jan 2011 - Oct 2013
Directed Microsoft's game developer education, research & development, support,
developer marketing and PR, training and developer event initiatives for professional
Xbox 360 and
Xbox One console developers,
plus indie developers in the
Xbox Live Indie Games program
- Oversaw the delivery of all educational content for Xbox One, including
hundreds of: sample C/C++ code projects, white papers, tutorials, videos, and
- Coordinated developer events to bring thousands of developers up to speed on
Xbox One technologies, producing a regular series of events worldwide, hosting
professional console developers and delivering dozens of hours of
- Managed Microsoft's all-up presence, budget, and divisional coordination at the
Game Developers Conference, an
annual event for 25,000 game developers, including Microsoft's presence in
conference content (40 hours in 2013), booths, exhibitor space, meeting rooms
and hosted parties.
- Oversaw the coordination of research and development projects
for new techniques only possible on Xbox One and the Xbox One Kinect sensor.
- Coordinated and delivered monthly internal reports on the state
of Xbox One development leading up to the launch of the product, including
tracking leading indicators such as support caseload, development site
page views, hot forum topics, downloads, and more.
- Wrote the Xbox One developer blog, a weekly -- and sometimes daily -- update
on topics relevant to developers creating launch titles.
- Oversaw support and coordination for the Xbox Live Indie Games program on Xbox 360,
Dream.Build.Play contest, the
program, developer support and PR coordination.
- Official spokesperson for Microsoft representing the game developer divisions at
Microsoft, working with internal/ external PR companies and press organizations to
deliver developer messaging.
GameZone article for one example.
- Managed a multi-million dollar team budget.
Principal Group Program Manager, Microsoft Game Platform Tools,
Nov 2008 - Dec 2010
Shifted roles from programming to program management, coordinating the delivery of all game
development tools for Microsoft platforms, as well as overseeing all technical documentation for
game development products.
- Managed a team of 20 program managers and technical documentation writers.
- Oversaw the XNA tools team, updating the
XNA Game Studio
product, content pipeline, and Xbox 360 Software Development Kit (XDK)
- Oversaw the compiler and debugging team, creating the
Xbox 360 C/C++ compiler,
linker and debuggers used daily by all Xbox 360 developers.
- Oversaw the performance tools team, working on industry-regarded tools such
as PIX, the
Performance Investigator for Xbox.
- Oversaw the technical documentation team, creating API docs, white papers,
tutorials and other online education components for Xbox 360 and Windows
- Delivered quarterly technology updates to the Xbox 360 XDK and the
DirectX Software Development Kit, used by tens of thousands of
game developers worldwide.
- Created long-term game developer strategy for Xbox platform, many portions of
which were integrated into future initiatives.
- Internal developer spokesperson for
Kinect launch titles, ensuring hot developer issues were tracked
Principal Development Manager, Microsoft
Professional Game Platform,
Oct 2007 - Nov 2008
Led a large team of software engineers creating the low-level technology used by
all Xbox 360 and Windows games.
- Managed a team of 30 software development engineers. Responsible for hiring,
budget, reviews and team direction.
- Oversaw the graphics engineering team, creating 3D graphics libraries
for Xbox 360 (Direct3D).
- Oversaw the audio engineering team, creating audio libraries for Xbox 360
and Windows (XAudio).
- Oversaw the input engineering team, creating input libraries for Xbox 360
and Windows (XInput).
- Oversaw the networking engineering team, creating transport and online
technologies for Xbox 360 (Xbox Live).
- Delivered monthly technology updates to the Xbox 360 Software Development
Kit (XDK) and the DirectX Software
Development Kit, used by tens of thousands of game developers worldwide.
Development Team Lead, Microsoft
Game Developer Connection, Feb 2006 - Oct 2007
Led a team of software engineers supporting game developers on
Windows and other Microsoft gaming platforms. Team mission: "Game developer support,
performance insight and technical illumination."
- Managed a team of 25 software development engineers. Responsible for hiring, budget, reviews
and team direction.
- Worked directly with hundreds of professional game developers around the globe ensuring
their games took full advantage of Microsoft technologies.
- Partnered with account management teams to direct team engineering resources onto
high profile games, evaluating game performance issues, optimizing game code and
getting titles released successfully.
- Oversaw game developer support initiatives, including oversight of internal tools
and developer-facing portal.
- Directed research and development efforts designed to improve the lives of
Lead Software Engineer, Microsoft
Xbox Advanced Technology Group,
Jan 2001 - Jan 2006
Led a team of software engineers working on Xbox and
Xbox 360 research
and development, performance issues, game technology and tools.
- Managed a team of 10 engineers.
- Coordinated and created example Xbox game code for inclusion in the Xbox
Software Development Kit (XDK).
- Coordinated and regularly presented at Xbox development seminars, game
conferences and other Xbox-related events.
- Specialized in storage, networking, online technology, and Xbox certification
- Drove code conventions and other best practices across Xbox teams.
- Authored numerous developer white papers on a wide range of topics from Xbox
Live issues to storage best practices to game networking.
Senior Network Engineer, Emerald City, Dec 1999 - Dec 2000
Internet and client-server developer for Emerald City Technologies, a company
that created massively multiplayer 3D games and game technology.
- Network engineer for back-end server and download technology used by Emerald
- GUI client engineer for Windows front-end application.
- Chief architect for Emerald City base C++ library. Designed and programmed STL
wrappers, generic exception handling mechanisms, standard file and HTTP logging
technology, and XML parsers.
- Helped standardize all software libraries, tools and applications on the
Unicode character set for all platforms, with an efficient translation layer to
hide the conversions on non-Unicode platforms.
- Created various COM controls used by Emerald City servers for rapid IP address
lookups, encryption, secure hashing, and key generation.
- Automated nightly builds and library component testing.
- Automated generation of HTML documentation from C++ source code.
Senior Software Engineer,
World Opponent Network (WON.net), Aug 1998 - Nov 1999
Internet gaming developer. Enhanced existing lobby-based software designed
as the entry point for dozens of existing Win32 multiplayer games. Used by over
10,000 players on a daily basis. Lead developer of WONplay, a web-based
technology for downloading and launching multiplayer games with a single click.
Initially rolled out with Hoyle casual card and board games; later used for
Bezerk games like Acrophobia.
- Created smart downloading technology that used compression, customizable
filters, background threads and other methods to minimize download times and
get players into games faster.
- Generated a strong banning mechanism to uniquely identify a PC and allow WON to
lock-out online miscreants.
- Created authentication client DLL designed for peer-to-peer authentication and
encrypted messaging with WON servers. Optimized size from over 500K down to
- Documented the WON game API that outside companies used to create WON-enabled
- Developed Internet utilities, including a Win32 application that can be
launched from a website via a Java applet or ActiveX control.
- Helped engineer Internet communications library for thin and robust high-speed
game transmissions in 3D multiplayer games.
Software Design Engineer, HyperBole Studios, Jan 1994 - June 1998
Lead engineer and systems architect of HyperBoleís
VirtualCinema high-performance media playback engine. Managed a
six-person team that used object-oriented solutions and leading video, graphics
and database technologies. Championed standard coding conventions and defensive
programming techniques. Helped educate management on the vagaries of software
- Engineering lead for The X-Files Game,
released on 7 CD-ROMs for Windows and Macintosh, 4 CD-ROMs for PlayStation, and localized into six
different languages including Japanese. Over 1 million copies sold.
- Architected and developed HyperBoleís cross-platform C++ code base (250,000
lines of code) to support Windows 95/98, Windows NT, Mac OS and PlayStation
- Created coding specifications and engineering requirements, task estimates,
project schedules, code measurements and weekly status reports. Generated code
library technical documentation, game docs and release notes for QA and
- Created highly optimized C++ template classes for standard containers, lists,
stacks, queues, smart and auto pointers in the days before the C++ Standard
Template Library (STL) was widely available.
- Profiled and optimized critical sections of the game engine, including dirty
region clipping, memory allocation routines and graphics blitting loops.
- Assisted the PlayStation port team in assessing porting feasibility, generating
project estimations, and performing ongoing technical reviews.
- Programmer for both Quantum Gate (single CD-ROM; released in 1994) and The
Vortex (three CD-ROMs; released in 1995).
Software Engineer, Peopleware (now Centium Software),
June 1990 - Jan 1994
Programmed a large-scale multiuser database application for seminar and meeting
management. Helped create and upgrade reusable software modules built on a
powerful database library.
- Designed and coded a large portion of MeetingPro 3.0, a DOS application written in C,
including the graphics routines, list boxes, and standard data entry fields.
- Developed a new standard interface for the software that increased typical user
productivity by 30%.
- Documented all technical aspects of the product for in-house use and created a
full set of database benchmarks.
- Coordinated beta programs with customers, elicited user feedback and answered
technical support calls.
- Network supervisor and hardware troubleshooter for 25-workstation network.
B.S. Computer Engineering, cum laude; English minor, Pacific
Operating Systems and Runtimes
C++ since 1993;
emphasis in STL,
class design, templates, generic programming, security, performance optimization and robustness;
Software Tools and Technologies
Visual C++, Xcode, Unreal Engine, Unity, Oculus VR, SteamVR, DirectX, git, Mercurial, Perforce
Featured speaker at the Game Developer Conference.
Advisory board member for XRDC:
Other events and conferences:
- 2019 CppCon:
Destructor Case Studies: Best Practices for Safe and Efficient Teardown
- 2001 - 2013 Xfest (US, London and Tokyo): various presentations at confidential Xbox developer events
- 2008 Gamefest:
Here be Dragons: Undefined Behavior in C++
- 2007 Game Connect: Asia Pacific:
Multicore Programming Two Years Later,
Effective Game Programming for Windows Vista, and
A Bakerís Dozen: 13 Tools and Technologies for Your Next Game
- 2007 FMX/07: XNA Game Studio Express
- 2006 Gamefest:
Sublime C++ for Games
- 2006 Northwest C++ Users Group: C++ on Next-Gen Consoles: Effective Code for
- 2005 University of Washington: Xbox 360: Challenges and Opportunities
- 2005 C++ Connections: Xbox and C++: Common Performance Issues in Games
- 2005 Microsoft Gamefest:
Xbox 360 System Architecture
Integrating Xbox 360-Specific Components
- 2004 Stanford Tech Talk series: Life in Microsoft Xbox
- 2003 University of Southern California E.D.G.E. conference keynote: The Future
of Gaming on Xbox
- 2002 Australia Game Developer Conference: Inside Xbox Live
Contributing author to:
Best of Game Programming Gems, June 2008, multiple entries
Game Programming Gems 6, March 2006, Chapter: Utilizing Multicore Processors with OpenMP
- MDSN Magazine, October 2005,
OpenMP and C++: Reap the Benefits of Multithreading Without All the Work
co-authored with Kang Su Gatlin
Game Programming Gems 4, March 2004, Chapter: Bit Packing: A Network Compression Technique
- IGDA Online Games White Paper, 2003
- Game Developer Magazine, March 2003,
Online Console Games
Game Programming Gems 3, July 2002, Chapters: Secure Sockets and Custom STL Allocators
Game Programming Gems 2, August 2001, Chapter: Genuine Random Number Generation
Game Programming Gems, August 2000, Chapter: Fast Math Using C++ Template Metaprogramming
Music, wines, gaming, backpacking