Eric Holk

I am a Ph.D. candidate at Indiana University. My research interests relate to designing and implementing programming languages that facilitate the production of safer, more reliable, and better performing software. I am part of the Center for Research in Extreme Scale Technologies (CREST).



Harlan is a high level language for general purpose GPU computing. For more information, see our ParCo paper. The code for Harlan is available at

Elegant Weapons

Elegant Weapons is an R6RS Scheme library for creating compilers that generate C code. This project is used by Harlan.


Rust is a new systems language that is being developed by Mozilla. It features a powerful type system, explicit control over garbage collection, and safe communication primitives. I worked at Mozilla as an intern during the summers of 2011 and 2012. My biggest contributions were implementing the task system as well as designing and implementing the pipes communication system.

Computational Photography

My advisor, Andrew Lumsdaine, is interested in photography with plenoptic cameras. These cameras capture directional information, which enables things such as refocusing an image after the fact. I have produced a web-based refocusing algorithm in WebGL. See the live demo!


Kanor is a declarative language for specifying collective communication patterns in MPI programs. See our PADL paper for more information.


    1. Jason Hemann
    2. Eric Holk
    Visualizing the Turing Tarpit October 2013 Workshop on Function Art, Music, Modeling and Design (FARM 2013) PDF
    1. Eric Holk
    2. Milinda Pathirage
    3. Arun Chauhan
    4. Andrew Lumsdaine
    5. Nicholas D. Matsakis
    GPU Programming in Rust: Implementing High-level Abstractions in a Systems-level Language May 2013 Workshop on High-level Parallel Programming Models and Supportive Environments (HIPS 2013) PDF
    1. Joseph A. Cottam
    2. Eric Holk
    3. William Byrd
    4. Arun Chauhan
    5. Andrew Lumsdaine
    High Level Coordination Specification February 2013 Workshop on Leveraging Abstractions and Semantics in High-performance Computing (LASH-C 2013) PDF
    1. William Byrd
    2. Eric Holk
    3. Daniel Friedman
    miniKanren, Live and Untagged September 2012 Workshop on Scheme and Functional Programming (SFP12) PDF
    1. Eric Holk
    2. William Byrd
    3. Nilesh Mahajan
    4. Jeremiah Willock
    5. Arun Chauhan
    6. Andrew Lumsdaine
    Declarative Programming for GPUs September 2011 International Conference on Parallel Computing (ParCo 2011) PDF
    1. Eric Holk
    2. William E. Byrd
    3. Jeremiah Willcock
    4. Torsten Hoefler
    5. Arun Chauhan
    6. Andrew Lumsdaine
    Kanor — A Declarative Language for Explicit Communication Jan. 2011 Thirteenth International Symposium on Practical Aspects of Declarative Languages (PADL'11) PDF

Press Coverage