Maia McCormick

Programmer, writer, nerd


This page is woefully out of date; I’m busy with exciting problems at work and exciting things in life, and if I’ve got spare time for coding I want to be hacking on stuff, not writing descriptions of the stuff I’m hacking on. So until I get a chance to overhaul this properly, this page will remain basically an archive of the stuff I worked on at the Recurse Center. If you’re curious about what I’ve been up to more recently, go poke around on my Github. Enjoy!


(Python, JQuery, Django)

What: a searchable Django database of folk dance choreographies.

When: Summer 2014 (Hacker School) –> ongoing

Why: contra is one of my big interests outside the hacking world. I’m a dancer, caller (i.e. dance leader), and dance writer, and I’ve always wanted a big, comprehensive database of dances so that I could go looking specifically for [dances that have weird but cool move sequence X-Y-Z] or [dances that end with move A], etc.

Status: very much a work in progress. Some day it will be operational (and pretty, too)! Some day!


(Javascript, codeheart.js)

What: a gravity-bending platformer exhibiting the finest of programmer art. Want to know more? Play it here!

When: January 2014

Why: Williams College Game Jam ‘14

Status: shiny and done!



What: a version control system, more or less an imitation git.

When: Fall 2014 (Hacker School)

Why: to get experience writing (and perhaps more importantly, organizing) a more complicated program with more moving parts; as a test to see just how well I understood the inner workings of git; more practice writing tests.

Status: tabled for now. This is not the final product, but I’ve gotten plenty out of this project, enough that I feel good about moving on for now and coming back to it sometime later whenever I get inspired to.

Markov Generator(s)

(Python, NLTK)

What: a) a Markov chain text generator that generates pseudo-random text in the style of a given corpus, and b) a part-of-speech-based Markov generator that attempts to combine a basic Markov generator with part-of-speech constraints.

When: Summer 2014 (Hacker School)

Why: do a cool project to learn some more Python! Maybe learn things that can be applied to future cool projects (haiku generator, anyone?).

Status: both the regular and POS Markov generators are finished and operational, and both generate texts somewhere on a continuum of `total nonsense –> vaguely syntactical gibberish –> the text repeated verbatim`. POS Markov gen was notably less successful than I had hoped.



What: a command-line app that manages phonebooks.

When: August 2014 (Hacker School)

Why: bite-sized coding exercise: I wanted to pick a smallish, self-contained task, sit down for a few hours, and turn out a functional finished product.

Status: it works! Not that anyone will ever use it to keep track of their phone numbers, but it works!


(Python, NLTK, Zulip API)

What: a bot for Zulip (Hacker School’s internal chat program) that lurks until presented with an opportunity to make a quote-unquote “pun” of the form, “Parse ‘er? I hardly know ‘er!”

When: Fall 2014 (Hacker School)

Why: because PUNS! Also, I wanted to get practice working with someone else’s API.

Status: shiny, done, launched on Heroku, and promptly retired, as (much to my surprise!) it turns out that “[blank] ‘er? I hardly know ‘er!” is only funny for so long.

Student Chooser


What: a command-line app for teachers that almost-randomly picks a student from a given roster. Supports multiple classes and absence-tracking.

When: July 2014 (Hacker School)

Why: to teach myself Python!

Status: as done as it’s going to get. Not the most functional, but it does what it’s supposed to do (and was more a coding exercise than a tool for use, anyway). Recently refactored (without changing functionality) just to see what the difference would be.

Sudoku Solver


What: a sudoku solver; takes a board (as a big long string), solves it, and prints the solved board to terminal.

When: September 2014 (Hacker School)

Why: as an exercise in pair programming (written with Miriam Lauter) and in writing tests/TDD.

Status: solves most sudoku boards, but not nondeterministic ones (i.e. boards where you can’t find one unique solution just from narrowing down the options of each square until one remains).