process rinus' comments
[phd-thesis.git] / intro / intro.tex
index 0f5ea42..e71c221 100644 (file)
@@ -1,7 +1,7 @@
 \documentclass[../thesis.tex]{subfiles}
 
 \input{subfilepreamble}
-\setcounter{chapter}{-1}
+\setcounter{chapter}{0}
 
 \begin{document}
 \input{subfileprefix}
 
 There are at least 13.4 billion devices connected to the internet at the time of writing \citep{transforma_insights_current_2023}.
 Each of these devices sense, act, or otherwise, interact with people, computers, and the environment.
-Despite their immense diversity, they are all computers and they they all require software to operate.
+Despite their immense diversity, they are all computers and they all require software to operate.
 
 An increasing number of these connected devices are so-called edge devices that operate in the \gls{IOT}.
 Edge devices are the leaves of the \gls{IOT} systems.
 They perform the interaction with the physical world.
 It is not uncommon for edge devices to be physically embedded in the fabric itself.
-Typically they reside in hard-to-reach places such as light bulbs, clothing, smart electricity meters, buildings, or even farm animals.
+Typically, they reside in hard-to-reach places such as light bulbs, clothing, smart electricity meters, buildings, or even farm animals.
 The majority of edge devices are powered by microcontrollers.
 Microcontrollers are equipped with a lot of connectivity for integrating peripherals such as sensors and actuators.
 The connectivity makes them very suitable to interact with their surroundings.
@@ -66,7 +66,7 @@ The \citet{wikipedia_contributors_rhapsody_2022} define a musical rhapsody is de
 \end{quote}
 This dissertation consists of three episodes.
 \Cref{prt:dsl} is a paper-based---otherwise known as cumulative---episode containing chapters that provide insight in advanced \gls{DSL} embedding techniques for \gls{FP} languages.
-The chapters can be read independently from each other.
+The chapters can be read independently of each other.
 \Cref{prt:top} is a monograph showing \gls{MTASK}, a \gls{TOP} \gls{DSL} for the \gls{IOT}.
 Hence, the chapters in this episode are best read in order.
 It introduces \gls{IOT} edge device programming, shows the complete \gls{MTASK} language, provides details on how \gls{MTASK} is integrated with \gls{ITASK}, shows how the byte code compiler is implemented, presents a guide for green computing with \gls{MTASK}, and ends with a conclusion and overview of future and related work.
@@ -130,7 +130,7 @@ As a consequence, the flexibility is greatly reduced for dynamic systems in whic
 As program memory is mostly flash-based and only lasts a couple of thousands of writes before it wears out, it is not suitable for repeated reconfiguring and reprogramming.
 
 These problems can be mitigated by dynamically sending code to be interpreted to the microcontroller.
-With interpretation, a specialized interpreter is flashed in the program memory once it receives the program code to execute at run time.
+With interpretation, a specialised interpreter is flashed in the program memory once it receives the program code to execute at run time.
 Therefore, as the programs are not stored in the flash memory, it does not wear out.
 It is challenging to create interpreters for small edge devices due to the severe hardware restrictions.
 This dissertation describes a \gls{DSL} that includes the high-level programming concepts of \gls{TOP}, while it can be executed on edge devices with very limited hardware requirements.
@@ -245,11 +245,13 @@ Some concepts from the \gls{TOSD} model can be mapped upon the \gls{IOT} archite
 Firstly, edge devices can be seen as simple resources, thus accessed through \glspl{SDS}.
 The second view is that edge devices contain miniature \gls{TOP} systems in itself.
 The individual components in the miniature systems, the tasks, the \glspl{SDS}, are, in the eventual execution, connected to the main system.
+\todo{hier plaatje uit 6?: nee}
 
 \subsection{The iTask system}
 The concept of \gls{TOP} originated from the \gls{ITASK} framework, a declarative language and \gls{TOP} engine for defining interactive multi-user distributed web applications.
 The \gls{ITASK} system is implemented as an \gls{EDSL} in the programming language \gls{CLEAN}\footnote{\Cref{chp:clean_for_haskell_programmers} contains a guide for \gls{CLEAN} tailored to \gls{HASKELL} programmers.} \citep{plasmeijer_itasks:_2007,plasmeijer_task-oriented_2012}.
-It has been under development for over fifteen years and has proven itself through use in industry for some time now as well \citep{top_software_viia_2023}.
+It has been under development for over fifteen years and has proven itself through use in industry for some time now as well.
+For example, it is the main language of VIIA, an advanced application for monitoring coasts \citep{top_software_viia_2023}.
 From the structural properties of the data types and the current status of the work to be done, the entire \gls{UI} is automatically generated.
 Browsers are powering \gls{ITASK}'s presentation layer.
 The framework is built on top of standard web techniques such as JavaScript, HTML, and {CSS}.
