-\subsection{IoT}
-\begin{frame}
- \frametitle{Internet of Things (IoT)}
- \begin{itemize}[<+->]
- \item Early days, RFID
- \item Devices: Arduino, ESP8266, Raspberry pi\ldots
- \item Peripherals: GPS, Sensors, Actuators\ldots
- \item Wearables: Smart clothing, smart watches\ldots
- \item Connectivity: LoRa (Sigfox, KPN, TTN), BTLE, WiFi, ZigBee\ldots
- \item \ldots
- \end{itemize}
-\end{frame}
-
-\subsection{iTasks}
-\begin{frame}[fragile]
- \frametitle{Task Oriented Programming}
- \framesubtitle{\ldots and iTasks}
- \begin{block}{iTasks}
- \begin{itemize}[<+->]
- \item Basic blocks
- \item Generated web interface
- \item Type driven
- \end{itemize}
- \end{block}
- \pause{}
- \begin{columns}[c]
- \column{.49\linewidth}
- \begin{block}{Tasks}
- \begin{itemize}[<+->]
- \item Observables
- \item Given the state, a \CI{TaskValue} is observed.
- \item Continuous execution
- \item Generics
- \end{itemize}
- \end{block}
- \pause{}
- \column{.49\linewidth}
- \begin{figure}[ht]
- \centering
- \includegraphics[width=\linewidth]{fig-taskvalue}
- \caption{The states of a \CI{TaskValue}}
- \end{figure}
- \end{columns}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Task Oriented Programming}
- \framesubtitle{Example}
- \begin{lstlisting}
-:: Name = { firstname :: String, lastname :: String }
-derive class iTask Name
-
-enterInformation :: String [EnterOption m] -> Task m | iTask m
-enterName :: Task Name
-enterName = enterInformation "Enter your name" []
- \end{lstlisting}
-
- \begin{figure}[H]
- \centering
- \begin{subfigure}{.30\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{taskex1}
- \caption{Initial interface\\~}\label{fig:taskex1}
- \end{subfigure}
- \begin{subfigure}{.30\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{taskex2}
- \caption{Incomplete entrance}\label{fig:taskex2}
- \end{subfigure}
- \begin{subfigure}{.30\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{taskex3}
- \caption{Complete entry\\~}\label{fig:taskex3}
- \end{subfigure}
- \caption{Example of a generated user interface}
- \end{figure}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Task Oriented Programming (3)}
- \framesubtitle{Combinators}
- \begin{block}{Sequence}
- \begin{lstlisting}
-(>>=) infixl 1 :: (Task a) (a -> Task b) -> Task b | iTask a & iTask b
-(>>*) infixl 1 :: (Task a) [TaskCont a (Task b)] -> Task b | iTask a & iTask b
-:: TaskCont a b
- = OnValue ((TaskValue a) -> Maybe b)
- | OnAction Action ((TaskValue a) -> Maybe b)
- | E.e: OnException (e -> b) & iTask e
- | OnAllExceptions (String -> b)
-:: Action = Action String
- \end{lstlisting}
- \end{block}
-
- \begin{block}{Parallel}
- \begin{lstlisting}
-(-||-) infixr 3 :: (Task a) (Task a) -> Task a | iTask a
-( ||-) infixr 3 :: (Task a) (Task b) -> Task b | iTask a & iTask b
-(-|| ) infixl 3 :: (Task a) (Task b) -> Task a | iTask a & iTask b
-(-&&-) infixr 4 :: (Task a) (Task b) -> Task (a,b) | iTask a & iTask b
- \end{lstlisting}
- \end{block}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Shared Data Sources (SDS)}
- \begin{block}{What is an SDS}
- \begin{itemize}[<+->]
- \item Read function
- \item Write function
- \end{itemize}
- \end{block}
-
- \begin{lstlisting}
-:: RWShared p r w = ...
-:: ReadWriteShared r w :== RWShared () r w
-:: Shared r :== ReadWriteShared r r