1. Resume
  2. Blog
  3. Projects
  4. About

Co-founder, CTO at OkLetsPlay

April 2017 – Present

I lead the development of a patented e-sports wagering platform for mobile, console, and web.

Back-end: Clojure + Heroku
Front-end: ClojureScript + ReactNative

Software Engineer SDE3 at TinyCo

March 2016 – March 2017

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 to spec and integrating game UI 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

March 2015 – February 2016

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 Unity 5; 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

August 2014 – March 2015

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 Linux.

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 abstracted 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

June 2014 – August 2014

I built upon an existing, and well proven, cocos2d-x based game engine to integrate 3D rendering support using Ogre3D. The target platforms were Android NDK and iOS, using modern C++, which required some profiling of the rendering 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

August 2012 – June 2014

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

March 2011 – Present

I have been actively developing open source software for a handful of 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 the Rust language compiler, OpenID library for Ruby, OmniSharp server, 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.