Phillip Voyle's Personal Website, and Resume
Background
I grew up in Hamilton, New Zealand. We're the largest inland city in New Zealand, with a vibrant cafe culture, surrounding farming communities, and a university. I went to school at Hillcrest High, and was awarded a computer science scholorship and subsequently studied computer science here at the University of Waikato's school of computing and mathematical sciences. I specialised in computer technology and focused on various low level concepts which I'm interested in.
- Programming languages
- Compilers
- Operating systems
- Algorithms
I graduated with a Bachelor of Computing and Mathematical Sciences with Honours in 2001. My project was to adapt a two dimensional parsing system for use as an editor on an interactive virtual whiteboard, and involved implementing pen gestures.
Key Technical Skills
I'm techically most proficient in C++, but have spent many months at a time in C, and am also proficient in C# I specialise in general programming, but specifically integration layers between different kinds of programming environments.
Some examples:
- A component based reflection API that was then used to marshal calls between C++ and Lua, and to abstractly represent two flavours of user interface
- A VB6 compatible library in C++ that was then used to make apps that listened for OPC security events
- Several VBScript compatible COM components
- .net Services that expose objects to VBScript or COM/C++ apps
Programming Languages
- C++
- C
- C#/.net
- VBScript
- VB 6
- VB.net
- SQL
- Lua
- JavaScript
Technologies
I've had experience using the following technologies and environments
- OpenGL
- DirectX 8 and 9
- Windows/Win32
- MFC
- ATL/COM
- Distributed COM
- .net WinForms
- ASP .net
- Sony PSP
- Dialogic
- FreeSwitch - event socket, and c internals
Industry Experience
I've been involved in software projects in the following industries
- Automotive - at DriveMate during 2000
- CAD/CAM - at Cybertal Ltd 2000-2001
- Security - at Gallagher Group Ltd working on the Cardax security system 2001-2004
- Video Games - at Binary Star Ltd 2004-2005 and then Sidhe Interactive from 2005-2006
- Telephony - at TalkingTech Ltd since 2006
Design Philosophy
I personally lean toward object oriented program designs, preferring loose coupling, but with strict contracts. The gang-of-four Design Patterns book speaks strongly to me and I often refer others to it. While there is sometimes overhead involved, abstractions are generally cheap, and in some cases they are free, and can make systems briefer, more understandable, and maintainable.
Personal Projects
Compiler Toolset
I was using bison and flex to read domain specific languages of various types, but there were some things that I thought that these tools should do, but didn't. In particular I thought being able to assign a different type to each type of terminal or nonterminal in a grammar would make writing a parser safer. The applications generate C++ source code. I think if I did this again, I'd like to use Clang for the code generation, but I did this in 2005 before that was a thing.
https://bitbucket.org/phillipvoyle/whiteblackcat-compiler-toolset
I also wrote a Code Project Article on generating LALR parser tables in C#
Game Engine
This is a work in progress. I spent some time writing a Graphics and Physics Engine for video games.
https://code.google.com/p/e4gamma/
I'm particularly fond of the generalized integration strategies:
Runge Kutta, Euler
Contact Details
Phone: +64-27-574-4684 I'm in New Zealand, so appropriate calling hours are UTC 20:00-9:00 depending on the season.
Skype: phillip.voyle
twitter: @phillipvoyle
facebook: Phillip Voyle