Wejoinin is an accidentally successful side project that creates and manages signup sheets. My co-founder and I launched over ten years ago as students, and it's slowly and steadily grown year over year. In peak months, it averages 75,000 MAU and supports businesses, non-profits and volunteer groups.
https://github.com/wejoinin/prejoinin
Rails, React, Elm
A zero-config HTTP reverse proxy for microservice local development
https://github.com/andrewhao/proxee
Rust
A CLI tool to play shushing noises. If you're, you know, coding when the baby's around.
https://github.com/andrewhao/babyshusher3000
Rust
I built this TensorFlow-based baby cry detector to keep aggregate stats of how long it took the little one to cry himself to sleep. See my writeups about this project in the Articles section.
https://github.com/andrewhao/babblefish
TensorFlow, Python, Arduino
Finally, a budget view for your Amazon purchases. I built this (nearing release) because it's really hard to get visibility into Amazon spending in your Mint reports. Come to think about it, that's probably what they want... 🤔
https://github.com/andrewhao/spendyvision
Typescript, Ramda, React
Alexa-powered baby stats logging. If you're a parent, you know that it's a good idea to keep track of your newborn's diaper changes and feedings. You can say things like "Alexa, tell Babygenius to log a feeding at 9 PM yesterday" and Alexa dutifully records your baby lifelog.
https://github.com/andrewhao/babygenius
Elixir, Phoenix
API mapping time zones to zip codes. This was mainly a companion project to the Babygenius app above (I was curious how quickly one could build Phoenix APIs, and how performant they would be in The Real World)
https://github.com/andrewhao/zipgenius
Elixir, Phoenix
A running app on the Pebble Watch platform for tracking step cadences. Running cadence is important to keep track of so you know how you need to adjust your form for maximum running efficiency.
https://github.com/andrewhao/sweetcadence
RxJS, Pebble.js SDK
A npm package that takes accelerometer data and emits step events. Intended usage is for wearables. This project also includes a fun visualizer that allows the user to visualize realtime accelerometer data from the HTML5 devicemotion APIs, implemented in Cycle.js. This library was the basis for my talk "Reactive Programming for Couch Potatoes"
https://github.com/andrewhao/quickcadence
RxJS, Cycle.js, BaconJS
NPM package to detect pauses - stoplights - in GPX trackpoint streams.
https://github.com/andrewhao/stoplight
RxJS
A stoplight wait time map for your city, crowdsourced from bike commuter information from Strava. I was inspired on my bike commute to work one day, wondering if I could have a bike trip planner that took stoplight wait times under consideration. This project ingests bicycle commuter data from Strava into a PostGIS database and overlays it across a map in a heatmap-like visualization.
https://github.com/andrewhao/cyclecity-core
RxJS, PostGIS, Rails
A Ruby gem calculating running training metrics from Strava GPS data. Training Stress Score and Grade Adjusted Pace are derived from reading a couple of papers and backing out an algorithm.
https://github.com/andrewhao/stressfactor
Ruby
A parser for guitar tabs pulled off of online tablature sites.
A web app for an education nonprofit that rotates books among classrooms. At its heart is a CSP solver.
https://github.com/andrewhao/bookplanner
Rails, Amb (CSP solver gem)
A DIY DSLR photobooth for weddings and events. A Node driver coordinates a Web UI and a gphoto bridge, and prints out a fun keepsake at the end.
https://github.com/porkbuns/shmile
Node, SVG
A collaborative music looping station (art installation). Audience members "play" a sample over a four bar loop, layering over previous audience member recordings.
https://github.com/andrewhao/mmtss
Node, SVG, Ableton Live/OSC