Sometimes I build things in my free time.

Personal Website v3

2022

The third major iteration of this website, updated with a new technology stack to support a personal blog. If you want, you can still view the previous version.

ReactTheme UIMDXReact Three FiberThree.jsTypeScriptNext.jsVercel

Custom Discord bot

2022

I created a custom Discord bot for the private server I hang out in with some of my close friends. It's highly specific to how we interact in the server — mostly inside jokes and silly memes.

It's built with Discord's Message Command and Slash Command APIs.

NodeExpressFly.iodiscord.jsAirtable

Digestif

2020

Digestif shows me the most-liked Tweets from people I follow. It makes it easy to discover new Tweets or see what's going on at a glance. It started as a web app hosted from my Raspberry Pi, accessible only on my home network. Later, I made it post the best Tweets to my Discord server once a day.

ReactDjangoCeleryNext.jsRaspberry PiTwitterDiscord

OK.css

2020

Website · GitHub

OK.css is a classless CSS framework that adds sensible styling defaults to your web page. It's featured in this collection of minimal stylesheets.

CSSGulpNetlify

Chinese Flashcard App

2020

I've been learning Chinese, but wanted a more efficient way to review new vocabulary words. I shared a small prototype of what the frontend could look like in SwiftUI, and made some progress building a cross-platform client with React Native. As part of this project, I also researched spaced-repetition algorithms and local-first apps.

React NativeExpoSwiftUIsqlite

YouTube Silence Skipper

2019

GitHub

This is an experimental Chrome extension that shortens silences on YouTube, inspired by a similar feature in popular podcast apps. It works by sampling the loudness of the video and increasing the playback rate when the loudness drops under a pre-defined threshold.

JavaScriptChrome Extension

Tech Talks

2019

Website · GitHub

Tech Talks was a place to discover and watch conference talks about web development. I had collected thousands of talks from a number of JavaScript conferences from 2017 through 2019 by looking up their associated conference playlists on YouTube. This project is no longer being actively developed.

ReactEmotionTypeScriptFirebaseHerokuNetlifyAlgolia

Raspberry Pi Kiosk

2017

GitHub

I connected my Raspberry Pi to a display that shows the current time, news, stocks, and weather. Then I posted about it on Twitter.

ReactStyled ComponentsTypeScriptNodeExpressRaspberry Pi

Aurora

2017

Website · GitHub

Aurora is web-based synth that can be played with a computer keyboard and MIDI keyboard (Chrome only). It was inspired by professional software synths like Sylenth1, Massive, and Serum. I wanted to make exploring audio synthesis accessible and fun!

ReactReduxFlowStyled ComponentsVercelWeb MIDI APITone.js

Wi-Fi LED Lamp

2015

Video

Inspired by the Philips Hue and the LIFX bulbs, I created a lighting solution that can be controlled by a web browser and can be customized with software.

Made with Spark Core, IKEA Vidja lamp, and Neopixel light strip.

HTMLCSSjQueryPythonFlaskHerokuC++

Algorithmic Music Generator

2012

For my final project in my Computers and Music class, I wrote a program that generates music based on user input (key, tempo, etc.) and rules from classical music theory.

JavaScriptMax MSP