Melbourne, Australia · C/C++ since 2004

3D graphics and systems programmer.

Twenty years of C++ close to the metal — from twelve years shipping games at EA to real-time terrain visualisation at Rio Tinto.

I build renderers and engines with a strong 3D-graphics and maths core. Most recently that meant streaming multi-gigabyte mine models in real time at Rio Tinto; for twelve years before that, games at EA. In 2024 I traded the desk for a Winnebago and drove a lap of Australia — back now, and on the hunt for the next thing.

C++ / C OpenGL · Vulkan Real-time rendering 65C02 assembly
20 yrs
commercial C++
12 yrs
games @ EA
10 GB+
terrain streamed live
#1
Spy Mouse · App Store

Summary

I'm a C/C++ software engineer with 20 years of commercial experience — 12 of them in the games industry — and a strong background in 3D graphics and maths across Windows, Mac, Linux, iOS and Android.

I've worked the full software lifecycle: design, implementation, testing, debugging and the kind of optimisation where the last week before launch actually matters. Away from the day job I'm a hobbyist coder and Linux enthusiast, which is where the Atari Lynx work lives.

Career

Experience

2024 – Feb 2026 Just back
A lap of Australia
Career break

Bought a Winnebago van and drove a full loop of the country, wrapping up in February 2026. Plenty of time on the road also went into the Atari Lynx Wolfenstein 3D port below. Now back in Melbourne and looking for the next thing.

Aug 2019 – Dec 2021
Mar 2023 – 2024
Visualisation Specialist
Rio Tinto · contract, then full-time

Building and maintaining RTVis, the in-house tool that visualises mine sites, mineral deposits and equipment in 3D.

  • Built a terrain renderer that streams 10 GB+ datasets and displays them in real time
  • Prototyped an Android app capable of displaying large terrain models
  • Maintained the existing codebase and shipped new features
  • Worked directly with geologists and end users to identify and fix issues
Oct 2006 – May 2019
Senior Games Programmer
Electronic Arts (EA)

My dream job — twelve years across many shipped games and prototypes, from requirements and design through implementation, testing and optimisation. Senior engineer and lead across several small teams.

  • Led a small team to finish Back at the Barnyard in just six months
  • Optimised Real Racing in the final week before launch
  • Saw Spy Mouse become #1 on the App Store
  • 3D renderer development; 2D & 3D animation systems across several titles
  • CPU and GPU performance diagnosis and optimisation
  • Rapid prototyping of games and gameplay with designer feedback; tools, exporters and custom builds
May 2005 – Oct 2006
Lead Programmer
Medicvision

My first full-time role after graduating: developing a 3D haptic epidural simulator for medical training and commercialising a haptic temporal-bone drilling simulator — both C++ with an OpenGL renderer.

  • Owned application architecture, all libraries, an OpenGL 2.0 renderer and the custom-hardware interface
  • Directed content creators; liaised with doctors and hardware designers
  • Took technical handover of a voxel-based bone-drilling simulator from the CSIRO
Oct 2004 – May 2005
Programmer
Monash University

In a team of two, built software for haptic research experiments using the Sensable Phantom Desktop and a custom-built haptic glove, "Exograsp" — all requiring 3D visualisation.

  • Gathered requirements with researchers; implemented in C/C++ and OpenGL
  • Created 3D assets in 3DStudio Max and Milkshape 3D
  • Haptic programming against the Phantom and Exograsp APIs

Education

Graduated 2004
Bachelor of Computer Science
Monash University · major in Systems Development

Shipped titles · programming credits

Games I helped ship

Commercially released titles I'm credited on, across mobile and handheld consoles.

Real Racing 3 cover art
Real Racing 32013
iOSAndroid+ more
#1 on the App Store · Programmer
Spy Mouse app icon
Spy Mouse2011
iOSAndroidWP
#1 on the App Store · Programming
Flight Control app icon
Flight Control2009
iOSDSAndroidWii
#1 on the App Store · Programming
Real Racing cover art
Real Racing2009
iPhone / iOS
Programmer · launch-week optimisation
Back at the BarnyardSlop Bucket Games
Slop Bucket Games2008
Nintendo DS
Programmer · shipped in six months
The Fast & the FuriousFugitive 3D
Fugitive 3D2007
Mobile / iOS
Programmer

Hobbyist · Atari Lynx

Pushing a 1989 handheld

The Linux-enthusiast, hobbyist side of the resume. Ports and engines for a machine with 64 KB of RAM and a cartridge that behaves more like a disk drive than ROM. Source released where the licence allows.

Super Mario Bros. on the Atari Lynx
Super Mario Bros. Released
Atari Lynx · NES port

A working port of the NES original. Source is public — build it yourself if you legally own the NES ROM.

github.com/pwsqrd/lynx_smb ↗
Prince of Persia on the Atari Lynx
Prince of Persia In progress
Atari Lynx · Atari ST port

Porting the rotoscoped Atari ST version, animation frames and all, to the handheld.

Another World on the Atari Lynx
Another World In progress
Atari Lynx · Amiga port

A port of Éric Chahi's polygon-driven cinematic — a natural fit for Suzy's vector-style drawing.

Mortal Kombat II sprites on the Atari Lynx
Mortal Kombat II Prototype
Atari Lynx · proof of concept

The dream title. Converted sprites and a background to prove big fighters, moves and a 2-player ComLynx mode are possible.

Featured build · shareware out now

Wolfenstein 3D on the Atari Lynx

Four years in the making — and the shareware release (first three levels) is out now. A port of the 1994 Mac source in a 512 KB cartridge, where the trick isn't the CPU but Suzy, the Lynx's 16-bit sprite engine, drawing each wall as a single hardware-scaled sprite for near-zero CPU cost.

  • BSP renderer ported from the Mac and re-cut for the Lynx
  • Hardware sprite scaling + overlapped Suzy multiply/divide
  • 245 KB of art hand-crushed to 16 colours, packed into 81 KB
Wolfenstein 3D title screen on the Atari Lynx

Technical skills

Toolbox

Languages

  • C++ / C
  • C#
  • Objective-C · Java
  • Python · Lua
  • 65C02 assembly

APIs & libraries

  • OpenGL / OpenGL ES
  • Vulkan
  • SDL · Win32
  • FMOD
  • Berkeley Sockets

Platforms

  • Windows · Mac · Linux
  • iOS · Android
  • Nintendo DS
  • Atari Lynx (Suzy / Mikey)

Tools

  • Visual Studio · Xcode
  • qtCreator · Vim
  • 3DStudio Max
  • Custom engines & profilers

Get in touch

Open to new work.

Open to 3D graphics, engine and low-level engineering work — and always happy to talk rendering, optimisation, or squeezing 3D out of hardware that shouldn't do it.