I am a Software Engineer at Google 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 dart.dev, 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.
Publications
2019
Declarative Specification of Information System Data Models and Business Logic
Daco C. Harkes
PhD thesis.
[DOI,
PDF]
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)]
2018
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.
[DOI,
PDF]
2017
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.
[PDF]
2016
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.
[PDF]
2015
Relations in Role-Based Data Modeling, Navigation and Updates
Daco C. Harkes
In ACM Student Research Competition 2014 Finals, 2015.
[PDF,
PDF(2)]
2014
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]
Projects
IceDust
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
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.
[Source]
WebLab
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.
[Link]
Teaching
2017-2018
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.
2015
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.
2014
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
2021
MoreVMs 2021 Program Committee
2018
SLE 2018 Program Committee
SPLASH 2018 Artifact Evaluation Committee
2017
SPLASH 2017 Organizing Committee (Student Volunteer Co-Chair)
2016
SPLASH 2016 Organizing Committee (Student Volunteer Co-Chair)
ECOOP 2016 Student Volunteer
2015
SPLASH 2015 Organizing Committee (Student Volunteer Co-Chair)
ECOOP 2015 Student Volunteer
Dagstuhl Seminar Domain Specific Languages Editor Support
2014
SPLASH 2014 Student Volunteer
Awards
2015
GTSSE Summer School Best Student Presentation
2014
Modularity ACM Student Research Competition First Prize
Contact
Daco Harkes
Email: [email protected]
LinkedIn: dcharkes