process many comments
[phd-thesis.git] / intro / intro.tex
index 08597fe..39c8bff 100644 (file)
@@ -17,9 +17,7 @@
        \end{itemize}
 \end{chapterabstract}
 
-\todo[inline]{Brackets upright in listings?}
-This dissertation is about orchestrating \gls{IOT} systems harmlessly and efficiently.
-\todo{beter?}
+This dissertation is about orchestrating \gls{IOT} systems safely and efficiently.
 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 all require software to operate.
@@ -121,8 +119,8 @@ However, network technology that is tailored to the needs of the specific interc
 Examples of this are BLE, LoRa, ZigBee, and LTE-M as a communication protocol for connecting the perception layer to the application layer using \gls{IOT} transport protocols such as \gls{MQTT}.
 Protocols such as HTTP, AJAX, and WebSocket connecting the presentation layer to the application layer that are designed for the use in web applications.
 
-\todo[inline]{Hier enkele zinnen over maintainability}
-Across the layers, the devices are a large heterogeneous collection of different platforms, protocols, paradigms, and programming languages often resulting in impedance problems or semantic friction between layers when programming \citep{ireland_classification_2009}.
+Across the layers, the devices are a large heterogeneous collection of different platforms, protocols, paradigms, and programming languages.
+As a result, impedance problems or semantic friction occurs between layers and the maintainability is severely hampered \citep{ireland_classification_2009}.
 Even more so, the perception layer itself is often a heterogeneous collection of microcontrollers in itself, each having their own peculiarities, programming language of choice, and hardware interfaces.
 As edge hardware needs to be cheap, small scale, and energy efficient, the microcontrollers used to power them do not have a lot of computational power, only a smidge of memory, and little communication bandwidth.
 Typically, these devices are unable to run a full-fledged general-purpose \gls{OS}.
@@ -248,7 +246,6 @@ 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.
@@ -277,6 +274,7 @@ As an example, \cref{lst:todo,fig:todo} show the code and \gls{UI} for an intera
 The user modifies a shared to-do list through an editor directly or using some predefined actions.
 Furthermore, in parallel, the length of the list is shown to demonstrate \glspl{SDS}.
 Using \gls{ITASK}, complex collaborations of users and tasks can be described on a high level.
+%In this way, the \gls{ITASK} system is a tierless system taking care of both the presentation and application layer (see \cref{fig:iot}) by running the same code in the browser as on the server and generating all interoperation.
 
 From the data type definitions (\cref{lst:todo_dt}), using generic programming (\cref{lst:todo_derive}), the \glspl{UI} for the data types are automatically generated.
 Then, using the parallel task combinator (\cleaninline{-\|\|}) the task for updating the to-dos (\cref{lst:todo_update}) and the task for viewing the length are combined (\cref{lst:todo_length}, shown as \emph{Length: 2} in the bottom of the image).
@@ -285,13 +283,12 @@ Both tasks operate on the to-do \gls{SDS} (\cref{lst:todo_sds}).
 The task for updating the to-do list is an editor (\cref{lst:todo_editor}) combined using a step combinator (\crefrange{lst:todo_contfro}{lst:todo_contto}).
 The actions either change the value, sorting or clearing it, or terminate the task by returning the current value of the \gls{SDS}, visualised as three buttons on the bottom right of the \gls{UI}.
 Special combinators (e.g.\ \cleaninline{@>>} at \cref{lst:todo_ui}) are used to tweak the \gls{UI} to display informative labels.
-\todo[inline]{Zou je hier niet zeggen dat dit iTask programma de Presentation en Application layer uit Figure 1.1 maakt door dezelfde code in de browser en op de server te runnen en alle netwerkdingen te genereren? Dat is hier wel niet erg nodig. Maar geeft je wel het opstapje om in 1.4.2.\ te zeggen dat de edge devices die wij willen gebruiken dat niet kunnen. Deze paragraaf kan ook in 1.4.2.}
 
 \cleaninputlisting[float=,firstline=6,lastline=22,tabsize=3,numbers=left,caption={The code for a shared to-do list in \gls{ITASK}.},label={lst:todo}]{lst/sharedlist.icl}
 
 \begin{figure}
        \centering
