\end{frame}
\section{Introduction}
-\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
-
-get :: (ReadWriteShared r w) -> Task r | iTask r
-set :: w (ReadWriteShared r w) -> Task w | iTask w
-upd :: (r -> w) (ReadWriteShared r w) -> Task w | iTask r & iTask w
-
-sharedStore :: String a -> Shared a | JSONEncode{|*|}, JSONDecode{|*|}
-
-wait :: String (r -> Bool) (ReadWriteShared r w) -> Task r
- \end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{SDS (2)}
- \framesubtitle{Parametric Lenses}
- \begin{block}{What is the \CI{p} for in \CI{RWShared p r w}}
- \pause{}
- \begin{itemize}
- \item Parameter fixed when writing
- \item Used for notifications
- \end{itemize}
- \end{block}
-
- \begin{lstlisting}
-sdsFocus :: p1 (RWShared p1 r w) -> RWShared p2 r w | iTask p
-
-:: SDSNotifyPred p :== p -> Bool
-:: SDSLensRead p r rs = SDSRead (p -> rs -> MaybeError TaskException r)
- | SDSReadConst (p -> r)
-:: SDSLensWrite p w rs ws = SDSWrite (p -> rs -> w -> MaybeError TaskException (Maybe ws))
- | SDSWriteConst (p -> w -> MaybeError TaskException (Maybe ws))
-:: SDSLensNotify p w rs = SDSNotify (p -> rs -> w -> SDSNotifyPred p)
- | SDSNotifyConst (p -> w -> SDSNotifyPred p)
-
-sdsLens :: String (p -> ps) (SDSLensRead p r rs) (SDSLensWrite p w rs ws) (SDSLensNotify p w rs)
- (RWShared ps rs ws) -> RWShared p r w | iTask ps
- \end{lstlisting}
-\end{frame}
+\input{pres.intro}
-\begin{frame}
- \frametitle{Why add IoT devices to iTasks}
- %TODO
-\end{frame}
-
-\section{mTask}
-\subsection{EDSLs}
-\begin{frame}
- \frametitle{Embedded Domain Specific Language}
- \framesubtitle{Deep Embedding}
-\end{frame}
-
-\begin{frame}
- \frametitle{Embedded Domain Specific Language (2)}
- \framesubtitle{Shallow Embedding}
-\end{frame}
-
-\begin{frame}
- \frametitle{Embedded Domain Specific Language (3)}
- \framesubtitle{Class Based Shallow Embedding}
-\end{frame}
-
-\subsection{mTask}
-\begin{frame}
- \frametitle{mTask}
- \framesubtitle{Class Based Shallow Embedding}
-\end{frame}
-
-\begin{frame}
- \frametitle{Extending mTask}
-\end{frame}
+\section{EDSLs \& mTask}
+\input{pres.mtask}
\section{System Overview}
-\subsection{Devices}
-\subsection{Server}
-\subsection{Examples}
+\input{pres.system}
+
+\section{Conclusion}
+\input{pres.conclusion}
-\section{Demo}
-\begin{frame}
- \frametitle{And ofcourse\ldots}
-\end{frame}
-\begin{frame}
- \frametitle{And ofcourse\ldots a demo}
-\end{frame}
\end{document}