Selected creative projects:
- I dabble in drawing and painting.
- I've taken 1-3 months between every job to either travel or study.
- I got a novice paragliding license in France. It took two weeks and cost $1,500. Here's a video from day 3. Could not recommend the sport more highly - it's 50% surreal, 50% concentrating on meteorology.
- Did a surprise interview at YCombinator, which was kinda felt like an unplanned pregnancy.
- I did the Jimmy Jr. butt dance for a Bob's Burger's-themed burlesque show, because obviously you never turn down an opportunity like that, and
- I told a 10-minute story on a local San Francisco radio station for their Tinder Tales segment while in a Lyft Line.
Selected technical projects:
- I made a fun app that teaches people to sightread piano - you connect your electronic keyboard to your computer, it displays scrolling sheet music and tells you if you're playing the right notes, and it can drill you on the tricky bits. Here's the source.
- I keep a repo of machine learning paper notes/reviews/summaries for 100ish papers.
- Similarly, I have a repo of deep learning paper implementations.
- I designed and built a deployment automation pipeline for the Minerva Project for non-technical people, so that our designers/PMs/faculty could spin up temporary builds for in-progress engineering work and provide feedback and do user testing. Click here for the pretty pictures and here for a tour of the backend.
- Tom Brown, Ben Mann and I built a horrifying music video generator based on Nvidia's ProgressiveGAN. It takes a song, turns the song into a spectrogram, and maps each time slice from that spectrogram (a vector of numbers that corresponds to a tiny slice of music) into a vector within the latent space of ProgressiveGAN's generative net (a vector of numbers that corresponds to a picture of a face), and smoothly interpolates between them as the song plays so that the face would morph in time with the song - imagine a video of your face sprouting a mustache with every bass beat, or changing from male to female during choruses, etc. Our first attempt didn't really work - the spectrogram vectors only varied by a tiny amount relative to the total span of the generative net's latent space - so we used a variational autoencoder to transform spectrogram vectors into ones that inhabited more of the latent space. We're terribly sorry for the results: [video forthcoming - it was posted in our Slack, but we ran out of space in our free plan 😭, so I might have to go generate it again].
- The Internet is addictive. I built a distracting website blocker called Pause that redirects a list of blocked websites to a page that displays contents of arbitrary Evernote notes, arranged as you please (Evernote is backed by a SQLite database - if you go looking for it and poke around then you can figure out how to read from it). I used it to remind myself of a list of my side projects, show inspirational quotes I'd collected, and some recent flashcards I'd made. It didn't really work - when I go to Reddit, it's because my brain is tired. Making myself feel guilty in those moments of exhaustion by showing myself all my incomplete goals was not a very good replacement. Ah, well, lesson learned. (Update: meditating for 5 minutes, among other things, seem to work better.) And here's a little RescueTime BitBar plugin.
- I wrote a relational DBMS in C that laid records out in a columnar and row-based fashion so that a query planner could read from whichever format was faster. I did this to learn more about databases.
Thanks for reading 🙂