Ben Vinson

Software Engineer / Problem Solver

ben@benvinson.dev


Experience

Principal Software Engineer

Kongregate
  • Provided technical leadership, design, and architecture for Kartridge, a greenfield Electron desktop gaming Steam competitor while mentoring and clearing hurdles for more junior developers.
  • Wrote the Production Troubleshooting Playbook to assist other developers debug and solve outages within our AWS infrastructure and application code. This allowed us to expand our on-call rotation to the entire engineering team instead of a few more experienced individuals.
  • Ensured that Kartridge open beta successfully launched on-time with minimal bugs.
  • Created and documented a cross-platform C/C++ API so that developers could integrate with the Kartridge platform from any number of development toolchains.
  • Led the technical effort on creating a highly scalable microservice-based chat system using Node, SocketCluster, AWS Fargate, and DynamoDB.
  • Upgraded the Kongregate platform to support SSL while maintaining backward compatibility for legacy HTTP-only games.
  • Converted Flash/ActionScript APIs to transparently use JavaScript behind the scenes to reduce dependencies on Flash as Google continued to remove support in Chrome.
  • Took the lead on upgrading our platform to modern Ruby 2.5 and Rails 5 packages from previous legacy/unsupported versions.
2017-2019

Senior Mobile Engineering Manager

Kongregate
  • Assisted third party game developers by offering best practices for scaling, load-testing, optimization, and deployment to ensure their projects were able to succeed.
  • Lead architect on the Kongregate Mobile SDK which which enables analytics, chat, achievements, high scores, forums, and more in hit mobile games such as AdVenture Capitalist and Animation Throwdown.
  • Created a distributed Ruby chat system using Faye, Redis, and EventMachine that scaled to 350k concurrent users.
  • Led the research and development of Kongregate Arcade for Android which allowed users to play hundreds of Flash games on their Android devices while using the social features of the platform.
2015-2017

Senior Software Engineer

Kongregate
  • Was instrumental in developing and fostering the growth of the Kongregate platform during the startup phase of the company.
  • Built a downloadable games platform, which consisted of a C/C++ API and a native Windows client based on the Chromium Embedded Framework for browsing and managing games.
  • Implemented chat, achievements, high scores, and notification systems using Java, XMPP, ActionScript, Redis, and Ruby on Rails. Scaled the system from supporting hundreds of concurrent users up to 80,000+ with abundant headroom for future growth.
  • Developed and documented the Kongregate API, which provides ActionScript, Javascript, C/C++, and REST interfaces, allowing nearly any game to integrate with the site. The API provides functionality for statistics, game events, virtual currency, authentication, and more.
  • Worked extensively on both the client and server component of Kongregate’s multiplayer card game, Kongai. The game holds an excellent rating, and is approaching 15 million game plays.
2006-2015

Software Engineer II

Electronic Arts/Pogo
  • Let the development effort on EA/Pogo's Connected Downloadable desktop platform from the ground up using C++. The platform was fully integrated with Pogo’s existing back-end. This allowed players to earn badges and chat with their friends from within the downloadable client.
  • Delivered the first game released on the aforementioned platform - The Poppit Show. Due to its rich integration with Pogo’s back-end features, the game converted at a much higher rate than existing downloadable shareware games.
  • Wrote the software for the single-player matching game Quick Quack, while shocking the QA team with the very low number of defects.
2005-2006

Software Engineer

Center for Severe Weather Research
  • Ported many components of a complex radar system from DOS/QNX to run on Windows XP including the display, archiving, networking, and DSP code.
  • Developed C code that interacts directly with a custom PCI signal processor card to manipulate memory mappings, interrupts, and registers.
  • Created a multi-threaded application that allows real-time display and archiving of 6 separate streams of radar data received via UDP.
  • Rewrote the network interface used by the system to achieve the throughput required by the large amount of data generated.
2001-2009

Senior Developer

DreamQuest Software
  • Responsible for maintaining and developing 8 commercially successful games on 5 different platforms including Windows, Palm, and PocketPC.
  • Created a P2P UDP networking system for online play that included features such as reliable transmission, NAT/firewall negotiation, and relaying.
  • Developed a scalable multiplayer lobby layered upon an IRC server to keep track of players and in-progress games.
  • Completely re-factored the product line’s user interface so any aspect of it could be fully customized using plug-ins and skins.
  • Implemented an efficient and portable chess AI library featuring alpha-beta pruning, iterative deepening, and memory-based learning.
2002-2005

Education

University of Colorado Boulder

Bachelor of Science - Computer Science
August 2000 - May 2005

Classes & Certifications

DAT263x: Introduction to Artificial Intelligence (AI)

Microsoft / edX.org
Verified Certificate
August 2019

DAT208x: Introduction to Python for Data Science

Microsoft / edX.org
Verified Certificate
August 2019

DAT256x: Essential Math for Machine Learning: Python Edition

Microsoft / edX.org
Verified Certificate
August 2019

DAT249x: Ethics and Law in Data and Analytics

Microsoft / edX.org
Verified Certificate
September 2019

DAT273x: Data Science Research Methods: Python Edition

Microsoft / edX.org
Verified Certificate
September 2019

DAT236x: Deep Learning Explained

Microsoft / edX.org
Verified Certificate
November 2019

DAT257x: Reinforcement Learning Explained

Microsoft / edX.org
Verified Certificate
December 2019

Introduction to Apache Spark

BerkeleyX / edX.org
Verified Certificate
June 2016

