Skip to content


Projects

The science of lindy hop

Pulse and bounce are key characteristics of lindy hop movement. But how do we quantify this pulse? Easy: measure the dancers' acceleration and take the Fourier transform. Intrigued? See my Lindy Science page for details!

Perfectly reproducible statistical arbitrage

As a side effect of having gone to grad school on the East coast, I've acquired some interest in quant finance. One fun side project I've worked on some months ago involved reproducing a trading strategy described in a paper by Marco Avellaneda and Jeong-Hyun Lee. This paper is cool for several reasons:

  • the math is interesting without being overly arcane
  • it's fairly easy to implement in R
  • there are many interesting things to explore both in terms of optimizing the trading strategy and in studying some fundamental aspects of financial time series

Aside from being quite interesting, this also happens to be one of the first projects that I managed in org mode. At the time, I was using it mostly for outlining, and was largely unaware of Org's incredible powers. My usage patterns of Org have since shifted significantly; in particular, recently I've been playing a bit with Org's literate programming / reproducible research capabilities, and with using Org as a teaching tool.

After I updated the project in accordance with my recent ways of using Org, it instantly became a semi-tutorial on pairs trading and statistical arbitrage. In other words, you can take my org-file and the input data, and follow along, interactively reproducing all of my results.

So if you want to feel like a Wall Street quant (albeit, minus the paycheck, the yellow cabs, and the number 6 train at rush hour), go to my stat-arb project page, where you can look at the plots and find out how to re-run this analysis yourself.

Xournal improvements

I am a strong believer in open source, in digital ink, and in good software. Accordingly, I spent some time integrating patches and implementing new functionality to make Xournal, the excellent open-source PDF annotating and inking application, close to feature-compatible with Windows Journal. This was the most C code I've written since CS107, and it was tons of fun, newly-discovered GTK bugs notwithstanding. My branch includes image support, lasso selection, and autosave, and it is up on github.

Mathematica context handling

Mathematica has been my main tool throughout graduate school. I wrote lots of convenience code to improve my workflow, both for batch simulations and for exploratory analysis. By far, the most useful of these code snippets turned out to be a set of wrappers around context handling functions. By default, every symbol defined in every Mathematica notebook is in the global scope. This leads to innumerable bugs and mistakes. One can control and manipulate scopes by hand, but it is cumbersome to do with Mathematica built-ins. My wrappers (github link) allow to quickly set and access private contexts. For example, just type setPrivate[] when starting a new notebook, and spawnScratch[] to duplicate the existing notebook's context in a new one.

The anatomy of Facemash rankings / adventures in literate programming

Back in his Harvard days, Mark Zuckerberg made something that was mathematically interesting (but then he punted on it to start that Facebook thing). I am talking, of course, about the infamous Facemash, designed to prove Zuckerberg's drunken notion that his peers looked kind of like farm animals. The way to test this thesis was via a set of pairwise comparisons between randomly chosen photos. From this, an absolute ranking can be established. But what is the algorithm? How well does it perform? How reliable is the result? Last September, I took a weekend to find out, and here are the results.

This project not only appealed to my interest in machine learning and empirical analysis in R, but it also gave me an opportunity to flaunt the literate programming powers of org-mode. The fancy write-up linked above is all contained in this plaintext file which anyone can take to interactively reproduce or extend the analysis. Now that's open-source science!

Hyperbolic metamaterials and dynamic nanophotonic superresolution systems

What is the nature of the diffraction limit? How can we control radiative properties of emitters? Can a superlens ever be realized? How can we use phonons to recover subwavelength information? Why can't there be more conferences in San Diego in the wintertime?

These questions and many others occupied my mind during the years of my Ph.D. I was lucky enough to work on long-standing problems of fundamental importance while breaking new ground in the exciting field of metamaterials, being advised by and collaborating with top researchers in the field. For more information on this, check out my research page, my 5-minute explanation of hyperbolic metamaterials, a couple of my blog posts, and, of course, my thesis.