X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=intro%2Fintro.tex;h=e71c221661a064da0b61bfb500256024f9ada411;hb=55d92612436b8bed8a114e6dc49ce86d7cb96bea;hp=42313f5e5263936e0c0a70fe9f3784f8c5b989fc;hpb=5702796e5885e85b9e8dcc0d5160dccb9386b05f;p=phd-thesis.git diff --git a/intro/intro.tex b/intro/intro.tex index 42313f5..e71c221 100644 --- a/intro/intro.tex +++ b/intro/intro.tex @@ -19,13 +19,13 @@ 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. @@ -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:}