I delight in making, creating, and exploring.
Why is programming fun? What delights may its practitioner expect as his reward?
Fred Brooks, The Mythical Man-Month
Between school, hackathons, and my free time, I always find myself gravitating towards programming. I absolutely love working on projects, whether alone or with others. Over time I’ve accumulated a portfolio of projects that I’m particularly proud of.
TuneMachine started out as a hackathon project. It aims to be a “time machine for your Spotify tunes.” It’s built with CoffeeScript and React—my two favorite web technologies at the moment.
TeXDown was a small experiment to build an online note-taking app that combines the expressiveness of Markdown, the power of LaTeX, and the editing speed of Vim. TeXDown gave me a great venue to experiment with perspectives that I eventually brought when I worked on the Dropbox Paper team.
Autolab aims to vastly improve programming-based computer science classes through “autograding,” allowing instructors to spend more time educating. Autolab is developed completely at CMU, so there’s a strong sense of community among the developers.
This collection of projects only scratches the surface; some of my “smaller”
projects are actually the most interesting. I’ve created or contributed to a
number of Vim and LaTeX repos, done a fair bit of
shell scripting for my dotfiles and personal
bin/ repos, and
worked on some really cool Carnegie Mellon-specific projects. I
also enjoy giving back to open source projects I use.
I believe strongly in education.
Open the encyclopedia. Open the dictionary. Open your mind.
Randy Pausch, The Last Lecture
Sharing my talents and knowledge with others thrills me. I’ve been a teaching assistant every semester except freshman year, TA’ing the classes 15-150 Functional Programming, 15-210 Parallel and Sequential Data Structures and Algorithms, and 15-131 Great Practical Ideas for CS. The degree to which CMU embraces undergraduate TAs means that I’ve been able to actively participate and give real feedback to help make these courses all the more valuable to students.
I’m also a part of ScottyLabs, a student organization at CMU dedicated to improving the campus tech community through hosting educational events and developing useful services. Our biggest attraction is TartanHacks, a 400-person undergraduate hackathon held yearly. Organizing and mentoring at a hackathon is by far one of the most exciting and action-packed events I’ve experienced.
Teaching has always been a passion of mine, and I get to live it out every day.
I reflect on what I’ve learned.
You are all computer scientists.
You know what FINITE AUTOMATA can do.
You know what TURING MACHINES can do.
For example, Finite Automata can add but not multiply.
Turing Machines can compute any computable function.
Turing machines are incredibly more powerful than Finite Automata.
Yet the only difference between a FA and a TM is that
the TM, unlike the FA, has paper and pencil.
Think about it.
It tells you something about the power of writing.
Without writing, you are reduced to a finite automaton.
With writing you have the extraordinary power of a Turing machine.
Manuel Blum, Advice to a Beginning Graduate Student
Writing is a way for me to collect my thoughts, distill my knowledge, and share my discoveries with others. I publish my writings at Bits, Bytes, and Words, my personal blog, and occasionally at the Autolab Development Blog. For the curious, here’s a sampling of my posts.
Autolab: Autograding for All is a piece written for the Autolab blog outlining the benefits of autograding and how it improves student learning in computer science classrooms.
Noteworthy Dotfile Hacks dissects my sophisticated dotfiles setup to place the interesting parts at the forefront, making it easier for others to incorporate the interesting bits into their setups as well.
Google Chrome: A Memory Hog walks through the process of constructing a bash-oneliner, emphasizing their usefulness in solving rather complicated tasks. I use the contents of this article as an example when teaching Great Practical Ideas.
Let’s Have a Chat About Encryption is a based on a real dialogue I once had. It discusses topics surrounding encryption’s usage, impact, and importance, as well as how it related to the Apple v. FBI case.
I mix work and passion.
… but I like what is in the work—the chance to find yourself. Your own reality—for yourself
Joseph Conrad, Heart of Darkness
My heart is in the work.
I’ve had three wonderful opportunities for summer software engineering internships. Through them, I’ve been able to discover my talents and preferences, meet new friends, and enjoy myself.
At Stripe I worked on Checkout, a fully-featured online payment form that makes it as easy a possible for merchants to start accepting payments. I love Stripe’s mission of building developer-facing tools to advance the internet and create a more economically interconnected world, and the engineering culture and rigor keep me engaged.
At Dropbox I worked on Dropbox Paper, a product that completely re-envisions notetaking (at the very least, I think so!). It focuses on real-time collaborative, rich-text editing. Think Google Docs, but without all the parts that feel too much like Microsoft Word and with a gorgeous design to boot. My project was to build out rich-text embeds (think: YouTube videos, Google Drive docs, Spotify songs) from the ground up. The high-impact, small-team vibe was an intensely positive experience.
At Bloomberg I worked on an internal financial simulation tool in C++ that enabled developers to prototype and test their apps. I got the opportunity to participate in the design, implementation, testing, and deployment of a complete project, which was invaluable as a post-freshman undergrad.
Having lived in both New York and San Francisco, I’m still undecided on where I’d like to move when I graduate college in 2017. I’m a Midwesterner at heart, but I enjoy being close to my college and intern friends on the coasts. Regardless of where I work, though, I hope to find somewhere I can live out my passions.