-       \includegraphics[width=\linewidth]{todo0g}
+       \includegraphics[width=.8\linewidth]{todo0g}
        \caption{The \gls{UI} for the shared to-do list in \gls{ITASK}.}%
        \label{fig:todo}
 \end{figure}
@@ -300,9 +297,7 @@ Special combinators (e.g.\ \cleaninline{@>>} at \cref{lst:todo_ui}) are used to
 The work for \gls{IOT} edge devices can often be succinctly described by \gls{TOP} programs.
 Software on microcontrollers is usually composed of smaller basic tasks, are interactive, and share data with other components or the server.
 The \gls{ITASK} system seems an obvious candidate for bringing \gls{TOP} to \gls{IOT} edge devices.
-However, an \gls{ITASK} application contains many features that are not needed on \emph{edge devices} such as higher-order tasks, support for a distributed architecture, or a multi-user web server.
-\todo[inline]{Dat is op zich toch niet zo'n probleem. Een iTAsk server heeft ook geen GUI, maar wel alle iTask code om die te maken.
-Het feit dat dit niet hoeft op een edge device geeft je wel een van de handvatten om mTask in minder memory te runnen}
+However, an \gls{ITASK} application contains many features that are not needed on \emph{edge devices} such as higher-order tasks, support for a distributed architecture, a multi-user web server, and facilities to generate \glspl{GUI} for any user-defined type.
 Furthermore, \gls{IOT} edge devices are in general not powerful enough to run or interpret \gls{CLEAN}\slash\gls{ABC} code, they just lack the processor speed and memory.
 To bridge this gap, \gls{MTASK} is developed, a domain-specific \gls{TOP} system for \gls{IOT} edge devices that is integrated in \gls{ITASK} \citep{koopman_task-based_2018}.
 The \gls{ITASK} language abstracts away from details such as user interfaces, data storage, client-side platforms, and persistent workflows.
@@ -327,10 +322,8 @@ 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[inline]{foto device+led?}
-\todo[inline]{enterDevice nieuwe regel, globale func?}
 
-\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}
+\cleaninputlisting[float={!ht},firstline=10,lastline=19,numbers=left,caption={The \gls{ITASK} code for the interactive blinking application.},label={lst:intro_blink}]{lst/blink.icl}
 
 \begin{figure}
        \centering
@@ -357,8 +350,7 @@ The main expression of the program calls the \cleaninline{blink} function with a
 This function on \crefrange{lst:intro:blink_fro}{lst:intro:blink_to} first reads the interval \gls{SDS}, waits the specified delay, writes the state to the \gls{GPIO} pin, and calls itself recursively using the inverse of the state in order to run continuously.
 The \cleaninline{>>\|.} operator denotes the sequencing of tasks in \gls{MTASK}.
 
-\cleaninputlisting[float={!ht},linerange={23-,25-33},numbers=left,caption={The \gls{MTASK} code for the interactive blinking application.},label={lst:intro_blink_mtask}]{lst/blink.icl} %chktex 8
-\todo[inline]{Meer wit rondom =jes, doornummeren?}
+\cleaninputlisting[float={!ht},linerange={24-,26-34},firstnumber=11,numbers=left,caption={The \gls{MTASK} code for the interactive blinking application.},label={lst:intro_blink_mtask}]{lst/blink.icl} %chktex 8
 
 \subsection{Other TOP languages}
 While \gls{ITASK} conceived \gls{TOP}, it is no longer the only \gls{TOP} system.
@@ -370,10 +362,10 @@ For example, \textmu{}Task \citep{piers_task-oriented_2016}, a \gls{TOP} languag
 Finally, there are \gls{TOP} languages with strong academic foundations.
 \Gls{TOPHAT} is a fully formally specified \gls{TOP} language designed to capture the essence of \gls{TOP} \citep{steenvoorden_tophat_2019}.
 Such a formal specification allows for symbolic execution, hint generation, but also the translation to \gls{ITASK} for actually performing the work \citep{steenvoorden_tophat_2022}.
