I’m a software engineer focused on Javascript. In my free time, I do Deep Learning in Python.

My code powers projects as diverse as a GPS-tracked fresh produce distribution network, a livechat-based freelancer market that lives inside popular services like Squarespace and Wordpress, a globe-spanning app for community composting, a low-code/no-code back-end-as-a-service, and internal tools for lead prospecting and data gathering.

Why work with me?

Although I love to build with code, I am a technology minimalist. I try hard to discipline my desire to develop with the entrepreneur’s mindset that the customer comes first.

  • Proficient: Javascript (ES5/6), Node, React, GraphQL (Apollo), Serverless/AWS Lambda, Browser Extensions, AWS IoT, Express, Mongo/Mongoose, Git, Github, CSS3, HTML5, Unity, CircleCI, Mocha/Jasmine/Chai, PostgreSQL, Python
  • Familiar: C#, AframeVR, Vue, Bash

A VC once described my core soft skill as: “The ability to perceive exactly what needs to be done. And then to do it.” My experience working in difficult environments around the world means that I can be trusted to get things done, even when things go wrong.

My by-the-bootstraps education is the subject of a chapter on grit and resilience in the bestselling book “Mindshift” by Barbara Oakley.

I am not available for full-time work. But I am available for smaller consulting projects including:

  1. Teaching/workshops on ReactJS and NodeJS
  2. Helping your team understand the transition from legacy front-end apps (think jQuery soup) to single-page apps (SPAs).
  3. Building with Serverless computing
  4. Designing and building prototypes/proofs-of-concept

I’m also an avid reader/writer and relentless optimist. In the past I worked as an entrepreneur in Latin America.

Some principles

  1. If you don’t listen to the customer, you have no compass to navigate the uncertainty of what to build. Nothing wrecks software and hurts software teams more than speaking too rarely to the customer.
  2. Great software does not try to do everything, but instead does a few important things in an excellent way.
  3. New features should fight for their right to live.
  4. Old code and features that no longer serve a purpose should be sent off into the sunset.
  5. In the early days, code should be written with flexibility, which means thinking about patterns and design rather than rushed hacks.

Latest Writing



In the past I have:

More Reading
Newer// Unschooling