CAPABILITIES
-
Passionate about computer graphics algorithms and optimisation from the high level,
all the way down to the hardware level.
-
Very comfortable with low level machine languages. Have quickly learned
several processor architectures. Most recent experience is with PowerPC w/ Altivec and
Broadcom VideoCore II DSP. Have done some work with m68k, PIC, ARM and x86.
-
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.
-
Familiar 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.
-
Capable of working on any hardware or software platform.
-
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 implementor 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 advanage 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 acheive high performance. This can be seen and download free from my website.
-
Spoke in a 1 hour long presentation at World Wide Developers Conference (WWDC) in 2004 (San Francisco Moscone West). The session was on the "OpenGL Shading Language" - a high level, 'C'-like language used to describe operations that are to be performed on a per-vertex or per-fragment basis. This was followed by one on one Q&A with the audience.
-
Spoke in a 1 hour long presentation at World Wide Developers Conference (WWDC) in 2003 (San Francisco Moscone West). I held the session on "Fragment Programming" giving a talk fully explaining this complex technology and trying to inspire developers by showing them stunning graphics examples and then fully explaining their operation. This was followed by one on one Q&A with the audience.
-
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.
-
Implemented ARB_fragment_program OpenGL extension on Apple's Mac OS X. This is the now industry standard method for writing fragment programs.
-
Helped in the design of the ARB_vertex_program specification for OpenGL. This is now the industry standard method for writing vertex programs. I implemented the parser/tokeniser/emulation in Apple's Mac OS X to support this.
-
Implemented ATI_text_fragment_shader OpenGL extension on Apple's Mac OS X. This the first "real" language for doing fragment programming. 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.
-
Spoke at the World Wide Developers Conference (WWDC) in May 2002 (San Jose). I hosted a workshop to introduce a group of 3D graphics professionals to ShaderBuilder, explaining how it could aid their graphics software development. After the workshop, I gave a presentation to a large, more varied audience about ShaderBuilder.
-
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, changingthe program, re-compiling, etc.. It also allows interactive step-by-step debugging.
-
Implemented ARB_vertex_program OpenGL extension on Apple's Mac OS X. This involved helping design a now industry standard specification document, implementing a parser for the language, designing a compact, hardware independent token stream representation of the vertex program and also writing an optimised software emulator which could run the vertex program, even if the latest 3D graphics hardware was not installed. This is now shipping with all new Apple computers with Mac OS X and used in many high-end video games and 3D graphics software.
-
Sole designer/implementor 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/implementor 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.
Used multithreading extensively, with core service being wrapped
neatly into a cleanly designed class.
-
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.
PREVIOUS EMPLOYMENT:
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
|