View on GitHub

Daco Harkes

Software Engineer at Google working on Dart.

Daco Harkes

I am a Software Engineer at Google Aarhus in the Dart compiler and virtual machine team. I work on the Dart programming language compiler and virtual machine. Dart is an open source programming language. You can learn more about Dart on, and you can track my contributions on GitHub.

I received my PhD in the Programming Languages Research Group at the Delft University of Technology supervised by Eelco Visser. I am interested in programming languages in general, and specifically in declarative programming and incremental computing. My research was focused on declarative programming for (web-based) information systems. During my PhD I have created IceDust, a domain-specific language for incrementally computing derived values in information systems.

I am an active participant in the research community. I was the part of the SPLASH 2015, 2016, and 2017 organizing committee as Student Volunteer Co-Chair, and volunteered at SPLASH 2014, ECOOP 2015, and ECOOP 2016. I have attended two Dagstuhl Seminars: Domain-Specific Languages and Programming Language Techniques for Incremental and Reactive Computing, and cooperated in editing the report of the first.

This page lists my scientific activities (publications, research projects, teaching activities, professional activities, and awards). For more information refer to my curriculum vitae.



Declarative Specification of Information System Data Models and Business Logic
Daco C. Harkes
PhD thesis.

We Should Stop Claiming Generality in Our Domain-Specific Language Papers
Daco C. Harkes
In The Art, Science, and Engineering of Programming, 2019.
In Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, 2018. (as extended abstract)
[DOI, PDF, DOI(2), PDF(2)]


Migrating Business Logic to an Incremental Computing DSL: A Case Study
Daco C. Harkes, Elmer van Chastelet, and Eelco Visser
In Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering, 2018.
[DOI, PDF, Poster]

PixieDust: Declarative Incremental User Interface Rendering through Static Dependency Tracking
Nick ten Veen, Daco C. Harkes, and Eelco Visser
In 1st Web Programming, Design, Analysis, And Implementation (WPDAI 2018), International World Wide Web Conferences Steering Committee, 2018.


IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition
Daco C. Harkes and Eelco Visser.
In 31st European Conference on Object-Oriented Programming (ECOOP 2017), Schloss Dagstuhl, 2017.
[DOI, PDF, Poster, Video, Artifact]

IceDust Calculation Strategy Composition Performance in Web Applications
Daco C. Harkes and Eelco Visser.
In International Workshop on Incremental Computing (IC), 2017.


Icedust: Incremental and eventual computation of derived values in persistent object graphs
Daco C. Harkes, Danny M. Groenewegen, and Eelco Visser.
In 30th European Conference on Object-Oriented Programming (ECOOP 2016), Schloss Dagstuhl, 2016.
[DOI, PDF, Poster, Video]

Language Design for Validatable Information System Specifications
Daco C. Harkes
In 30th European Conference on Object-Oriented Programming (ECOOP 2016) - Doctoral Symposium.


Relations in Role-Based Data Modeling, Navigation and Updates
Daco C. Harkes
In ACM Student Research Competition 2014 Finals, 2015.
[PDF, PDF(2)]


Unifying and generalizing relations in role-based data modeling and navigation
Daco C. Harkes and Eelco Visser
In International Conference on Software Language Engineering (SLE 2014), Springer, 2014.
[DOI, PDF, Poster]

Relations: a first class relationship and first class derivations programming language
Daco C. Harkes
In 13th international conference on Modularity - Student Research Competition, ACM, 2014.
[DOI, PDF, Poster]


IceDust is a domain-specific language for data modeling and calculating derived values. The data modeling in IceDust features bidirectional relations and multiplicities. These multiplicities are part of the type system, avoiding null pointer exceptions. Derived values in IceDust are specified as expressions (not unlike Excel). These derived values can be calculated on-demand, incrementally, or eventually. The IceDust compiler generates code for incremental and eventual derived value updates. The various calculation strategies can be composed, and the IceDust type system checks for sound composition.
[Source, Download]

PixieDust is a domain-specific language for building reactive client-side browser applications. Views are defined as functions in PixieDust, and the PixieDust compiler generates code which maintains views incrementally. PixieDust is a language extension of IceDust.

WebLab is a learning management system with automatic grading of programming assignments based on unit testing. WebLab contains extensive grading rules for composed assignments: weighted averaging, deadlines (and personal deadline overrides), late penalties, bonus assignments, pass n-out-of-m, etc. Moreover, WebLab features extensive progress statistics for course managers. All these calculations are expressed in IceDust.



Supervising MSc Students
Currently I am supervising two master students. One is working on PixieDust (see above), the other is working on a domain-specific language for terminating computations. I hope to link to their theses and papers here soon.


DSLDI Summer School
At the DSLDI summer school of 2015 I assisted at the hands on for building languages with Spoofax. I helped people getting started, and had to answer various questions about syntax, static semantics and transformations.


Teaching Assistance
I developed the lab for the Concepts of Programming Languages course, based on the Principles of Programming Languages by Shriram Krishnamurthi. The lab consists of writing interpreters in Scala for various languages, increasing in difficulty. This lab is automatically graded by unit tests. Since 2014, this lab has been improved upon by others adding unit tests for user test suites and alike.

Professional Activities


MoreVMs 2021 Program Committee


SLE 2018 Program Committee
SPLASH 2018 Artifact Evaluation Committee


SPLASH 2017 Organizing Committee (Student Volunteer Co-Chair)


SPLASH 2016 Organizing Committee (Student Volunteer Co-Chair)
ECOOP 2016 Student Volunteer


SPLASH 2015 Organizing Committee (Student Volunteer Co-Chair)
ECOOP 2015 Student Volunteer
Dagstuhl Seminar Domain Specific Languages Editor Support


SPLASH 2014 Student Volunteer



GTSSE Summer School Best Student Presentation


Modularity ACM Student Research Competition First Prize


Daco Harkes
LinkedIn: dcharkes