PDF version

Summary: Software engineer with leadership skills and deep knowledge of iOS and full stack web development. Writes pretty well and plays in local bands. Willing to work in San Francisco or in East Bay near BART.


Hipmunk: Mobile developer & team lead, July 2015-present

Worked on Hipmunk for iOS. Became mobile team lead in January 2016. Successfully rearchitected a messy code base without rewriting it all at once or slowing down feature development. Blogged about it at http://hipmunk.github.io.

Hard stuff: shipping quickly without technical debt
Fun stuff: shipping good features to users who appreciate them

Graffiti Labs: Game & web developer, 2012-2015

Developed an HTML5 game about free-form creative building in an isometric world. Contributed to game and UI design. Worked with Python, JavaScript, CoffeeScript, functional reactive programming, Salt Stack, nearly every part of HTML5, React.js, web page performance, Pyramid, SQLAlchemy, and iOS (both Obj-C and Swift).

Hard stuff: never properly launching; working in a tiny team for a long time
Fun stuff: evolving a large codebase over time; making a game about doodling and building

Yelp: Spam warrior, 2011-2012

Worked on mrjob, the leading Python framework for writing Hadoop jobs, eventually becoming the primary maintainer. Developed MapReduce-based spam filters. Created a new admin web app for the spam team. Briefly maintained the Tron distributed batch scheduler. Fought with Amazon Elastic MapReduce a lot.

Hard stuff: writing review filters that do more good than harm
Fun stuff: writing lots of documentation; merging large patches to OSS from strangers

Case Database and Bioinformatics Lab: Master’s student, 2011

Wrote an iPad app to browse the PathCase database of biological pathways, then wrote 120 pages about it in exchange for a graduate degree.

Hard stuff: working with a weird, undocumented SOAP API; getting Graphviz to link on iOS
Fun stuff: pretending to understand biology

Cooper Legal Group: Freelance iOS developer, 2011

Wrote an iPad app to browse the US Patent Office and view/manage individual documents.

Hard stuff: screen scraping the USPTO and their strange yet documented URL format
Fun stuff: having lawyers appreciate my design suggestions

Apple: Intern, Objective-C Runtime Team, 2010

Implemented a new graphical memory analysis tool for Xcode Instruments and used it to uncover bugs in Xcode itself. The visual object graphs in the Leaks instrument and the Xcode 8 beta resemble the tool conceptually.

Hard stuff: learning Obj-C for the first time; working with the huge Instruments codebase
Fun stuff: demoing a cool-looking graph tool to the whole dev tools group

MIM Software: Intern, 2009

Developed a prototype for new MIMcloud product in Google App Engine, including Amazon S3 integration, Java upload applet, and HTML/CSS/JS.

Hard stuff: working with complex JavaScript for the first time
Fun stuff: the easygoing culture of a small, successful business


Hobbyist game development: 2003-present

Wrote about a dozen small-to-medium games in BASIC, Python, and JavaScript, including art and music.

Literally Canvas: 2012-present

HTML5-based drawing tool that can be used as a JavaScript library. I work as a freelancer to add features when approached. The project is successful because it has lots of documentation and examples.

Computer Words: 2016

Documentation tool (like Sphinx) that builds a web site from Markdown files and Python source.

Hipmunk open source projects: 2016

Wrote and released several open source libraries used in Hipmunk’s iOS app, mostly related to Swift app architecture.

mrjob: 2011-2012

Maintained the most popular MapReduce framework for Python, including writing most of the documentation, accepting contributions from dozens of outside contributors, and wrangling Amazon Web Services. mrjob is around the 220th most popular Python package.

Education: BS & MS in Computer Science from Case Western Reserve University