Experience

Co-founder, CTO at OkLetsPlay

I lead the development of a patented e-sports wagering platform for mobile, console, and web. I help make crucial decisions, facilitate safe conversations, interface with advisors and investors, and wear every engineering hat necessary.

Our front-end is developed with ClojureScript and React Native and our back-end is running Clojure on Heroku. All transactions run on the NEM blockchain.

Software Engineer SDE3 at TinyCo

I was a member of the Marvel: Avenger’s Academy game team and worked on a variety of tasks, in modern C++, ranging from implementing game features and UI per spec to improving core systems, such as the multi-threaded downloader. I had the opportunity to research, profile, and improve the game’s load times by over 40%.

Always with safety in mind, I gave talks on functional programming and the intricacies of C++ value categories, pushed for regular code reviews, and mentored others to achieve more maintainable code.

Senior Software Engineer at Furthington Studios

I was the lead developer on multiple Android and iOS games, covering the client-side game play as well as implementing the entire back end. All client-side work was done using Unity3D; I spent a great deal of time working in C#, designing type-safe, asynchronous APIs. The back end work was all done in C++14, using Crow, a multi-threaded micro web framework for modern C++.

Some interesting systems I designed and implemented include a type-safe notification system and a procedural music generator using common Jazz progressions and Markov chains.

Senior Software Engineer at Eyeball Networks

My primary focus was on a shared code base of modern C++14 which was used by five different servers, including XMPP and SIP. As my first task, I rewrote the build system for all five servers, using bash and GNU Make, to be more standard and idiomatic; we used Linux exclusively, including CentOS, Ubuntu, and Arch.

To aid in the quality of the products, I was able to spend a great deal of time improving processes; I introduced continuous integration, unit testing, and all changes to the servers were reviewed by me. To improve type, memory, and thread safety, I reworked, rewrote, and improved many existing systems.

A challenging task was to reimplement our C++ authentication code as a generic RESTful authentication server, written in Node.js. This required reading and understanding the TURN RFC’s requirements on authentication, implementing the server, and integrating it into all of the Eyeball products.

I also gave multiple technical talks, during lunches, covering topics such as debugging with GDB, smart source control with Git, and practical uses of modern C++. As we were actively recruiting at the time, I had the opportunity to play a key role as the last stop for candidates interested in the server team; I grew comfortable with the process and testing a candidate’s abilities in a cool, respectful fashion.

Software Engineering Consultant

I built upon an existing, and well-proven, game engine utilizing cocos2d-x to integrate 3D rendering support using Ogre3D. The target platforms were Android NDK and iOS, using modern C++, which required profiling of the renderer to achieve good performance.

I enjoyed working remotely for the whole duration of the project; it was an exciting challenge to quickly learn how to manage remote work and improve communication with detailed write ups and daily check-ins with the project lead.

Software Engineer SDE2 at TinyCo

I was a founding member of the core game engine team at TinyCo. We had the opportunity to not only instill better practices, such as continuous integration and daily code reviewing, but also do a great deal of systems-level API work in modern C++. I developed and integrated a replacement notification system using template meta-programming, which was much more thread-safe and type-safe. During my time at TinyCo, I also reimplemented the texture loading, on Android and iOS, to work asynchronously, using modern C++ synchronization.

The systems I implemented and the APIs I maintained were the core of hit games including Family Guy: The Quest for Stuff, Tiny Monsters, and more; these games manage ~100 million installs across Android and iOS.

I gave multiple talks to the engineering department, covering modern C++ techniques and features, using modern C++ synchronization for threading, and using template meta-programming for type-rich interfaces.

The culture at TinyCo was competitive, yet collaborative; we had many discussions and debates about C++ best practices and architecture design either during review or lunch time talks. At the end of the day, the code was cleaner and better maintained because of our passion.

Open Source Developer at Github

I have been actively developing open source software for several years. Many of my own projects, ranging from game engines and systems-level C++ libraries, to unit testing frameworks and Vim plug-ins, are used by thousands each day. Along with providing support for them, I also have contributed to a number of other projects which are not mine. Some of these include Rust, Clojure, NixOS, Reagent, Fail2Ban, OpenMW, and many more.

In other projects, though I may not merge my own commits, I help the community by reviewing code which others have committed or reporting issues and troubleshooting their causes. The competitive, yet amazingly collaborative environment which is the open source world, be it on Github or in IRC, is a place where passionate developers can certainly thrive; I love being a part of it.