publications: - title: "PixieDust: Declarative Incremental User Interface Rendering Through Static Dependency Tracking" author: - name: "Nick ten Veen" link: "https://www.linkedin.com/in/nicktenveen/" - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "http://doi.acm.org/10.1145/3184558.3185978" abstract: " Modern web applications are interactive. Reactive programming languages and libraries are the state-of-the-art approach for declara- tively specifying these interactive applications. However, programs written with these approaches contain error-prone boilerplate code for e ciency reasons. In this paper we present PixieDust, a declarative user-interface language for browser-based applications. PixieDust uses static de- pendency analysis to incrementally update a browser-DOM at run- time, without boilerplate code. We demonstrate that applications in PixieDust contain less boilerplate code than state-of-the-art ap- proaches, while achieving on-par performance. " links: doi: "http://doi.acm.org/10.1145/3184558.3185978" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/www/VeenHV18" researchr: "https://researchr.org/publication/VeenHV18" cites: 0 citedby: 0 pages: "721-729" booktitle: "WWW" kind: "inproceedings" key: "VeenHV18" - title: "IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.14" abstract: "Derived values are values calculated from base values. They can be expressed with views in relational databases, or with expressions in incremental or reactive programming. However, relational views do not provide multiplicity bounds, and incremental and reactive programming require significant boilerplate code in order to encode bidirectional derived values. Moreover, the composition of various strategies for calculating derived values is either disallowed, or not checked for producing derived values which will be consistent with the derived values they depend upon. In this paper we present IceDust2, an extension of the declarative data modeling language IceDust with derived bidirectional relations with multiplicity bounds and support for statically checked composition of calculation strategies. Derived bidirectional relations, multiplicity bounds, and calculation strategies all influence runtime behavior of changes to data, leading to hundreds of possible behavior definitions. IceDust2 uses a product-line based code generator to avoid explicitly defining all possible combinations, making it easier to reason about correctness. The type system allows only sound composition of strategies and guarantees multiplicity bounds. Finally, our case studies validate the usability of IceDust2 in applications. " links: doi: "https://doi.org/10.4230/LIPIcs.ECOOP.2017.14" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/HarkesV17" researchr: "https://researchr.org/publication/HarkesV17" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "HarkesV17" - title: "IceDust 2: Derived Bidirectional Relations and Calculation Strategy Composition (Artifact)" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" doi: "https://doi.org/10.4230/DARTS.3.2.1" abstract: " This artifact is based on IceDust2, a data modeling language with derived values. The provided package is designed to support the claims of the companion paper: in particular, it allows users to compile and run IceDust2 specifications. Instructions for building the IceDust2 compiler from source in Spoofax are also provided. " links: doi: "https://doi.org/10.4230/DARTS.3.2.1" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/darts/HarkesV17" researchr: "https://researchr.org/publication/HarkesV17-ART" cites: 0 citedby: 0 journal: "darts" volume: "3" number: "2" kind: "article" key: "HarkesV17-ART" - title: "Declarative Specification of Information System Data Models and Business Logic" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2019" doi: "https://www.base-search.net/Record/8ed1529807591ce29158f438f054ba5a45f902739190f75831ceb28ae7e30590" links: doi: "https://www.base-search.net/Record/8ed1529807591ce29158f438f054ba5a45f902739190f75831ceb28ae7e30590" dblp: "http://dblp.uni-trier.de/rec/bibtex/phd/basesearch/Harkes19" researchr: "https://researchr.org/publication/Harkes19" cites: 0 citedby: 0 school: "Delft University of Technology, Netherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" kind: "phdthesis" key: "Harkes19" - title: "Relations: a first class relationship and first class derivations programming language" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2014" doi: "http://doi.acm.org/10.1145/2584469.2584473" links: doi: "http://doi.acm.org/10.1145/2584469.2584473" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/aosd/Harkes14" researchr: "https://researchr.org/publication/Harkes14" cites: 0 citedby: 0 pages: "9-10" booktitle: "AOSD" kind: "inproceedings" key: "Harkes14" - title: "Unifying and Generalizing Relations in Role-Based Data Modeling and Navigation" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2014" doi: "http://dx.doi.org/10.1007/978-3-319-11245-9_14" abstract: "Object-oriented programming languages support concise navigation of relations represented by references. However, relations are not first-class citizens and bidirectional navigation is not supported. The relational paradigm provides first-class relations, but with bidirectional navigation through verbose queries. We present a systematic analysis of approaches to modeling and navigating relations. By unifying and generalizing the features of these approaches, we developed the design of a data modeling language that features first-class relations, n-ary relations, native multiplicities, bidirectional relations and concise navigation." links: doi: "http://dx.doi.org/10.1007/978-3-319-11245-9_14" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/HarkesV14" "pdf": "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2014-023.pdf" researchr: "https://researchr.org/publication/HarkesV14" cites: 0 citedby: 0 pages: "241-260" booktitle: "SLE" kind: "inproceedings" key: "HarkesV14" - title: "We should stop claiming generality in our domain-specific language papers (extended abstract)" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" year: "2018" doi: "https://doi.org/10.1145/3276954.3276967" links: doi: "https://doi.org/10.1145/3276954.3276967" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/Harkes18" researchr: "https://researchr.org/publication/Harkes18" cites: 0 citedby: 0 pages: "131-132" booktitle: "OOPSLA" kind: "inproceedings" key: "Harkes18" - title: "IceDust Calculation Strategy Composition Performance in Web Applications" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2017" researchr: "https://researchr.org/publication/HarkesV17-IC" cites: 0 citedby: 0 kind: "misc" key: "HarkesV17-IC" - title: "Migrating business logic to an incremental computing DSL: a case study" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Elmer van Chastelet" link: "https://researchr.org/profile/elmervanchastelet/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2018" doi: "https://doi.org/10.1145/3276604.3276617" abstract: " To provide empirical evidence to what extent migration of business logic to an incremental computing language (ICL) is useful, we report on a case study on a learning management system. Our contribution is to analyze a real-life project, how migrating business logic to an ICL affects information system validatability, performance, and development effort. We find that the migrated code has better validatability; it is straightforward to establish that a program ‘does the right thing’. Moreover, the performance is better than the previous hand-written incremental computing solution. The effort spent on modeling business logic is reduced, but integrating that logic in the application and tuning performance takes considerable effort. Thus, the ICL separates the concerns of business logic and performance, but does not reduce effort. " links: doi: "https://doi.org/10.1145/3276604.3276617" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/HarkesCV18" researchr: "https://researchr.org/publication/HarkesCV18" cites: 0 citedby: 0 pages: "83-96" booktitle: "SLE" kind: "inproceedings" key: "HarkesCV18" - title: "IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs" author: - name: "Daco Harkes" link: "http://nl.linkedin.com/in/dcharkes" - name: "Danny M. Groenewegen" link: "https://www.linkedin.com/in/dannygroenewegen/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2016" doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" abstract: "Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust. " links: doi: "http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.11" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ecoop/HarkesGV16" researchr: "https://researchr.org/publication/HarkesGV16" cites: 0 citedby: 0 booktitle: "ECOOP" kind: "inproceedings" key: "HarkesGV16"