I write code, make music, and live in New York City. I work at the Recurse Center (FKA Hacker School).

I've spoken at JSConf, Strange Loop, Empire JS, Rails Girls, Brooklyn JS, Front Trends, Applicative and Berlin JS.

Submit a talk to !!Con

Email, Twitter, GitHub

Blog, Tumblr

Mary Rose Cook


Git implemented in 1000 lines of JavaScript. I wrote Gitlet to demonstrate how Git works under the covers. The code is heavily annotated.

Empty Black

A 2D puzzle platform shooter. Throw crates, set off bombs, fire missiles, stab with your sword. Featured in Kill Screen, PC Gamer and others.



A livecoding interface and programming language for young children. The code is on GitHub.


A micro framework for JavaScript games. Handles collisions, the update loop, canvas rendering and input.


Annotated code

Short, heavily annotated JavaScript programs. So far: Space Invaders, circles bouncing off lines.


My latest record on Spotify. Recorded on my phone in my kitchen in Berlin. My band website.


Little Lisp

A Lisp interpreter in JavaScript. Supports if, let, lambdas and closures. I explained the code in this article and this screencast.


A library for composing fragments of behaviour. Put multiple mixins onto an object. Let them communicate with events. I used Andro to define the behaviour of the entities in all my games.


Pistol Slut

A 2D platform shooter. Guns, grenades, parallax scrolling, particle effects. The enemies work in teams. The code is on GitHub. I wrote an article about the collision detection. I talked about the game at JSConf.


A library for building behaviour trees to control game entities. A behaviour tree is a type of state machine that is hierarchical and easier to reason about. I used Machine for the AI in Pistol Slut.