  The Internet of Things (IoT) is growing fast. In 2018, there was
approximately one connected device per person on earth and the number has been
growing ever since. The devices interact with the environment via different
modalities at the same time using sensors and actuators making the programs
parallel. Yet, writing this type of programs is difficult because the devices
have little computation power and memory, the platforms are heterogeneous and
the languages are low level. Task Oriented Programming (TOP) is a declarative
programming language paradigm that is used to express coordination of work,
collaboration of users and systems, the distribution of shared data and the
human-computer interaction. The mTask language is a specialized, yet
full-fledged, multi-backend TOP language for IoT devices. With the bytecode
interpretation backend and the integration with iTask, tasks can be executed on
the device dynamically. This means that -- according to the current state of
affairs -- tasks can be tailor-made at run time, compiled to device-agnostic
bytecode and shipped to the device for interpretation. Tasks sent to the device
are fully integrated in iTask to allow every form of interaction with the tasks
such as observation of the task value and interaction with Shared Data Sources
(SDSs). The entire IoT application -- both server and devices -- are programmed
in a single language, albeit using two embedded Domain Specific Languages
(EDSLs).
