Skills

Rather than claiming skills with specific languages or environments, I’ll just say:

  • I like to think about software architecture and algorithms, fine-grained performance optimizations, and everything in between.
  • I enjoy learning new languages and systems, and I’m flexible about different approaches to writing code and building software.
  • I work and play well with others.

Education

Harvard Graduate School of Education2006—2007

Degree: Master of Education
Focus: Philosophy of Education, Teaching and Learning, School Reform

Carnegie Mellon University2000—2003

Degree: Bachelor of Computer Science and Mathematics
Focus: Programming Languages, Mathematical Logic, Computability and Gödel’s Theorem, Discrete Math

Experience

Mapbox2017—present

A mapping and location software company. https://mapbox.com

Developer

Helping to build Mapbox GL JS, a Javascript library for rendering fast, rich maps in web brosers, and Mapbox GL Native, an analogous C++ library powering several platform-specific map rendering SDKs.

Development Seed2015—2017

A design and development shop using open source tools and open data trying to do some good in the world. https://developmentseeed.org

Developer

Traveling & Freelancing2014—2015

While my wife and I took the rare opportunity of synchronized job transitions to travel abroad and visit family, I worked on side projects and a couple of small freelance contracts.

Side Projects

  1. EuclidJS Euclidean geometry in javascript: a library to parse an English-language description of a geometry figure, model it, and render it with SVG. (The dynamic background on my front page is an example of this.)

  2. doiuse.com A site and its accompanying tool for linting CSS for browser support using caniuse.com data and convenient autoprefixer-like browser description.

The Park School of Baltimore2007—2014

A K-12 independent school in Baltimore, Maryland.

Teaching: Math and Statistics

Taught courses ranging from basic ninth grade math to Abstract Algebra. Regardless of the particular content or the ability level of the students, my approach to teaching math has always focused on problem solving, exploratory thinking, and reasoning. It’s about the joy of puzzles, the value of skepticism, and the beauty of proof.

Teaching: Computer Science

Developed two semester-long introductory programming courses–Game Programming and Web Design and Programming. Both were project-centered, designed to get students making real stuff as soon as possible and based on the principle that important theoretical principles are best learned when they help you understand a genuine problem you’re facing.

Supervised independent studies for advanced students on Data Structures and Algorithms, Speech Processing and Production, and Computer Graphics (Ray Tracing).

Data Analysis: Student-led Arctic Research

Served as the de facto data analyst of the group, both managing / analyzing / visualizing the 9-year, 40-variable, multi-1000-row dataset and teaching students the statistical programming language R so that they could do so themselves.

Co-Author: Park School Mathematics Textbook Series

From 2007 to 2010, my colleagues and I worked together to write our own textbook series for 9th-11th grade math, centered on problems and problem solving rather than on facts and techniques. Rejecting the notion of a teacher-proof textbook that legalistically lays out the steps of a technique and all its potential edge cases and variations, we chose instead to create a text whose purpose was to generate rich and messy mathematical conversations. So there are no explanations, no worked out examples, no reference material—all of that is the work of the students and teacher together in the classroom.

Mindreef2003—2006

A startup in Hollis, NH that built tools for developing and testing SOAP/ WSDL-based web services. Acquired by Progress Software in 2008.

Developer

Worked as a member of the 6-person dev team, with both solo responsibility for major parts of the codebase and collaborative responsibility for developing features, general maintenance, testing, bug fixes, etc. The main product was a Java server with a rich web UI (despite the savage and perilous pre-jQuery era), but there was also substantial work in C#/.NET.

Co-creator: ‘Pseudocode Meta Language’

A colleague and I stayed after work one day, excitedly discussing an idea we’d had for how we could use the programming language theory we’d learned in college to overcome some important limitations in one of Mindreef’s product features. A few late nights later, we’d built a prototype, and a couple weeks after that, we had “PML”, an underlying type system to consolidate and coherently represent the typing information scattered throughout collections of WSDL and XML Schema documents. Theoretically elegant as this was, the real importance of this work was in enabling multiple unique core features in Mindreef’s products.

Patent Co-Inventor: Method and system to collect and communicate problem context in XML-based distributed applications.

Intertect1999—2000

Four high school geeks renting an apartment as an office, trying to create a meta search engine. Google pretty much ended that one, but the company later became Pinpoint, then Motricity.