I write code, make music, work at Hacker School and live in New York City.

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

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.