CAPABILITIES
-
Passionate about computer graphics algorithms and optimisation from the high level,
all the way down to the hardware level. Highly focused on efficiency and closing the gap
between theoretical throughput and measured throughput for real-world scenarios.
-
Extensive start-up company experience as a Founder/CTO of a complex hardware/software computer graphics company.
-
Intimate understanding of ray tracing algorithms from custom hardware through to implementation on
existing parallel architectures.
-
Very comfortable with low level machine languages. Have quickly learned
several processor architectures. Experience includes PowerPC w/ Altivec,
Broadcom VideoCore II DSP, m68k, PIC, ARM and x86 (SSE). I enjoy diving into
new, complex environments.
-
Highly familiar with several high level languages: C, Objective C,
C++, Delphi, Pascal, OpenGL Shading Language, ARB_fragment_program,
ARB_vertex_program, ATI_text_fragment_shader.
-
Extensive hardware bring-up experience working with early silicon and FPGA prototypes.
-
Experience with hardware design concepts. Developed many C-Models of hardware pipelines from
algorithmic level to cycle accurate level when necessary. Familiar with hardware simulation flow
and digital waveform viewers, etc.
-
Experienced with embedded environments, using JTAG on chip debug and measuring
power consumption.
-
Experienced with the communication of ideas and working with a large number of different people,
often spanning multiple organisations and companies to work towards a final product. This
required care by always being aware of what is confidential information and working around those
constraints.
-
Experience in compiler design and implementation. First hand experience of writing
language parsers, tokenisers, optimisers and runtime compilation for execution on
a specific processor.
-
Experience in highly efficient processor emulation through implementing Apple's
emulators for the very latest 3D graphics processors.
-
Comprehensive knowledge of OpenGL, specifically programmable graphics hardware such
as vertex and fragment programming.
-
Experienced presenting complex subjects to large audiences via talking at Apple's WWDC yearly conferences.
ACCOMPLISHMENTS
-
Designer and lead implementer of a fully programmable, high performance, real time OpenGL software renderer for the Broadcom VideoCore II DSP. This processor consists of a 32bit integer scalar unit and a 16bit integer vector unit with 16 cell processors - the whole thing runs at only 150Mhz, a fraction of what typical modern processors run at. Designing an OpenGL renderer for this unusual and challenging hardware required exclusively fixed point arithmetic and an innovative tile based triangle rasterisation scheme to take full advantage of its parallel processing capability. The result was an ultra low power consuming part capable of running sophisticated OpenGL software with fill rates exceeding 80Mpixels/second while being ideal for use in a battery powered embedded device.
-
Implemented a fully programmable, high precision, real time floating point software renderer for the Macintosh. It includes complete support for the OpenGL Shading Language and works by using a sophisticated runtime compiler that stitches block of hand written PowerPC Altivec code for all the shader functions and then does register allocation between the blocks to minimise memory access thus delivering high performance. This renderer is used primarily within Apple's professional graphics software when the precision or capability of the graphics hardware is inadequate.
-
Designed and implemented a highly realistic real time kaleidoscope simulation for the Macintosh. It leverages the 3D graphics hardware to achieve high performance. This can be seen and download free from my website.
-
Multiple World Wide Developers Conference (WWDC) presentations on behalf of Apple Computer, Inc. Fielded extensive questioning from large audiences.
-
Assisted the iChat project group at Apple by providing a compositing library (built on OpenGL) to help them get the video conferencing video displayed on screen quickly, and with low CPU overhead. This is now in use today in Apple's iChat AV video conferencing program.
-
Designed and implemented ARB_fragment_program,ARB_vertex_program OpenGL extension on Apple's Mac OS X. These became industry standards method for writing interactive shaders on GPU's. This included participation in the OpenGL standards committee, implementing language parser and hardware independent byte code.
-
Implemented ATI_text_fragment_shader OpenGL extension on Apple's Mac OS X. This the first "real" language for doing fragment programming on a GPU. Since at the time, hardware was very limited, the language had some limitations but regardless, it allowed impressive realtime per pixel effects to be done using the ATI Radeon 8500 series of graphics cards. Again, this involved writing a parser for the language, and working with ATI's driver developers to translate the token stream into the code that would run on their graphics card.
-
Designed and implemented Apple's "ShaderBuilder" vertex/fragment program development tool for Mac OS X. This ships with all Apple computers now and on the Mac OS X box set on the Developer CD. It allows interactive creation of vertex and fragment programs. You can type in your program, get realtime syntax information and see your effect evolve as you type. This replaces the traditional way of writing these programs which involved writing it, compiling, running, finding its not right, changing the program, re-compiling, etc. It also allows interactive step-by-step debugging.
-
Sole designer / implementer of portable vector graphics rendering engine and
encoding scheme optimised for handheld devices. It has input loading
filters for common industry standard vector image formats such as CGM and
AutoDesk DWG. Used commercially inside FireViewer, a PalmOS graphics viewer by Firepad, Inc.
-
Designer / implementer of a Palm conduit application which allows
entire websites to be recursively trawled and downloaded then packaged
for delivery to the FireViewer application on the handheld device.
-
Portable 3D raycasting engine, written in C.Utilised in Dreadling
for the PalmPilot. Featured in New York Times.
-
Vexed - A highly popular puzzle game for the PalmPilot written in C.
-
Landscape generator written in C for UNIX / Xwindow system.
-
Subtitle script decoder and timer written in C for UNIX / Xwindow system.
-
EDling - A Windows based level creator / editor for Dreadling written in
object oriented form using Delphi.
-
Kingswood Sheep - A Windows based pedigree sheep farm management
program, written in object oriented form using Delphi, with SQL database
links.
-
CPU temperature monitor and LCD Graphics Display, utilising an Analogue to
Digital convertor and PIC microcontroller (programmed in assembly language).
-
3 Channel Stereo audio effects mixer.
-
Weather station which connects to a server computer system. Implements TCP/IP
client / server architecture, written for UNIX in C.
-
Grade 8 (Maximum Honour) in Piano performance.
EMPLOYMENT:
2006 - Present:
Founder / CTO,
Caustic Graphics, Inc.
San Francisco, California
2001 - 2006:
Sr. 3D Graphics Engineer,
Apple Computer, Inc.
Cupertino, California
2000 - 2001:
Software Engineer,
Firepad, Inc.
Mountain View, California
1997 - 1999:
Lead Programmer and UNIX Server administrator,
TGM Computer Systems,
Hillsborough,
Northern Ireland
Summer 1999:
Web author, SQL management and Server admin,
BizNet Solutions,
Belfast,
Northern Ireland
EDUCATION:
1993 - 2000
Methodist College Belfast,
Northern Ireland,
A-Levels in Maths (Pure / Applied), Technology (Electronics) and Computing
|