I'm a tenure-track Assistant Professor at Carnegie Mellon University,
in the School of Computer Science, primarily affiliated with the Institute for Software Research.
I was the co-founder and Executive Director of the Scala Center at EPFL, where I was also a research scientist. I was also an Assistant Clinical Professor in the College of Computer and Information Science at Northeastern Univeristy.

I'm interested in various flavors of distributed and concurrent computation, often from the perspective of programming languages:

  • data-centric,
  • data-intensive (big data),
  • eventually-consistent (edge computing)

A major recurring theme in my work is composability. I seek to enable the construction of complex distributed systems via the composition of well-understood components that are correct by construction.

Some of my projects include programming models and type systems to facilitate the design of new, functional distributed systems, such as distributable closures, flexible, extensible, and performant serialization, asynchronous and concurrent programming via futures and promises, and deterministic concurrent dataflow.

I work on and around the Scala programming language  

Recent Work
Heard it Through the Gitvine: An Empirical Study of Tool Diffusion Across the npm Ecosystem
H. Lamba, A. Trockman, D. Armanios, C. Kästner, H. Miller, B. Vasilescu
ACM Symposium on the Foundations of Software Engineering
FSE 2020
Composing and Decomposing Op-Based CRDTs with Semidirect Products
M. Weidner, C. Meiklejohn, H. Miller
ACM SIGPLAN International Conference on Functional Programming
ICFP 2020
Scala Implicits Are Everywhere!
F. Krikava, J. Vitek, H. Miller
ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications
Full Publication List
Distributed Programming
Heather Miller, Nat Dempkowski, James Larisch, Christopher Meiklejohn
A textbook about the building blocks we use to build distributed systems. These range from the small, RPC, futures, actors, to the large; systems built up of these components like MapReduce and Spark. We explore issues and concerns central to distributed systems like consistency, availability, and fault tolerance, from the lens of the programming models and frameworks that the programmer uses to build these systems.
Open Source

Most all of my work is realized in the context of open source Scala.

Member of the Scala team since 2011.

I've worked on: Futures and Promises, Spores, Pickling, the Scala standard library, documentation, and a compiler fix here or there.

I co-founded the Scala Center.

Our goal: Do The Right Thing for open source Scala and its community.

Academia ↔ Industry

I co-created the Curry On conference with Jan Vitek in 2015.

Our goal: Industry and academia should have a talk! Or rather, they just need to talk in general.

Curry On is held in a different European city year-to-year, and it will always be co-located with one of the top academic conferences in programming languages (ECOOP, PLDI so far). So far we've done it in Prague (2015), Rome (2016), Barcelona (2017), Amsterdam (2018), and London (2019).

General and/or Program Chair
Curry On 2015, 2016, 2017, 2018, 2019
Trends in Functional Programming in Education
Scala Symposium 2013, 2014, 2017
Programming Models & Languages for Distributed Computation
2016, 2017
Organizing Committee Member
Object-Oriented Programming, Systems, Languages & Applications
European Conference on Object-Oriented Programming
2015, 2016, 2017, 2018, 2019
External Review Committee Member: PLDI 2018, ECOOP 2016, ECOOP 2013, Scala 2013
Program Committee Member
Symposium on Principles of Programming Languages
International Conference on Functional Programming
Object-Oriented Programming, Systems, Languages & Applications
2017, 2019
European Conference on Object-Oriented Programming
SPLASH Onward!
International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
2018, 2019
Symposium on Trends in Functional Programming
International Conference on Software Language Engineering
Scala Symposium
2016, 2018
Off the Beaten Track
Implementation of Functional Languages
Programming Language Evolution
Domain-Specific Language Design and Implementation
Symposium on Applied Computing
Carnegie Mellon University
15-440 Distributed Systems Fall 2020
10-405 Machine Learning for Large Datasets Spring 2020
17-356 Software Engineering for Startups Spring 2020
17-356 Software Engineering for Startups Spring 2019
Northeastern University
CS4240 Large-Scale Parallel Data Processing Spring 2018
CS7680 Special Topics in Computer Systems: Programming Models for Distributed Computation Fall 2016
CS 206 Parallelism and Concurrency Spring 2016
CS 212 Reactive Programming and Parallelism Spring 2015
Big Data Analysis with Scala and Spark
I'm beyond fortunate to work with many folks at CMU and beyond who are far more talented than I:
CMU Team
Christopher Meiklejohn, PhD Student
Zeeshan Lakhani, PhD Student
Matthew Weidner, PhD Student
Luke Dramko, Undergraduate/REU Student

Collaborators at Large
Philipp Haller, KTH Royal Institute of Technology
Peter Alvaro, University of California, Santa Cruz
Adelbert Chang, Target, AI Engineering