Australian programmer with interests centered around performance and the hardware/software interface, such as the design of new programming languages and compilers, code optimization algorithms to make code run faster, processor chip design and microarchitecture, and parallel programming across many processor cores or many networked computers. Also interested in 3D graphics, including 3D animation, scientific data visualization, and the fusion of the main CPU and graphics-oriented GPU inside processor chips.
I'm a keen, enthusiastic, natural-born programmer, self-taught from the age of 12. I've always loved computers and programming, and over the years I've worked on an amazingly broad range of software, from the lowest, most "nitty-gritty" levels in the system, as close to the metal as you can get, to the highest levels, including having independently written everything from a C++ compiler, a code optimizer, a processor microarchitecture simulator, a threading library and a data-structures library, through to user-interface libraries, stock-market software, a chess game, mobile apps and even a web video component! I've enhanced graphics and printer drivers, worked on 3D animation software, tweaked search engines and network daemons, and setup a CDN. All-in-all, I've had an almost top-to-bottom coverage of the software world.
My primary area of interest is performance and the hardware/software interface, from low-level, nose-to-the-metal code optimization and processor microarchitecture, through to the design of new programming languages and/or libraries for high-level parallelism on multi-core processors, multi-processor systems and networked clusters. There are enormously important challenges to be addressed in the field of programming languages and compilers today, not just the obvious challenge of how to make parallel programming easy and "get back the free lunch", but also improving reliability, security and programming ease. Programming languages haven't changed very much at all in the past 20 years, since the object-oriented revolution. It's time to shake things up again!
My other main interest is graphics, especially 3D graphics. Most of my work in graphics has been 3D graphics for the mining industry, taking their drilling, magnetics and other scientific data and turning it into models and animations to help gauge the size, shape and grade of mineral deposits. Both my brother Dale Patterson and my friend David Gould also work in 3D graphics – Dale teaching animation and games at university, and David doing shading/texturing work for movies like "The Lord of the Rings". It's been great to watch the dramatic improvements in graphics over my lifetime, moving from multi-million-dollar supercomputers doing primitive shaded renderings, to high-performance graphics workstations rendering thousands of texture-mapped triangles, to consumer laptops rendering millions of triangles with programmable shaders for near-photo realism. Today we even have surprisingly good 3D graphics in our phones!
The current movement of graphics processing on-chip into the main CPU opens up many interesting possibilities at the microarchitecture level, which is one of my main areas of interest. Today we're only seeing simple designs which place an independent graphics processor onto the same chip as the main CPU, but I'm sure in time we'll see resource sharing between the two, and ultimately true fusion of CPU and GPU. I intend to play a part in that transition.
I'm also interested in most low-level topics dealing with both hardware and software, such as spiffy new hardware and the internals of operating systems. Some high-level topics which interest me include data structures, graph/network theory, design patterns, user interfaces and networking.
- Frequently asked questions about me (favorites, likes/dislikes)
- My computing background (education, history)
- Details about my company
- The articles & papers I've published (both technical and non-technical)
- And, of course, my various pieces of software
Other Real-World Interests
I'm a daily runner/swimmer and love the beach and the water. In recent years, I've taken up long-distance running on the beautiful Gold Coast beaches. After a lot of training, I successfully completed the Southern Cross 10k in 2009, the Gold Coast Half Marathon in 2010, and finally in 2011 the full Gold Coast Marathon.
I also enjoy playing other sports including tennis, squash, basketball, baseball, sailing and (a long time ago) Australian Rules football. I love golf, even though it can be a frustrating game at times, and water skiing is a real passion of mine.
Music is a big part of my life, both listening and playing (piano/synthesizer). My wireless headphones are a vital asset to me, as are my home and car sound systems. I only wish I had more spare time to actually play, rather than just listen. Being an 80's kid, my favorite genre is electronica, ie: synthesizer music – Axel F, Dreams, Flashdance, The Final Countdown, Chariots of Fire etc.
I'm interested in aviation and aerospace, especially high-performance aircraft and space vehicles. I'd love to get my pilot and helicopter licenses one day, if I could ever arrange enough spare time.
It's been great to watch progress in aerospace pick back up again in recent years with competitions like the X Prize, though it was sad to see the Australian Air Force finally retire the mighty F-111, an awesome plane with which my family has a special fondness and strong historical ties. We gave it a really good sendoff!
Anything scientific or technical also interests me, especially physics, astronomy and genetics. I was a huge fan of Carl Sagan's COSMOS TV series as a child, and would love to do a similar series on computing technology one day – it's way more interesting than people think! Psychology also fascinates me, particularly the work on optimism and positive psychology. I'm an avid watcher of TED talks and think the world desperately needs more avenues like those to get good ideas out into the mainstream. Even in the Internet age, way too many good ideas are lost in today's society.