Ottawa, ON, Canada
Software development for me is a craft. I like clean (as in "Clean Coder") code, separation of concerns, DRY, KISS, self-documenting code, robust and extendable code, refactoring often so that the above can be achieved with agility and speed, and test based development with high degree of code coverage so maintenance can be done with confidence.
I like to know my tools well, whether they be programming languages, libraries, build tools, documentation generation tools, test tools, etc. I like to keep up to date on what is coming up in the next release of a programming language, seek out dependable libraries and locate summaries of best practices so that I can base my work on solid foundations and, when possible, on the shoulders of giants.
Guiding all of the above is user experience, usefulness, and client happiness. I don't mind taking the time to patiently, calmly, and respectfully explain issues to a client until all requirements have a clear, affordable purpose and minimal complexity.
As my contribution to the online community, I maintain three open source projects (I have many others that I no longer maintain but these 3 have stood the test of time): on github I have PyPubSub to support publish-subscribe architecture in Python (this use to be on SourceForge); on SourceForge I have lua-icxx to embed Lua in C++ without having to use the Lua stack, and IOF to provide printf-like formatted output via C++ streams.
I am now in the process of learning Google Cloud Platform (incl. cluster orchestration via Kubernetes; Docker, networking, big data tools like Spanner and BigQuery, etc) and backend technologies like nodejs and go.
Programming languages I most used before transitioning to cloud stack:
- C++ (including templates)
Domains of expertise:
- Machine and business process modeling and simulation
- Virtual Reality
- Publish-subscribe (i.e. Event-based) and Distributed architectures
- System Architecture and Design
- Automation of testing and deployment
- Distributed computing (interprocess communication, network packet analysis)
- User experience, 3D graphics (VR/AR systems)