I grew up in Duluth MN, graduated from MIT in 2018, and now live in Brooklyn.

I'm broadly interested in

  • web3
  • text editors
  • "tools for thought"
  • category theory
  • HTML
  • offline-first apps and p2p collaboration
  • what it's like to be online right now
  • ontology, representation, identity, agency, belief, meaning
  • Hannah Arendt, Marshall McLuhan, Simone Weil, Ivan Illich
  • the pro tennis tour


  • mimc.party - a web tool for calculating MiMC hashes
  • next-rest - a framework for writing end-to-end typesafe REST APIs for NextJS
  • nil.directory - for when you forget what the IPFS hash of the empty directory is
  • fp16 - 16-bit half-precision floating-point numbers for JavaScript
  • big-varint - encode and decode arbitrarily large signed and unsigned varints in JavaScript
  • react-dataflow-editor - a generic drag-and-drop dataflow editor for React
  • ziterable - a tiny TypeScript utility for doing generic and variadic iteration
  • brainfreeze - a fully homomorphic implementation of Brainfuck
  • mental.bike - reminding us to not lose sight of how good things could be
  • thingsandstuff.com - self-explanatory
  • json.scm - JSON implementation for MIT Scheme


In 2018 I joined Protocol Labs as an independent research scientist, working with the Knowledge Futures Group on the Underlay.

In summer 2017 I interned at Notion in the run-up to the Notion 2.0 launch that introduced tables and databases. I designed and implemented the DSL, runtime, editor, and documentation for formulas.

screenshot of the formula input component

Throughout undergrad I worked with Gerry Sussman on various Scheme projects, like a native Jupyter kernel for MIT Scheme and some experimental notebook programming interfaces.

a notebook UI for scheme with cool widgets

I also worked as an undergradudate researcher in the Viral Communications Group at the Media Lab on an early version of PubPub, an open access publishing platform.