Experience
2021 — Now
2021 — Now
New York City Metropolitan Area
2016 — 2021
2016 — 2021
Greater New York City Area
Key member of the core team leading the multi-year effort to rewrite our python monolith into a collection of go services (more context here [1]). This included:
• driving key architectural decisions across the org
• carefully introducing new infrastructure around the monolith to enable splitting out code incrementally
• developing foundational libraries and exemplar services
• diagnosing and solving scalability issues in the new system
To avoid issues when rewriting code from python to go, designed and built a 'side-by-side' testing system to automatically compare results between the old and new implementations. We've successfully used this system to safely migrate ~60% of the python codebase thusfar (more details in [2]).
Over several years, co-led efforts to adopt and embrace GraphQL. We started with single feature and gradually migrated all of our backend apis from REST to GraphQL. This effort significantly improved dev productivity and also became a critical part of our plan to split apart our monolith incrementally.
Architected and implemented a streaming data pipeline to support a new generation of classroom and district reports, solving scalability and data freshness issues that plagued the previous version of reports.
Technologies used: Go, Python, Node, Apollo Federation, GraphQL, Appengine, Cloud Datastore, Postgres
[1] https://blog.khanacademy.org/go-services-one-goliath-project/
[2] https://blog.khanacademy.org/incremental-rewrites-with-graphql/
2012 — 2016
2012 — 2016
Greater New York City Area
Co-led development of entire product as we started the organization: a web based, personalized math program for elementary students.
Built dozens of features throughout the tech stack as the product moved from prototype to production use. Selected examples include:
• Account management interface to create, organize and manage student users.
• Reports that enable teachers to track student progress and identify weak areas.
• Content management system that lets authors develop and deploy new math problems with random
variability.
• Interactive ‘feed’ to guide students through the curriculum one activity at a time.
Managed growth of engineering team, recruited developers for full time, intern and contract positions without compromising code quality or development best practices.
Used Docker and AWS spot instances to build a custom system for parallel test runs - cut response time from 7 hours to 30 minutes.
Managed production infrastructure: deployment, metrics, load tests and performance improvements.
Technologies used: Ruby, Rails, Coffeescript, PostgreSQL, Heroku, Docker, Jenkins
2010 — 2012
2010 — 2012
Greater New York City Area
Led development on an formative assessment product used by thousands of teachers nationwide
Developed code at each layer of the technology stack: client side Javascript HTML5 application, server side Java Spring website, Python API data layer and PL/SQL database stored procedures
Led a successful effort to port an complex application written on a legacy platform to the iPad and iPhone
Mentored junior developers, managed offshore developers, actively participated in recruiting efforts and constantly worked to introduce and implement best practices company wide (Test driven development, effective code reviews, hackathons)
Technologies used: Java, Python, Javascript, Spring MVC, Oracle, Jenkins
2009 — 2010
Greater New York City Area
Responsible for the development and maintenance of a widely used Firefox extension(recapthelaw.org) and associated web front end (archive.recapthelaw.org)
Developed a Ruby on Rails application used for web based social science research (allourideas.org)
Mentored two students participating in Google Summer of Code
Technologies used: Ruby, Rails, Coffeescript, MySQL, Python, Django
Education
University of Virginia
BS, Computer Engineering
2003 — 2007