Curriculum Vitae
Nicholas Van Sickle
Mission
If there's one bit of contemporary software engineering philosophy I've wholeheartedly embraced it's this: software development is about failure. I've worked in a myriad of industries over the last decade, and I've failed numerous times, all the while still shipping quality products. I wholeheartedly embrace an automate everything, fail rapidly, and iterate without fear approach.Contact
mail@nickvansickle.com
Skills
Between my extensive use of Qt Widgets and my time in the gaming industry, C++ has been my day-to-day for quite some time. I'm an evangelist for strict coding standards while in C++-land, as I find it distressingly easy to write "clever" code instead of simple and maintainable code.
In the absence of other requirements, my go-to scripting language is Python for developer automation and several classes of backend services. I've also written my fair share of Bash scripts, plus more than a few batch/Powershell ones.
As a matter of course I've dipped into the DevOps of things several times, so I have enough exposure to CMake to mislike it while still acknowledging its general merits. WAF and I have had a dalliance.
On the browser side, I'm quite fond of Typescript for its ability to add considerably better safety and tooling to the Javascript ecosystem and, while I'm extremely wary of the "wild west" nature of the web ecosystem, I am quite fond of the iteration speed enabled by browser debugging tools and things like Webpack.
Finally, I'd like to note a deep appreciation for the emergency of container technologies, I've begun using Docker extensively for aligning development, build, and production environments. Kubernetes has also more-or-less made up for its learning curve by way of utility in a cloud environment.
Experience & Education
- Worked to shape the product direction for Sandbox APIs serving millions of customers.
- Owned end-to-end metrics and reporting for Sandbox API usage.
My O3DE contributions are open source.
- Implemented a suite of Qt whitebox testing tools for Python, including a custom async event loop for managing Python execution on the main thread.
- Streamlined the internal build process and migrated an internal fork of Qt to a new third party system in anticipation of the O3DE launch.
- Implemented viewport integration with the Atom renderer within the O3DE runtime and Editor and migrated several systems to the new rendering API.
- Designed a generic, format-agnostic C++ DOM and a DOM-backed, scalable Qt Widgets property editor to replace a legacy property editor.
- Directly managed two frontend engineers, was technical lead for a team of four engineers plus a dedicated QA resource.
- Created a set of voxel labeling tools in a Qt Widgets C++ application to enable a supervised deep learning workflow.
- Wrote a low-overhead RPC framework using ZeroMQ for streaming machine learning inference results from a Python numpy array to our internal voxel data store.
- Created a Python API for a framework agnostic machine learning framework, with a heavy focus on getting the data pipeline correct to enable training interactive, supervised machine learning networks in real-time.
- Architected an HTML5 supervised machine learning product with Photoshop-esque labeling tools displaying voxel slices in a WebGL viewport with a RESTful Python backend integrated with C++ compute plugins.
- Wrote the requisite data platform and Kubernetes integration services for deploying our supervised machine learning application to the cloud.
- Fixed a variety of UI and performance bugs with the engine's Qt Widgets based editor.
- Did what was likely my career deepest dive into C++ templating to add keyed container introspection and mutation to Lumberyard's reflection system.
- Wrote tooling and plugins for a procedural vegetation system.
- Wrote a Steam-style ingame overlay via renderer hooks to display the UI from a Electron-based game launcher inside running games on PC.
- Worked to streamline workflows for a variety of divergent user groups for the internal tool, ranging from gameplay programmers to choreography artists.
- Ported the remaining elements of the Tool's codebase from WTL to Qt.
- Kept FMOD up-to-date and fixed the occasional audio bug as the de-facto owner of that system when its owner left.
- Created a distributed network shader compilation cache backed by Redis to improve Tool performance in-studio.
- Created an animation database and browser backed by a Flask microservice, backed by sqlite.
- Created an automated asset update process run as a nightly build job (batch script + Python, Bamboo CI server).
- Created multiple new content editors for specialized assets, including a procedural animation system and a rich text-based dialogue editor.
- Maintained and extended the Tool's integration with the Plastic SCM version control client for binary game assets.
- Worked on the User Experience team to significantly streamline several workflows for a large enterprise C++ Qt Widgets application.
- Wrote several Squish tests and provided Squish consultation for other departments.
- Championed code quality and stability initiatives, including the removal of thousands of lines of functionally dead code.
- Wrote tools to support a port from Qt4 to Qt5 while mitigating issues caused by strong dependencies on Qt3 compatibility members in the codebase.
- Taught C++/Qt and Squish for on-site client trainings.
- Supervised the creation and architecture of a large-scale Squish test suite against an embedded product.
- Helped develop C++/Qt tools for both internal and external use.
- Developed automated tools to facilitate application migration between Qt 3 and Qt 4.
- Provided consultations for a variety of clients in industries ranging from automotive to medical imaging to oil & gas.
- Implemented several new features, including an automated file renaming feature and functionality for watching a folder to import files to a library.
- Helped rewrite the client and fix bugs as it transitioned from a rapidly prototyped initial version to a cleanly designed rewrite.
- Fixed various cross-platform issues between our Linux and Windows clients.
- Implemented a substantial portion of the gameplay logic, optimized to work with the aging first version of the Unreal engine.
- Wrote native C++ code to work around engine limitations, including hooking game methods using the Microsoft Detours library.
- Implemented a majority of the modification's user interface work, including several minigames such as a fully featured breakout game and IRC client.
- Organized and implemented the project's transition from not using version control software to using Subversion.