Dan King

About MeProjectsRamblingsTalksPapers

About Me

Between the fall of 2013 and the Spring of 2015, I studied for a PhD in Computer Science at Harvard University in Cambridge, Massachusetts. My advisor at Harvard was Stephen Chong. I'm currently taking a leave of absence to explore other ways to have an impact on the world.

In the summer of 2013 I studied Mandarin at the Inter-University Program (IUP) for Chinese Language Studies. The IUP conducts their classes on the campus of Tsinghua University. I have studied Mandarin for two years using a hodgepodge of self-study, tutors, language partners, and classes. At the IUP, I shored up my Mandarin capabilities. Sadly, I didn't have much time to maintain it during my PhD. I hope to firm it up again now that I am on leave.

I formerly studied Computer Science and Physics at Northeastern University. During my early years on campus, I was a member of the CCIS Systems Crew and NU's chapter of the ACM. During my middler year, Northeastern terminology for the third of five years, I became involved with a computer science research project that consumed most of my free time for the last two years of my education. I tried to keep myself busy with personal projects when I could spare some time from classes and research.

I took a break from my first research project in the fall and winter of 2012, to work on the CMS experiment at CERN. You can read more about that, if you'd like.


Real Semantics

Real Semantics is a modified LLVM interpreter that reveals floating-point precision losses in LLVM bitcode. It conservatively reports precision loss so as to help rather than annoy the programmer. This was the final project for CS260r, a graduate course on the development of reliable software systems.


A few years ago, after first learning about language design, I decided to try my hand at it. The result is an unfinished s-expression based syntax on top of JavaScript. I strove to produce readable JavaScript code while giving the programmer nicer syntax, lexically evident scoping, and a broader set of identifier names.


I quite like the LaTeX source code for my resume. I secretly wish I could send application reviewers the source instead of the PDF.

Machine Learning in Racket

I took a graduate machine learning class in the Fall of 2013. I initially used the R language to implement the algorithms, but I quickly became frustrated with R. This repository is a collection of tools I built while working on the problem sets for this class.

Phat Raid

Phat Raid is a distributed file system written in Erlang. I worked on it with a team of students for Cloud Big Data Systems, a whimsically named class offered by Eddie Kohler at Harvard. Our particular contribution was to implement a RAID array with distributed file systems. We achieved lower store latency for file sizes which were disk bound. It also has unusual and interesting failure modes. We describe it in this unpublished paper.

Flow Analyzing Compiler Compiler

I’m developing some flow analyses and an appropriate parser-generator framework in which to apply them. The verbalization of this project’s acronym is possibly offensive to those who speak Bostonian English.


What I Like About Type Classes
February 17 — Cambridge Twenty-Fifteen
A Pattern for Java Classes
February 17 — Cambridge Twenty-Fifteen
Booklet Printing
May 29 — Cambridge Twenty-Fourteen
Blood Types & Hasse Diagrams
May 16 — Cambridge Twenty-Fourteen
Down and Tired
November 10 — Cambridge Twenty-Thirteen
Mid-Summer — Beijing Twenty-Thirteen
Undeserved Thanks
February 12 — Cambridge Twenty-Thirteen
Working at CERN
Mid-Winter — France Twenty-Twelve


The Racket-ML Package Reveal.js Presentation
December 2013, for Racket Salon Boston
A Reading of Robust De-anonymization of Large Sparse Datasets Keynote PDF
November 2013, for Harvard CS252r Seminar
A Reading of Domain and Type Enforcement and TrustedBSD Keynote PDF
October 2013, for Harvard CS252r Seminar


Shill: A Secure Shell Scripting LanguageOSDI 2014

We created a language which provides contracts and capabilities to help developers enforce the Principle of Least Privilege (POLP) when writing shell scripts.