-\Citeauthor{steenvoorden_tophat_2022} distinguishes two instruments for \gls{TOP}: \gls{TOP} languages and \gls{TOP} engines.
-The language is the \emph{formal} language for specifying interactive systems.
-The engine is the software or hardware that executes these specifications as a ready-for-work application.
-\todo[inline]{Noemen dat een vergelijkbare semantics voor mTask under construction is met een verwijzing naar de thesis van Elina?}
+%\Citeauthor{steenvoorden_tophat_2022} distinguishes two instruments for \gls{TOP}: \gls{TOP} languages and \gls{TOP} engines.
+%The language is the \emph{formal} language for specifying interactive systems.
+%The engine is the software or hardware that executes these specifications as a ready-for-work application.
+%Defining comparable semantics for the \gls{MTASK} language is in progress \citep{antonova_mtask_2022}.
 
 \section{Contributions}%
 \label{sec:contributions}
@@ -382,15 +374,16 @@ 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.
                The related work section is updated with the research found after publication.
                \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.
+               The paper was published at the \tfp{} 2022 in Krakow, Poland (moved to online).
        \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 chapter also serves as a gentle introduction to, and contains a thorough literature study on \glsxtrlong{TH}.
+               The paper was published at the \ifl{} 2022 in Kopenhagen, Denmark.
 \end{enumerate}
 
 %\paragraph{In preparation}
@@ -421,13 +414,17 @@ It is compiled from the following publications:
        \item \emph{A Task-\kern-1.25ptBased \glsxtrshort{DSL} for Microcomputers} \citep*{koopman_task-based_2018}
                is the initial \gls{TOP}\slash{}\gls{MTASK} paper.
                It provides an overview of the initial \gls{TOP} \gls{MTASK} language and shows first versions of some interpretations.
+               The paper was published at the \rwdsl{} 2018 in Vienna, Austria.
        \item \emph{Task Oriented Programming for the Internet of Things} \citep*{lubbers_task_2018}\footnote{This work is an extension of my Master's thesis \citep{lubbers_task_2017}.}
                shows how a simple imperative variant of \gls{MTASK} was integrated with \gls{ITASK}.
                While the language differs a lot from the current version, the integration mechanism is still used.
+               The paper was published at the \ifl{} 2018 in Lowell, MA, {USA}.
 %              \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 in which we discussed and refined the ideas.
        \item \emph{Multitasking on Microcontrollers using Task Oriented Programming} \citep*{lubbers_multitasking_2019}\footnote{This work acknowledges the support of the \erasmusplus{} project ``Focusing Education on Composability, Comprehensibility and Correctness of Working Software'', no.\ 2017--1--SK01--KA203--035402.}
                is a short paper on the multitasking capabilities of \gls{MTASK} comparing it to traditional multitasking methods for \gls{ARDUINO}.
+
+               The paper was published at the \fcows{} 2019 in Opatija, Croatia.
 %              \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}]
@@ -441,10 +438,12 @@ It is compiled from the following publications:
 %              I taught the other half of the lecture, wrote the lecture notes, made the assignments and supervised the practical session.
        \item \emph{Interpreting Task Oriented Programs on Tiny Computers} \citep*{lubbers_interpreting_2019}
                shows an implementation of the byte code compiler and \gls{RTS} of \gls{MTASK}.
+               The paper was published at the \ifl{} 2019 in Singapore.
 %              \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{Reducing the Power Consumption of IoT with Task-Oriented Programming} \citep*{crooijmans_reducing_2022}
                shows how to create a scheduler so that devices running \gls{MTASK} tasks can go to sleep more automatically and how interrupts are incorporated in the language.
+               The paper was published at the \tfp{} 2022 in Krakow, Poland (moved to online).
 %              \paragraph{Contribution}
 %              The research was carried out by \citet{crooijmans_reducing_2021} during his Master's thesis.
 %              I did the daily supervision and helped with the research, Pieter Koopman was the formal supervisor and wrote most of the paper.
@@ -468,7 +467,9 @@ The papers of which I am first author are solely written by me, there were weekl
        \item \emph{Could Tierless Programming Reduce IoT Development Grief?} \citep*{lubbers_could_2023}
                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.
+               The paper was published in the \tiot{} journal.
        \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.
+               The paper was published in the \iotconf{} 2020 in Malm\"o, Sweden (moved to online).
 \end{enumerate}
 
 \paragraph{Contribution:}