Projects
Big and Small
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.
Greatest Hits
- 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
epub
file. - 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
refdevelopment.com
- 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!
Via a Job
- While at Stripe, all of my public open source contributions are available under the xavdid-stripe GitHub user.
- 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.
Closed Source
These projects aren't available publicly, so you'll just have to take my word for it that they were really cool.
- At Stripe, I work primarily on our Sandboxes backend.
- 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.
B-Sides
- 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.
- 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.
Appearances
I've been interviewed for various external projects. Here's a list, most recent to least:
- JSON Schema in Production, ep 4, interviewed by Ben Hutton.
- For current Zapiens, I was on an episode of the Zapier Internal Podcast, released
2022-05-30
.
Notable Open-Source Contributions, PRs and Issues
There's an exhaustive list of my contributions using this GitHub search (must be logged in), but here are the coolest ones:
PRs
- Improved performance of the Mastodon iOS Go-based push notification service (mastodon/webpush-apn-relay#1 and #2)
- Added a check for DRM in epub files to the
epub
package onnpm
(julien-c/epub#44) - Wrote Typescript types for the
striptags
package (ericnorris/striptags#44) and removed them fromDefinitelyTyped
(DefinitelyTyped#22040) - Added the
isSpinning
property toora
(sindresorhus/ora#73) - Added
files
property to themercury-parser
package, to reduce the size of the shipped code (postlight/mercury-parser#269) - Swapped some bash install links in docs to
https
inreact-native
(facebook/react-native#12090) - Tried to add support for creating new Middleman posts with content pre-filled (middleman/middleman-blog#337)
- In addition to maintaining the
parse-ruby-client
for a time, I added thekeys
operator 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)
Issues
- 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)