Skills & Competencies


I have proven my ability to solve problems in varied and new-to-me domains numerous times. Regardless, every professional develops a set of core competencies. Mine are as follows:


Expert competency. I’ve worked in everything from bootloaders to the Linux kernel (1, 2) to OpenGL. I most appreciate C development work targeting GNU/Linux, including integration with dbus and systemd.


Expert competency. I’ve written many proprietary (non-FOSS) applications in C++98, C++11, and C++14, including for SpaceX and Safran Aerospace. I’m familiar with both object oriented and generic programming (e.g. template) paradigms. I’ve rarely encountered template metaprommaming in industry, but it’s been interesting every time. Type traits and PIMPL are my signature moves. At Safran Aerospace, I wrote the cross-application non-fatal assertion library common to all software, was the primary engineer for integration with GStreamer, and became quite familiar with Qt5 interfaces.


Expert competency. Through my involvement with systems software at Safran Aerospace and SpaceX, I’ve become proficient with POSIX shell scripting for system management tasks. Similarly, Safran’s primary release management system is written in Bash. For all its nuance, syntactic oddities, and non-existent unit tests, that system has managed their major releases for approaching fifteen years.


Advanced competency. My experience is solely with Python 3. I chose Python for a tool to help Safran migrate build artifacts across storage technologies.


Novice competency, mostly with Java 6.


Novice competency. My M.Sc. thesis was written in Matlab.


Novice competency. Enough to create this website.



Level Definition
Expert I can solve most problems unassisted. I am aware of best practices.
Advanced   I’ve worked with it enough to be comfortable solving most problems with the aid of a search engine.
Novice I’ve encountered it professionally, but not enough to establish comfort.