.
[phd-thesis.git] / self.bib
index 4df431e..1fc541e 100644 (file)
--- a/self.bib
+++ b/self.bib
@@ -4,6 +4,7 @@
        series = {{IFL} '19},
        title = {Interpreting {Task} {Oriented} {Programs} on {Tiny} {Computers}},
        isbn = {978-1-4503-7562-7},
+       url = {https://doi.org/10.1145/3412932.3412936},
        doi = {10.1145/3412932.3412936},
        abstract = {Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices are small, cheap, and energy efficient. However, they are not very powerful and lack an Operating System. Hence it is difficult to apply high level abstractions and write software that stays close to the design.Task Oriented Programming (TOP) is a paradigm for creating multi-user collaborative systems. A program consists of tasks—descriptions of what needs to be done. The tasks represent the actual work and a task value is observable during execution. Furthermore, tasks can be combined and transformed using combinators.mTask is an embedded Domain Specific Language (eDSL) to program MCUs following the TOP paradigm. Previous work has described the mTask language, a static C code generator, and how to integrate mTask with TOP servers. This paper shows that for dynamic IOT applications, tasks must be sent at runtime to the devices for interpretation. It describes in detail how to compile specialized IOT TOP tasks to bytecode and how to interpret them on devices with very little memory. These additions allow the creation of complete, dynamic IOT applications arising from a single source using a mix of iTasks and mTask tasks. Details such as serialization and communication are captured in simple abstractions.},
        booktitle = {Proceedings of the 31st {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
@@ -25,9 +26,9 @@
        publisher = {Springer International Publishing},
        author = {Lubbers, Mart and Koopman, Pieter and Plasmeijer, Rinus},
        year = {2019},
-       note = {in-press},
+       note = {in-press. preprint at: https://arxiv.org/abs/2212.04193},
        pages = {51},
-       file = {Lubbers - Writing Internet of Things applications with Task .pdf:/home/mrl/.local/share/zotero/storage/ILZIBYW5/Lubbers - Writing Internet of Things applications with Task .pdf:application/pdf},
+       file = {cefp.pdf:/home/mrl/.local/share/zotero/storage/VEWFI5DG/cefp.pdf:application/pdf},
 }
 
 @inproceedings{lubbers_tiered_2020,
@@ -35,6 +36,7 @@
        series = {{IoT} '20},
        title = {Tiered versus {Tierless} {IoT} {Stacks}: {Comparing} {Smart} {Campus} {Software} {Architectures}},
        isbn = {978-1-4503-8758-3},
+       url = {https://doi.org/10.1145/3410992.3411002},
        doi = {10.1145/3410992.3411002},
        abstract = {Internet of Things (IoT) software stacks are notoriously complex, conventionally comprising multiple tiers/components and requiring that the developer not only uses multiple programming languages, but also correctly interoperate the components. A novel alternative is to use a single tierless language with a compiler that generates the code for each component, and for their correct interoperation.We report the first ever systematic comparison of tiered and tierless IoT software architectures. The comparison is based on two implementations of a non-trivial smart campus application. PRSS has a conventional tiered Python-based architecture, and Clean Wemos Super Sensors (CWSS) has a novel tierless architecture based on Clean and the iTask and mTask embedded DSLs. An operational comparison of CWSS and PRSS demonstrates that they have equivalent functionality, and that both meet the University of Glasgow (UoG) smart campus requirements.Crucially, the tierless CWSS stack requires 70\% less code than the tiered PRSS stack. We analyse the impact of the following three main factors. (1) Tierless developers need to manage less interoperation: CWSS uses two DSLs in a single paradigm where PRSS uses five languages and three paradigms. (2) Tierless developers benefit from automatically generated, and hence correct, communication. (3) Tierless developers can exploit the powerful high-level abstractions such as Task Oriented Programming (TOP) in CWSS. A far smaller and single paradigm codebase improves software quality, dramatically reduces development time, and improves the maintainability of tierless stacks.},
        booktitle = {Proceedings of the 10th {International} {Conference} on the {Internet} of {Things}},
@@ -51,6 +53,7 @@
        title = {A {Task}-{Based} {DSL} for {Microcomputers}},
        copyright = {All rights reserved},
        isbn = {978-1-4503-6355-6},
+       url = {http://dl.acm.org/citation.cfm?doid=3183895.3183902},
        doi = {10.1145/3183895.3183902},
        abstract = {The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These devices have typically very limited computing power and severe memory restrictions to make them cheap and power efficient. These devices can interact with the environment via special sensors and actuators. Since each device controls several peripherals running interleaved, the control software is quite complicated and hard to maintain. Task Oriented Programming, TOP, offers lightweight communicating threads that can inspect each other’s intermediate results. This makes it well suited for the IoT. In this paper presents a functional task-based domain specific language for these IoT devices. We show that it yields concise control programs. By restricting the datatypes and using strict evaluation these programs fit within the restrictions of microcontrollers.},
        language = {en},
 @misc{koopman_sustrainable_2022,
        title = {{SusTrainable}: {Promoting} {Sustainability} as a {Fundamental} {Driver} in {Software} {Development} {Training} and {Education}. {Teacher} {Training}, {November} 1-5, {Nijmegen}, {The} {Netherlands}. {Revised} lecture notes},
        copyright = {Creative Commons Attribution Non Commercial No Derivatives 4.0 International},
+       url = {https://arxiv.org/abs/2204.13993},
        publisher = {arXiv},
        author = {Koopman, Pieter and Lubbers, Mart and Fernandes, João Paulo},
        year = {2022},
        file = {Koopman et al. - 2022 - SusTrainable Promoting Sustainability as a Fundam.pdf:/home/mrl/.local/share/zotero/storage/5F9SRJQI/Koopman et al. - 2022 - SusTrainable Promoting Sustainability as a Fundam.pdf:application/pdf},
 }
 
-@inproceedings{lubbers_deep_2022,
-       address = {Berlin, Heidelberg},
-       title = {Deep {Embedding} with {Class}},
-       booktitle = {Revised {Selected} {Papers} from the 23rd {International} {Symposium} on {Trends} in {Functional} {Programming}, {TFP} 2022, {Online}, 17-18 {March} 2022},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Lubbers, Mart},
-       year = {2022},
-       note = {in-press},
-       pages = {20},
-}
-
 @inproceedings{lubbers_first-class_2022,
        address = {New York, NY, USA},
        series = {{IFL} '22},
        keywords = {clean, distributed applications, functional programming, internet of things, task oriented programming},
 }
 
-@inproceedings{crooijmans_reducing_2022,
-       address = {Berlin, Heidelberg},
-       title = {Reducing the {Power} {Consumption} of {IoT} with {Task}-{Oriented} {Programming}},
-       booktitle = {Revised {Selected} {Papers} from the 23rd {International} {Symposium} on {Trends} in {Functional} {Programming}, {TFP} 2022, {Online}, 17-18 {March} 2022},
-       publisher = {Springer Berlin Heidelberg},
-       author = {Crooijmans, Sjoerd and Lubbers, Mart and Koopman, Pieter},
+@book{lubbers_orchestrating_2023,
+       address = {Nijmegen},
+       title = {Orchestrating the {Internet} of {Things} using {Task}-{Oriented} {Programming}},
+       shorttitle = {A {Cocktail} of {Tools}: {DSLs} for {TOSD}},
+       publisher = {UB Nijmegen},
+       author = {Lubbers, Mart},
+       year = {2023},
+}
+
+@incollection{lubbers_green_2022,
+       address = {Cham},
+       title = {Green {Computing} for the {Internet} of {Things}},
+       language = {en},
+       booktitle = {{SusTrainable} {Summer} {School} 2022, {Rijeka}, {Croatia}, {July} 4–5, 2022, {Revised} {Selected} {Papers}},
+       publisher = {Springer International Publishing},
+       author = {Lubbers, Mart and Koopman, Pieter},
        year = {2022},
        note = {in-press},
-       pages = {20},
+       pages = {1},
 }
 
 @article{lubbers_could_2022,
        title = {Could {Tierless} {Languages} {Reduce} {IoT} {Development} {Grief}?},
-       volume = {3},
-       number = {5},
+       issn = {2691-1914},
+       url = {https://doi.org/10.1145/3572901},
+       doi = {10.1145/3572901},
+       abstract = {Internet of Things (IoT) software is notoriously complex, conventionally comprising multiple tiers. Traditionally an IoT developer must use multiple programming languages and ensure that the components interoperate correctly. A novel alternative is to use a single tierless language with a compiler that generates the code for each component and ensures their correct interoperation. We report a systematic comparative evaluation of two tierless language technologies for IoT stacks: one for resource-rich sensor nodes (Clean with iTask), and one for resource-constrained sensor nodes (Clean with iTask and mTask). The evaluation is based on four implementations of a typical smart campus application: two tierless and two Python-based tiered. (1) We show that tierless languages have the potential to significantly reduce the development effort for IoT systems, requiring 70\% less code than the tiered implementations. Careful analysis attributes this code reduction to reduced interoperation (e.g. two embedded domain-specific languages (DSLs) and one paradigm versus seven languages and two paradigms), automatically generated distributed communication, and powerful IoT programming abstractions. (2) We show that tierless languages have the potential to significantly improve the reliability of IoT systems, describing how Clean iTask/mTask maintains type safety, provides higher order failure management, and simplifies maintainability. (3) We report the first comparison of a tierless IoT codebase for resource-rich sensor nodes with one for resource-constrained sensor nodes. The comparison shows that they have similar code size (within 7\%), and functional structure. (4) We present the first comparison of two tierless IoT languages, one for resource-rich sensor nodes, and the other for resource-constrained sensor nodes.},
        journal = {ACM Trans. Internet Things},
        author = {Lubbers, Mart and Koopman, Pieter and Ramsingh, Adrian and Singer, Jeremy and Trinder, Phil},
-       month = sep,
+       month = nov,
        year = {2022},
        note = {Place: New York, NY, USA
-Publisher: Association for Computing Machinery
-in-press},
-       keywords = {access control, internet-of-things, policy language, privilege escalation, Smart home system},
+Publisher: Association for Computing Machinery},
+       keywords = {access control, internet-of-things, policy language, privilege escalation, Smart home system, IoT stacks, Tierless languages},
+}
+
+@inproceedings{koopman_strongly-typed_2022,
+       address = {New York, NY, USA},
+       series = {{IFL} '22},
+       title = {Strongly-{Typed} {Multi}-{View} {Stack}-{Based} {Computations}},
+       booktitle = {Proceedings of the 34st {Symposium} on {Implementation} and {Application} of {Functional} {Languages}},
+       publisher = {Association for Computing Machinery},
+       author = {Koopman, Pieter and Lubbers, Mart},
+       year = {2022},
+       note = {event-place: Kopenhagen, Denmark. under-review},
+       keywords = {clean, distributed applications, functional programming, internet of things, task oriented programming},
+}
+
+@inproceedings{lubbers_deep_2022,
+       address = {Cham},
+       title = {Deep {Embedding} with {Class}},
+       isbn = {978-3-031-21314-4},
+       abstract = {The two flavours of DSL embedding are shallow and deep embedding. In functional languages, shallow embedding models the language constructs as functions in which the semantics are embedded. Adding semantics is therefore cumbersome while adding constructs is a breeze. Upgrading the functions to type classes lifts this limitation to a certain extent.},
+       booktitle = {Trends in {Functional} {Programming}},
+       publisher = {Springer International Publishing},
+       author = {Lubbers, Mart},
+       editor = {Swierstra, Wouter and Wu, Nicolas},
+       year = {2022},
+       pages = {39--58},
+}
+
+@inproceedings{crooijmans_reducing_2022,
+       address = {Cham},
+       title = {Reducing the {Power} {Consumption} of {IoT} with {Task}-{Oriented} {Programming}},
+       isbn = {978-3-031-21314-4},
+       abstract = {Limiting the energy consumption of IoT nodes is a hot topic in green computing. For battery-powered devices this necessity is obvious, but the enormous growth of the number of IoT nodes makes energy efficiency important for every node in the IoT. In this paper, we show how we can automatically compute execution intervals for our task-oriented programs for the IoT. These intervals offer the possibility to save energy by bringing the microprocessor driving the IoT node into a low-power sleep mode until the task need to be executed. Furthermore, they offer an elegant way to add interrupts to the system. We do allow an arbitrary number of tasks on the IoT nodes and achieve significant reductions of the energy consumption by bringing the microprocessor in sleep mode as much as possible. We have seen energy reductions of an order of magnitude without imposing any constraints on the tasks to be executed on the IoT nodes.},
+       booktitle = {Trends in {Functional} {Programming}},
+       publisher = {Springer International Publishing},
+       author = {Crooijmans, Sjoerd and Lubbers, Mart and Koopman, Pieter},
+       editor = {Swierstra, Wouter and Wu, Nicolas},
+       year = {2022},
+       pages = {80--99},
 }