Distributed Machine Learning with Apache Spark

BerkeleyX / edX.org
Verified Certificate
August 2016

Big Data Analysis with Apache Spark

BerkeleyX / edX.org
Verified Certificate
September 2016

Tackling the Challenges of Big Data

MITProfessionalX / edX.org
Verified Certificate
August 2015

Unity 5 Lighting Fundamentals

Udemy
Certificate of Completion
April 2017

Complete Unity Developer Course

Udemy
Certificate of Completion
November 2016

Creating a 3D Cross Road Game

Udemy
Certificate of Completion
November 2016

Inclusive Leadership Training: Leading with Effective Communication

CatalystX / edX.org
Verified Certificate
May 2016

Inclusive Leadership Training: Get Beyond Work-Life Balance

CatalystX / edX.org
Verified Certificate
April 2016

Inclusive Leadership Training: Becoming a Successful Leader

CatalystX / edX.org
Verified Certificate
February 2016

Leadership for Engineers

DelftX / edX.org
Verified Certificate
February 2016

The Science of Everyday Thinking

UQx / edX.org
Verified Certificate
June 2016

Entrepreneurship 101: Who is your customer?

MITx / edX.org
Verified Certificate
April 2015

Publications

Software Engineering For Game Developers

Thompson Publishing
Lead Engineer

While studying at CU, John Flynt reached out to me about putting a team together to create a game that would be the basis for his book Software Engineering for Game Developers. I lead a team of students consisting of engineers and artists in creating Ankh, a 3D turn based strategy game similar to Final Fantasy Tactics or XCOM. The game featured a custom engine built on top of Direct3D as well as a level editor to create your own campaigns. In all honesty this was a very difficult project to finish while simultaneously taking classes and working various part-time jobs, but I am extremely proud of how it came together. Below are some quotes from an Amazon review talking about the game we built. It is an amazing feeling to know you have helped someone out on their quest to learn how to make games:

The glory of this package - the beautiful, incredible magic of the package - comes from the attached CD. The book is supposed to guide you through the development of a full video game, and to that end they have written an impressively large game called Ankh.
You will see the actual development of a complete 3D game from start to finish. It is fully OO, programmed in 100% C++, and you are going to be amazed as you watch it come together. Take the source apart, look at what they add from stripe to stripe, and see how it all comes together.
Seriously, this CD was EXACTLY what I needed to take my C++ books and my DirectX books and learn how to bring them together into a knowledge of software engineering. The book itself is so dull that in 7 years of owning it I have never read more than 100 pages of it. But the CD... oh, this CD was key in my formative days. If you are looking to really learn how object oriented game programming comes about, do whatever you can to get ahold of this CD. It is going to provide you with months of educational gold.

2004

Simulation and Event Modeling for Game Developers

Thompson Publishing
Co-Author

I wrote this book with John Flynt during my senior year at CU. It covered various topics about simulation and how it could be applied to game development. Each chapter included an example application built using a custom game engine built on top of DirectX using C++. If I'm being honest with myself, this follow-up effort at creating a book taught me that I'm a much better engineer than author. That being said I'm still proud that we were able to complete the book on time and I learned a lot in the process.

2005

Engagements

Game Coding Crash Course

Denver Comic Con
Presenter

This presentation at DCC 2017 was intended to introduce game development to people with little to no programming experience. I took one of the most basic Unity tutorials and expanded upon it in several discrete steps to create a simple game using C# in about 20 minutes. At the end of the talk we asked who now felt confident enough to start developing games on their own and the majority of the participants raised their hands, which was amazing!

View slides
GitHub repo for the example game
2017

Leeroy Jenkins & The PALS FOR LIFE

Art Institute of Colorado
Panelist

The Art Institute of Colorado invited Leeroy Jenkins and his PALS FOR LIFE to host a panel to talk about the origin of our famous video and discuss how online gaming has changed since then. It was great to get the gang back together and talk shop with our fellow gamers. One talented student who attended was nice enough to sketch a picture of the panel members:

Presentation summary
2017

Avoiding the Danger Zone: Scaling & Load Testing

Kongregate Dev Days
Presenter

This was a talk I gave along with fellow Kongregate co-workers Ryan Golec and Max Murphy. The focus was scaling and load testing, with the target audience being smaller independent game studios. We covered the creation of Kongregate's new chat system KWAK (chat with a K) and discussed the many hurdles we ran into (and thankfully solved) while attempting to hit our target goal of 350K concurrent users. The talk was very well received, and it was great to field questions and discuss similar problems other developers have run into and how they solved them.

View slides
2016

Skills

  • Languages: TypeScript, JavaScript, Ruby, C/C++, Java, Ruby, C#, Objective-C
  • Frameworks: Rails, Node, React, Ember, Unity, Electron
  • Technologies: HTML5, WebRTC, Android, iOS, AWS, CloudFormation, Lambda, SQL, Redis, Git, GitHub, XMPP, DynamoDB, Docker, Puppet, Jenkins, Travis, AppVeyor
  • Concepts: Video Conferencing, Performance, Scaling, Benchmarking, Gaming, Graphics, Networking, Distributed Computing, Microservices, Mobile, Cloud Computing, DevOps, Load Testing, Analytics, TDD, Cross-Platform, SDKs, APIs, CI/CD

Fun Facts

Storm Chasers

I wrote a bunch of the software utilized by the Doppler on Wheels trucks featured in Discovery's Storm Chasers show.

Neat!