-
TDD
I was a relatively early adopter of test-driven development and have been enjoying libraries such as PHPUnit for almost as long as they've been released. I'm a fan of building from the ground up, starting with unit tests, followed by feature and then end to end. I use TDD with CI / CD to guarantee stability, and to refactor with ease.
-
OOP
As someone who cut my teeth on C++ in a Windows environment, I was working with the Microsoft Foundation Class library shortly after it was first released. Since then I've built and worked on countless OOP projects and enjoy the pattern to this day.
-
FP
Even though I am a huge fan of OOP, I am very comfortable in the procedural paradigm too. I've worked on and built software for embedded systems where plain C is desirable, and in more cutting edge tech, I shifted paradigm to FP when writing React apps as soon as it became clear that the library was going that way.
-
CI / CD
I employ CI / CD wherever possible and tie this into my TDD approach. I've written deployment pipelines for all popular version control platforms, and use this wherever possible to take the hassle out of collaboration and shipping to production.
-
Debugging
I use stepping debuggers on a daily basis, but I also have a wealth of experience, tools and techniques for debugging non-garbage collected languages, concurrent and parallel applications, and real-time applications.
-
Refactoring
Over my many years of engineering software, I've worked on a great deal of legacy projects, both in terms of very WET projects which are suffering bloat, but also projects written for legacy platforms and in languages that are no longer in use.
-
Optimization
As someone who wanted to be a game programmer from a very young age, I've always been a performance enthusiast. As well as my arsenal of debugging techniques, I am also very well versed in identifying and solving bottlenecks in existing projects, and thoroughly experienced in planning to avoid bottlenecks without succumbing to the pitfalls of premature optimization.
-
2D & 3D Graphics
I am very comfortable in the graphical space and have worked with almost every 2D & 3D graphics library for IBM PC's that has ever been released. I know the fixed pipeline inside out, am very capable of writing shaders and also have experience writing CUDA applications.
-
Physics
I've worked with all the most popular 2D and 3D physics libraries and used them to breathe life into 2D and 3D games and presentations. I am familiar with all the spatial techniques and data structures which span both physics and graphics.
-
Audio & DSP
As a lifelong musician, I've been working with and writing audio software for as long as I've been using computers. I'm very eager to expand my portfolio in this area and would love to do more commercial work involving MIDI, signal processing and audiovisual experiences in general.