Hey! I'm David. I'm a student at Princeton University, studying Computer Science and Philosophy.

I like digging into problems to figure out the how and most importantly the why of things.

When I'm not studying, I sing in Princeton's Chapel Choir, work at the Writing Center, and help with Figments, Princeton's speculative fiction magazine.


Proof Checker

My most recent project is a proof checker. Inspired by the delightful elegance and simplicity of formal logic (as taught by Hans Halvorson in PHI 201: Intro Logic), I figured it wouldn't be that hard to throw together a quick proof checker.

Well, it took a little longer than expected -- mostly because of the UI, but it also turns out parentheses are way harder to parse nicely than I ever would have thought -- but I had a lot of fun with it; the resulting app can be found here. It's currently in alpha, and I am continuing to develop it. However, it should work for stanard propositional logic proofs. If you find a bug, please submit a bug report! :)

Princeton Puzzle Hunt Logo

Princeton Puzzle Hunt

In spring 2018, I worked in a self-directed team of 2 to build the website for the Princeton Puzzle Hunt in two weeks. With no prior experience, we built the site from scratch in Node.js, Express, and Sequelize/MySQL, with EJS+Bootstrap for front-end templating. I also served in a DevOps type role, setting up, configuring, and managing the server infrastructure. I learned a lot very quickly while working on this project.

During the 5-hour competition, our site flawlessly handled nearly 1,300 puzzle submissions from nearly 50 teams. The site checked solutions for accuracy, awarded points, and maintained and displayed a real-time leaderboard for the teams.

Check out the site here!

SET game logo

SET game

During senior year of high school, while taking a CS course for the first time, I saw an opportunity to build an app that would be useful outside the classroom.

My math teacher played the game SET at the beginning of every class, with the class trying to solve it as fast as they could. Unfortunately, the official website wasn't well set up for speedruns.

So I taught myself some HTML, CSS, JavaScript, and PHP, and made a custom implementation of the game, optimized for speedruns, and which collected some interesting statistics.

My site is still used daily in the classroom and is played by students. Check out the site here!


Proficient with

Java is my most comfortable language. Most of my coursework to date has been in Java, and I've implemented a lot of coding challenges and small personal programs in Java.
I've written both backend (Node.js) and frontend (jQuery) code in Javascript for multiple web apps. I'm still tracking down some of the weird quirks of the language, but I can definitely write functional code in Javascript.
I have set up well-structured, responsive webpages in pure HTML and CSS. These days I use Bootstrap for most things because it's quicker, but I'm comfortable with the raw stuff.
I do all my coding in Ubuntu, so I'm comfortable working from the Linux command line and digging through the operating system. (The jury is still out on vim vs emacs; I've tried both and have yet to make up my mind.)

Experienced with

The only database system I've used so far, I've used MySQL in several apps. I think I can structure a halfway-decent relational database, and I've written some moderately complex queries against them.
Linux Administration
I've configured and managed more than one Linux VM for use as a development or web server (including the host of this site). I had to set these up from a blank image, so I figured out how to manage multiple users, open up the firewall, and so on.
I always turn to git for version control, but I've never used it with more than two people, so I haven't had to do complicated branching and merging yet.
My projects are running under my own domains, so I had to learn how to configure a domain, change DNS records, get an SSL certificate, and more.


Princeton University

Summer Visit Ambassador and Tour Guide

Summer 2018

  • Greeted visitors and managed crowds throughout the day
  • Gave tours of campus to groups of up to 90 prospective students and parents

JP Lick's

Shift Supervisor

Summer 2017

  • Supervised a team of 20+ high school and college students
  • Managed daily operations behind the line
  • Responsible for safe count and day-to-day store finances


Princeton University

Graduating June 2021

Major in Philosophy with a Certificate in Computer Science

Princeton Bridge Year

Sept 2016 - June 2017

I took a gap year between high school and college on Princeton's Bridge Year Program, in Brazil. I spent 9 months living with a local family and volunteering at a community library in Salvador da Bahia.