I've spent a lot of time over the years writing on code. Sometimes for money, other times for fun. Some projects get formal releases and versions, many more don't.
- Typed Install, a CLI utility to smartly install type definitions when installing JS packages. I consider this the most useful public code I've ever written.
- Heroku Config, a Heroku plugin for managing project for your environment.
- epub-wordcount, a CLI tool for easily estimating the words in an
- Seymour, a custom feed reader for Slack. Blog post coming at some point.
- Drafts JS Editor, a web editor for writing Drafts workflows while taking advantage of Typescript auto-complete. This project, and subsequent collaboration with Drafts' creator Greg Pierce, led to a new scripting documentation site.
- This Website! It's the third major version of my personal site, this time using React.js and Gatsby.
- refbook, a website that provided automated testing and user registration for the now-defunct International Referee Development Program of quidditch. This was my first large-scale solo project and provided an invaluable start to my career in web development. It was hosted at
- Pitch Awesome was my one and only iOS app based on an idea given to me by my (then) girlfriend. It was a simple pitch pipe that could store a set of opening notes for songs. It's still on my phone to this day!
- While at Zapier, I was a primary maintainer of the Zapier Platform, consisting of a CLI, SDK, and JSON Schema. I triaged issues, performed important refactors, and focused on performance optimizations.
- While at RelateIQ, I wrote the RelateIQ Ruby SDK. This was during the height of my ruby days while working at RelateIQ, this was a fully tested and documented UX-focused wrapper for reading and writing from their API.
These projects aren't available publicly, so you'll just have to take my word for it that they were really cool.
- At Zapier, my first big project on the platform team was to re-write the Slack integration to take advantage of their new webhook features. If you used Slack with Zapier anytime after May 2017, you were using my code!
- I also implemented a version of the public Zapier Developer page. You can see a (mostly working) version of it at the Wayback Machine
- At RelateIQ, my primary job was "Internal Tools". The best one was a internal admin site built with Sinatra that read from our production Mongo database.
- Kerfuffle, a custom web UI to help me randomly pick a show/book/movie. It's gone through a few major iterations and technology changes. Version 1 used Angular 1!
- Will it Play?, a CLI tool for checking if a video file is likely to play on a PS4.
- Advent of Code solutions, for the yearly Advent of Code.
- generator-xavdid, a Yeoman generator for creating Typescript projects. Works for CLIs, frontend, backend, or any combination thereof!
- Airtable Grouped Chart, my award winning (I can't find a link anywhere, but I got a bunch of Airtable credit for this!) custom block for building charts based on grouped properties.
- serenity.forsale, a Gatsby site to sell our converted campervan. The site's source is on GitHub.
- Monkey TS, an implementation of the Monkey programming language written in Typescript. See also: Writing an Interpreter in Go.
- Publists, a project I wrote during my 2016 funemployment to easily share Wunderlists (RIP) publicly.
- Stack Pro, a little webapp I wrote as part of a job app for a now-defunct contracting outfit. Notable because as of time of writing, I believe this holds the record for longest-running code without modification. It's not complex, but it's been operating flawlessly since 2015.
- Monopoly Tracker, a static site that lets users track which Safeway Monopoly tickets they've picked up. Spoiler: you never win.
- Band Groups, a simple static page I wrote for a friend to easily sort a large list of students into groups.
- Dead Simple, a proof of concept for a totally ephemeral, anonymous chat with web sockets.
- Countdown, a site that shows factoids to help you visualize how far away a date is. Mostly defunct now (since the event we were counting down to has passed), but some pretty cute code.
- LoL API, the first major project I worked on. I was hoping to develop a data API for League of Legends data (before Riot Games released theirs. I had a mini CLI that could simulate two characters fighting (on a super simple level).
- I wrote a simple python script on a plane to let a pair of people play Ultimate Tic-Tac-Toe.
There's an exhaustive list of my contributions using this GitHub search (must be logged in), but here are the coolest ones:
- Added a check for DRM in epub files to the
- Wrote Typescript types for the
striptagspackage (ericnorris/striptags#44) and removed them from
- Added the
filesproperty to the
mercury-parserpackage, to reduce the size of the shipped code (postlight/mercury-parser#269)
- Swapped some bash install links in docs to
- Tried to add support for creating new Middleman posts with content pre-filled (middleman/middleman-blog#337)
- In addition to maintaining the
parse-ruby-clientfor a time, I added the
keysoperator to ruby Parse queries (adelevie/parse-ruby-client#148)
- Fixed some typos in
botkit. I honestly love this one, because in hindsight I absolutely misinterpreted their instructions to "Include screenshots and animated GIFs in your pull request whenever possible" (howdyai/botkit#128)
- Fixed a typo in the Standard Ebooks version of Siddhartha (standardebooks/siddhartha#3)
- Fixed a typo in the Yarn website (yarnpkg/website#909)
- VSCode issue about not updating disabled extensions (microsoft/vscode#22461)
- VSCode issue encouraging smarter default save paths for new files (microsoft/vscode#22697)
- VSCode issue that caused big slowdowns in the integrated terminal when there are a lot of escape characters in output (microsoft/vscode#24795)
- Filed an issue about
require-ing real files within a mocked filesystem, which was fixed, broken, and then finally fixed again (tschaub/mock-fs#130)