Studying Computer Science at Princeton, I got to develop an understanding of the technologies and key abstractions that underly computers and the Internet. I began as an electrical engineering major, so I learned how to build transistors from silicon and how to build a simple processor from transistors. I learned how Assembly language works from both a computer's and a programmer's perspective and how C creates useful abstractions on top of this. I learned how higher level languages can use an interpreter written in a low level language or a virtual machine like the JVM to allow the programmer the conveniences like dynamic typing and memory management, and the tradeoffs that these languages entail. I learned about the layers of the internet and the details of each protocol that allow the internet to run without crushing itself under the weight of its own requests.
Beyond learning about foundational computer systems, I also learned about the analysis of algorithms, and the methods computer scientists use to create algorithms for a wide range of problems. I learned about the important algorithms in machine learning, and got some experience with the trickiness of supervised and unsupervised learning. I did my first independent project under Brian Kernighan, in which I built an email sorting tool that classified each message in a user's inbox. You can read more about on the Grinbox page of this website.
In my final year and a half at Princeton, I grew very interested in the intersection between neuroscience and and computer science. I took two graduate seminars on computational neuroscience, and was exposed to the current research of how populations of neurons can learn and compute. I did a few modeling projects and ultimately did my senior thesis under Thomas Funkhouser and Sebastian Seung about using computer vision to reconstruct 3D neurons from stacks of 2D images. You can read all about my thesis on the Gala page.
I graduated Princeton magna cum laude in June 2014, and worked as a freelance web developer for a year. Though I enjoyed the flexibility, I craved something more motivating, and found a position with SumOfUs, a non-profit that fights corporate power through online advocacy. As part of a team of three, I rebuilt their digital campaigning platform using Ruby on Rails, Backbone, and React into an open-source CMS we call Champaign. The platform is robust and serves hundreds of thousands of users per month.
I also began to use the platform we were building to make microsites to support our campaigning. For example, I designed and built bayermonsantomerger.com for our campaign against the proposed purchase of Monsanto by Bayer. I've gotten more involved with the conceptualization process as time has gone on, and I'm excited to be a part of SumOfUs's work.