Projects

IODaemonizer

A wrapper for Ruby scripts that speak stdio. IODaemonizer will run the expensive setup steps of a script once, persist the state in a background thread, and then subsequent calls to the script will run in that thread and communicate stderr and stdout back to the caller over a TCP socket.

github

Lillies

lillies.jsch.iogithub

Jot Recipes

A tool for converting Markdown recipes into a printable card format from Ben Cohen's cuisine package for LaTeX. This format puts the ingredients and instructions for each step side-by-side, making it easier to scan while you're cooking. Made with Typescript, React, and Next.js.

jot.recipesgithub

Dance With Mylo

A silly thing I made to celebrate my friend Mylo making the news with one of his tweets. A React app that uses ffmpeg.wasm to add an overlay to a provided image and then uploads the result to Imgur for sharing.

dancewithmylo.com

Hundstein

A Wolfenstein-3D style engine built on the PICO-8 fantasy console. I wanted to try implementing raycasting from scratch, and the PICO-8 provided a fun set of tools and constraints for doing so.

githubplay

RSpec Sleep Study

Sleep Study (gem rspec-sleep_study) is an RSpec formatter that shows you where your specs are blocking on sleep statements in your code.

github

Bookify

Bookify is a gem for converting Markdown documents into book style, two-column PDFs. It starts by converting the Markdown to HTML using Redcarpet. Then it walks through the DOM, and when it encounters a registered component type, renders it using Prawn PDF.

github

Jargon

Jargon (no longer active) is a publishing platform for writing about code. It supports an extended Markdown syntax for embedding code snippets in articles, and publishing is handled by checking in content to a GitHub repository.

ChessForge

ChessForge was a chess opening explorer written in Ember on top of a Rails API. It had a database of 75 million chess positions and showed frequency and win / loss / draw percentages for different opening moves, bucketed by player strength.

Rails 5 Chess

To play around with Rails 5's new Action Cable feature, I built a simple chess server that allows two people to play a game a chess.

github

@dwarfstuff

A Markov chain Twitter bot that uses Dwarf Fortress stories as its corpus.

@dwarfstuff

What Foods Are In Season?

whatfoodsareinseason.com is a Sinatra app that shows what fruits and vegetables are in season in your state.

whatfoodsareinseason.comgithub

Withings Graphs

Withings-graphs is a small app that connects to the Withings OAuth API and displays data using amCharts.

withings-graphs.herokuapp.comgithub

Evolution

Evolution is a program I wrote that tries to mimic a source image by randomly drawing polygons. At each step of the program it tries either adding a new polygon or randomly mutating one of the existing ones, keeping only the changes that make the image look more like the target than before.

github

Urbanairship Gem

The Urbanairship Ruby gem is a library I wrote while developing Groupon's push notification system. It allows you to send push notifications to iOS and Android phones using the Urban Airship API.

I maintained the gem for two years while working at Groupon, and it's now maintained by the Urbanairship team.

github

Grams

Grams was a weekend hack project I did that collects Instagrams from a specific neighborhood and tweets the best ones.

@logangramsgithub

Lovemap

Lovemap is a tile-based mapping engine for the LÖVE game development framework written in Lua.

github

text/cats

text/cats is an innovative content format that represents JSON data in the shape of playful kittens. It was first used in Groupon's public and internal APIs.

example