HomeResearchSoftware & CodeExposition
Art, Research, & Miscellaneous

In addition to the projects presented here, code written in support of Computer Science research is available on the Research page, and a number of tools and self-contained algorithm implementations that I have used for artistic purposes and as components of other projects are available on Bitbucket or as Gists.

Absentminded Crypto Kit

The Absentminded Crypto Kit is an extensible general purpose cryptographic toolkit for multiparty secure computation, built atop Obliv-C. At present it supports big-integer math, fast oblivious RAM and other oblivious data structures, AES and other symmetric ciphers, and miscellaneous algorithms for searching, sorting, and solving certain graph problems.

The eventual goal of the project is to provide a comprehensive set of cryptographic algorithms and primitives for use in MPC research.


A camera app for iOS inspired by classic mechanical rangefinder cameras.

It is said that really talented street photographers can focus, frame, and fire their Leicas by touch alone, without ever looking through the viewfinder or raising the cameras above their waists. Modern smartphone cameras are ubiquitous and high quality, and as such, they open up an immense opportunity. The software that drives them, however, has remained fiddly, slow, and inaccurate; it often prioritizes toy features over usability, and prefers to look like a traditional camera over behaving like one. No cellphone camera yet has ever come close to the elegance of a classic Leica: to be useable with eyes shut. With Camerosity, I attempt to close the gap.

By removing unnecessary features such as postprocessing and autofocus, and radically simplifying the typical cellphone camera interface, I have created an elegant and functional photography tool, instantly familiar to anyone who is comfortable with mechanical rangefinders and SLRs. All parameters (focus, ISO, shutter speed, white balance) are immediately available, requiring no more than a single gesture to view or adjust, and adjustments take advantage of the full display area of a typical iPhone, allowing the photographer fine-grained manual control. Camerosity supports fully automatic, aperture and ISO priority, and needle-match manual exposure modes. Focus peaking allows for quick and accurate manual control. Capture rate is limited only by the rate at which the user can press the shutter button. In addition, it supports modeless video recording, with no reduction in the above functionality.

During the development of Neurovis, it became necessary to generate a large number of perceptually uniform colors, differentiated by hue. Such colors can easily be chosen in the CIELCHab colorspace (the polar coordinate transform of CIELab), which has the useful properties of being both perceptually uniform and manipulable in a natural way. The Chroma and Luminance channels correspond approximately to what we think of as Saturation and Lightness.

Having written a library for the manipulation of CIELCHab colors in Neurovis, I developed a standalone tool to allow me to work in this colorspace myself. It is a fully modular color manipulation system, designed so that new tools could be added as they become useful to me. I am currently working on the integration of 3D colorspace display, gamut mapping, and CIECAM02 chromatic adaptation.