I'm thrilled when a tool I build is used to build something else.

Simperium2010 – 2013

In 2010, our app Simplenote was getting attention for how it synced notes between devices. My friend and I cofounded a company to build a service that makes it easy for other developers to sync data in their own apps. I wrote, open sourced, and maintained the Simperium iOS SDK and some of our developer site.

We joined Y Combinator, raised money from investors, and were acquired by Automattic, makers of WordPress. Simperium now syncs data for millions of users of Simplenote, WordPress.com, and third-party apps.

Metanode SDK2006 – 2007

After working on the visual scripting system used in BioShock and other games, I saw an opportunity to leave Irrational Games and build what I called the Metanode SDK (C/C++). It was a skinnable scripting system with arbitrary visual representations mapped to an abstract syntax tree, a topic I had researched at university.

Metanode could be plugged into game engines and used by designers to create events, sequences, and AI behaviors. Though it supported common visual representations like circuits, interlocking blocks, and parameterized English sentences, I was much more excited about creating brand new representations.

Not wanting to work alone, I ended up pausing development to join some friends and build projects for Android and iPhone instead (including Simplenote).

Gamecaster is a physical camera used for recording live footage inside video games. The company contracted me to make it work with Battlefield, Unreal, and Tribes.

To make it work, I had to reverse engineer Battlefield's executable to find where the field of view was stored in memory. I built a parasitic program that found this value and smoothly adjusted it whenever the Gamecaster's zoom buttons were pressed. For Unreal, a much more open game, I built a more typical, general purpose SDK.

I worked at a few different companies while doing my Computer Science degree. My favorite project was also the first time I ever compiled a Linux kernel, read some RFCs, and saw how much money a company can make from consulting. I had to modify a large IPsec library (C/C++) and its many tests to make it support IPv6. This work was used in a VPN toolkit at Nippon Telegraph and Telephone in Japan.