• 2017 Year in Review

    This year I did a bunch of things, but one thing I didn’t do was blog about every single thing. Here’s a roundup of everything I missed.

    I made some games

    I made three games this year for Ludum Dare 38, 39, and 40: Rogue Basement, Power-Q, and Please, Come In. Their collective soundtracks contain five original songs.

    The only one I really dedicated myself to during Ludum Dare was Rogue Basement, and it shows in the ratings. The other two were experiments with frameworks and genres. But I did polish Power-Q for an iOS release, and you can get it now!

    It feels good to hit a new personal best in game releases, because it means I’m more motivated than ever to take my coding to creative places. And the consistent quality of each game demonstrates how much I’ve learned about game design over time. Rogue Basement and Power-Q eclipse all ~15 other games I’ve ever made in terms of fun and polish.

    I wrote some open source libraries

    Early in the year, I was looking into ways to manage a local music collection and make playback control available to everyone on my home ...

    Read →

  • From PoweRL to Power-Q: game jam to product

    Power-Q is the polished, productized version of my Ludum Dare game PoweRL. They have exactly the same mechanics, but Power-Q has about 30 extra hours of effort invested into it. Before I send it out into the world, I want to reflect upon where those 30 hours went.

    Power-Q is in beta on Mac and iOS. You can get the Mac beta on, but to get the iOS beta you’ll have to email me.




    Game mechanics

    Power-Q is a turn-based game played on an 8-column, 6-row grid. The player is a robot with a health bar and a power meter. They can move up, down, left, or right. Each move drains power.

    The level contains walls, enemies, powerups, and an exit. The overall goal of the game is to reach the exit 8 times. Each level has more enemies than the last. Powerups include health boosts, power boosts, and ammunition.

    There are three kinds of enemies. They move in specific patterns (diagonals, up/down/left/right every other turn, and knight-style) and sap your health when they hit you. There are also “power drains,” which sap your power and disappear if you run over them ...

    Read →

  • PoweRL postmortem

    Ludum Dare 39 fell on a weekend when I wasn’t busy, and I wanted an excuse to learn a bit about Apple’s game libraries, so I made another roguelike, PoweRL:


    Read →

  • Videos of old games

    I spent the day making some basic playthrough videos of some of my old games. Check ‘em out! You can find more info about them here.

    Most of these videos have some kind of disruptive sound.

    Bibble Biter (2005)

    Walaga (2005)

    Canvas Wars 2 (2005?, unfinished)

    There was a Canvas Wars 1, but the code is long gone.

    Whizbang (2005, unfinished)

    Artack (2006)

    You can actually download this one!

    Guy who catches on fire (2007?, demo)

    Tormegra (2007, unfinished)

    Elite Bungie Chopper Squadron (2008)

    Read →

  • The Design and Implementation of Rogue Basement

    This year I participated in Ludum Dare 38, a 48-hour game programming “competition.” I’ve been thinking about trying my hand at a roguelike for a while now, and it seemed like the perfect opportunity to give it a shot. I made Rogue Basement, a bare-bones, single-level game with ASCII graphics.

    In this article, I’ll cover the game design decisions I made, how they affect the player’s experience, and a bit of how they’re implemented. The source code is extensively commented as well.


    Read →

  • Home audio with OS X and cheap consumer electronics

    The switch

    Read →

  • Blogging about iOS architecture at Hipmunk

    I wrote about the work I’ve been doing at Hipmunk over the past year over on over at the Hipmunk engineering blog.

    Read →

  • Computer Words: a new Markdown documentation tool

    TL;DR Computer Words

    I write a lot of documentation. I do it for two reasons: I like writing, and I like to be understood. Documentation is what takes software from “something @irskep put on GitHub” to something you can actually use.

    But I’m not happy with the available tools. Open source documentation for young projects tends to fall into one of three modes if they have it at all:

    1. A GitHub wiki
    2. A directory of Markdown files
    3. A proper web site, but requires a tool no one wants to install or a syntax no one knows, except one maintainer

    Some ecosystems have good, fairly well known tools (see Python and Sphinx), but with the prevalence of Markdown and the convenience of hosting Markdown files on GitHub, I suspect people have been tending toward the solutions with less friction.

    I want it to be easier to produce good documentation sites, without GitHub branding, with a bare-minimum learning curve, and a sky’s-the-limit plugin architecture, so that more projects have better documentation.

    I think I’ve succeeded. Computer Words is a tool written in Python 3 that lets you turn your directory of Markdown files into a beautiful web site ...

    Read →

  • Sometimes they call me Slam Jamsen

    Salvage Operation EP album art

    Graffiti Labs is shutting down next month. I’ll be spending June looking for a new job (edit: found one!) and honing my audio engineering skills.

    As my first act of freedom, I’m releasing Slam Jamsen’s Salvage Operation EP!

    This is a collection of “bedroom tapes” made between 2005 and 2009. The popular vision of a budding high school rock musician is a guitarist sitting on a bed writing bad love songs, but in my case, I was at a desk with a low-end Mac and a MIDI keyboard, sharing the room with two more computers and a treadmill, writing bad video game soundtracks.

    Since the rise of the 4-track, the cost of making decent home recordings has fallen at different rates for different genres. As a so-so piano student and early-to-mid-‘00s Mac user, my options were limited at first to MIDI editors. When Apple’s Garageband program came out, and I finally got a copy, I discovered the world of software synthesizers.

    Video game development was my other major hobby at the time, so it seemed obvious that I should write my own soundtracks. (Otherwise, I wouldn’t have soundtracks at all, given my $0 budget ...

    Read →

  • I played drums on this EP

    The Nest EP album art

    My band The Nest just put out its first EP. Listen to it here!

    Read →

  • I played bass on this album

    Clarity in Hindsight album art

    I just returned from recording an album with SF local artist Anthony Presti. Check it out on Bandcamp!

    Read →

  • The New Dork Times

    I did the best writing of my life in 1997 when I was eight years old, sitting at an old PC with my friend Eric Drury to write the New Dork Times. Although it ran for only nine issues published between 1997 and 1999, its biting social commentary remains as relevant as ever.

    Earlier this year I came across my personal archives of all nine issues of the New Dork Times and decided they were worth two hours of attention to bring to a modern digital audience. I now present to you an online time capsule from 16 years ago, lovingly typeset in its original Times New Roman:

    The New Dork Times – Digital Edition

    Read →

  • Teaching in Turin


    A few weeks ago I returned from teaching “big data analysis with MapReduce” at Big Dive in Turin, Italy. Big Dive is a technology training program about data science (applied statistics), visualization (displaying data in an understandable way), and computer programming.

    Read →

  • We Dreamers postmortem

    We Dreamers is an abstract online sandbox that placed sixth in the Innovation category of Ludum Dare 26.

    Screenshot of We Dreamers

    Read →

  • What I’ve been doing lately

    I recently started my new job at Graffiti Labs after working at Yelp for almost a year and a half. During that time, I did a lot of work on mrjob and tron.

    Now I work on Buildy, a collaborative sandbox web game. I have a few technical blog posts over at the Buildy Blog. I also work on Literally Canvas, an open source HTML5 drawing widget.

    Read →

  • Rendering Buildy’s satellite view: PhantomJS, Beanstalkd, Leaflet, and PIL

    Screenshot of Buildy

    A world in Buildy can be hundreds of square miles. I wrote about the combination of technologies we use to render and display enormous zoomed out world views on the Buildy Blog.

    Read →

  • One thousand users put 250,000 objects in Buildy in 18 hours

    Screenshot of Buildy

    We posted Buildy on Hacker News and it was on the front page for 17 hours. I shared some observations and experiences on the Buildy Blog.

    Read →

  • My Master’s Thesis

    For a while I thought I was going to rewrite these 150 pages of filler interspersed with content, but my willpower wanes with each passing month. Therefore, these links are only for the brave:

    150 pages of insanity

    Defense slides


    Read →

  • Space Train Postmortem

    Space Train logo

    With the end of a semester just past, my course projects are all bubbling up in various states of completion. One of these is a point-and-click adventure game called Space Train: Terror on the Mustachio Express, developed by a team of students from the Cleveland Institute of Art and Case Western Reserve University. Its technical components include an event-driven level scripting system, characters, items, inventory, dialogue, and more. The engine is written in Python using my game programming weapon of choice, the pyglet library. The plot:

    Inga Borga is a poetry-loving senior citizen. One of her favorite authors, Stanislov Slavinsky, is reading his poetry live on the nearby Planet Deux, a short hop by space train from Inga’s home. She wants nothing more than to see Stanislav in person, so she catches the Mustachio Express to Planet Deux. Little does she know it will be a bumpy ride…

    Sounds grand, right? We thought so too, but in typical student fashion we failed to account for one thing: adventure games take a lot of work to make. As a result, the game is only about twenty minutes long. Even so, we all learned from the experience.

    Read →