@@ -318,6 +320,7 @@ Using \cleaninline{enterInformation}, the connection specification of the \gls{T
 The \gls{MTASK} device is connected using \cleaninline{withDevice} at \cref{lst:intro_withdevice}.
 Once connected, the \cleaninline{intBlink} task is sent to the device (\cref{lst:intro_liftmtask}) and, in parallel, a web editor is shown that updates the value of the interval \gls{SDS} (\cref{lst:intro_editor,fig:intro_blink_int}).
 To allow terminating of the task, the \gls{ITASK} task ends with a sequential operation that returns a constant value when the button is pressed, making the task stable.
+\todo{foto device+led?}
 
 \cleaninputlisting[float={!ht},firstline=10,lastline=18,numbers=left,caption={The \gls{ITASK} code for the interactive blinking application.},label={lst:intro_blink}]{lst/blink.icl}
 
@@ -365,6 +368,7 @@ This section provides a thorough overview of the relation between the scientific
 \subsection{\Fullref{prt:dsl}}
 The \gls{MTASK} system is an \gls{EDSL} and during the development of it, several novel basal techniques for embedding \glspl{DSL} in \gls{FP} languages have been found.
 This paper-based episode contains the following papers:
+\todo{papers met bibitem doen? of conferentie noemen.}
 \begin{enumerate}
        \item \emph{Deep Embedding with Class} \citep*{lubbers_deep_2022} is the basis for \cref{chp:classy_deep_embedding}.
                It shows a novel deep embedding technique for \glspl{DSL} where the resulting language is extendible both in constructs and in interpretation just using type classes and existential data types.
@@ -372,7 +376,7 @@ This paper-based episode contains the following papers:
                \Cref{sec:classy_reprise} was added after publication and contains a (yet) unpublished extension of the embedding technique for reducing the required boilerplate at the cost of requiring some advanced type system extensions.
        \item \emph{First-\kern-1ptClass Data Types in Shallow Embedded Domain-Specific Languages} \citep*{lubbers_first-class_2022}\label{enum:first-class} is the basis for \cref{chp:first-class_datatypes}.
                It shows how to inherit data types from the host language in \glspl{EDSL} using metaprogramming by providing a proof-of-concept implementation using \gls{HASKELL}'s metaprogramming system: \glsxtrlong{TH}.
-               The paper also serves as a gentle introduction to, and contains a thorough literature study on \glsxtrlong{TH}.
+               The chapter also serves as a gentle introduction to, and contains a thorough literature study on \glsxtrlong{TH}.
 \end{enumerate}
 
 %\paragraph{In preparation}
@@ -413,11 +417,11 @@ It is compiled from the following publications:
 %              \paragraph{Contribution}
 %              The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer.
        \item \emph{Simulation of a Task-\kern-1.25ptBased Embedded Domain Specific Language for the Internet of Things} \citep*{koopman_simulation_2023}\footnotemark[\value{footnote}]
-               are the revised lecture notes for a course on the \gls{MTASK} simulator provided at the 2018 \gls{CEFP}\slash{}\gls{3COWS} winter school in Ko\v{s}ice, Slovakia, January 22--26, 2018.
+               are the revised lecture notes for a course on the \gls{MTASK} simulator provided at the 2018 \gls{3COWS} winter school in Ko\v{s}ice, Slovakia, January 22--26, 2018.
 %              \paragraph{Contribution}
 %              Pieter Koopman wrote and taught it, I helped with the software and research.
        \item \emph{Writing Internet of Things Applications with Task Oriented Programming} \citep*{lubbers_writing_2023}\footnotemark[\value{footnote}]
-               are the revised lecture notes from a course on programming \gls{IOT} systems using \gls{MTASK} provided at the 2019 \gls{CEFP}\slash{}\gls{3COWS} summer school in Budapest, Hungary, June 17--21, 2019.
+               are the revised lecture notes from a course on programming \gls{IOT} systems using \gls{MTASK} provided at the 2019 \gls{3COWS} summer school in Budapest, Hungary, June 17--21, 2019.
 %              \paragraph{Contribution}
 %              Pieter Koopman prepared and taught half of the lecture and supervised the practical session.
 %              I taught the other half of the lecture, wrote the lecture notes, made the assignments and supervised the practical session.
@@ -446,12 +450,11 @@ The papers of which I am first author are solely written by me, there were weekl
 
 \subsection{\Fullref{prt:tvt}}
 \Cref{prt:tvt} is based on a journal paper that quantitatively and qualitatively compares traditional \gls{IOT} architectures with \gls{TOP} \gls{IOT} architectures.
-This chapter is based on the conference paper and a journal paper extending it:
 \begin{enumerate}[resume]
-       \item \emph{Tiered versus Tierless \glsxtrshort{IOT} Stacks: Comparing Smart Campus Software Architectures} \citep*{lubbers_tiered_2020}\footnote{This work was partly funded by the 2019 Radboud-Glasgow Collaboration Fund.}\label{enum:iot20} compares traditional tiered programming to tierless architectures by comparing two implementations of a smart-campus application.
        \item \emph{Could Tierless Programming Reduce IoT Development Grief?} \citep*{lubbers_could_2022}
                is an extended version of paper~\ref{enum:iot20}.
                It compares programming traditional tiered architectures to tierless architectures by illustrating a qualitative and a quantitative four-way comparison of a smart-campus application.
+       \item \emph{Tiered versus Tierless \glsxtrshort{IOT} Stacks: Comparing Smart Campus Software Architectures} \citep*{lubbers_tiered_2020}\footnote{This work was partly funded by the 2019 Radboud-Glasgow Collaboration Fund.}\label{enum:iot20} compares traditional tiered programming to tierless architectures by comparing two implementations of a smart-campus application.
 \end{enumerate}
 
 \paragraph{Contribution:}