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
- reddit-user-to-sqlite, a CLI tool for archiving data about a Reddit user. Made as part of the 2023 Reddit API Controversy. I wrote a blog post about it, and it was covered by Wired.
- My Advent of Code solutions (and accompanying solution writeups) for the yearly Advent of Code puzzles (more info)
- Universal Test Runner, for running the unit tests in any repo. Adapted into the Exercism CLI's
test
command (PR). This is my current favorite project; I blogged about it! - Typed Install, a CLI utility to smartly install type definitions when installing JS packages.
- 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.
- 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.
Via a Job
- While at Stripe, all of my public open source contributions are available under the xavdid-stripe GitHub user. So far, I've made contributions to the Stripe CLI and influenced the design of the Stripe SDKs (especially Node.js and Python).
- 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 made contributions to the Stripe Dashboard and some of our backend tooling. You've likely seen my work if you've tried to change a setting while in Test Mode or created a sandbox.
- 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 (and PS5).
- JSON Requests, an extremely barebones HTTP request library for Typescript.
- 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.
- refbook, a website that provided automated testing and user registration for the now-defunct International Referee Development Program of
quidditchquadball. This was my first large-scale solo project and provided an invaluable start to my career in web development. It was hosted atrefdevelopment.com
- 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.
- 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!
- 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:
- My work on archiving one's Reddit data was featured in a post on Wired.
- 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 app's Go-based push notification service (mastodon/webpush-apn-relay#1 and #2)
- Fixed multiple typos and consistency issues to the projects for the Learning Typescript book
- 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)