Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / presentation.tex
index a0b0997..044b4dc 100644 (file)
 \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
+\input{pres.intro}
 
-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}
-
-\begin{frame}
-       \frametitle{Why add IoT devices to iTasks}
-       \begin{block}{Why?}
-       \begin{itemize}
-               \item Execute Tasks
-               \item Monitoring
-               \item Hardware
-               \end{itemize}
-       \end{block}
-
-       \pause{}
-
-       \begin{block}{Current possibilities}
-               \begin{itemize}
-                       \item Arjan's Distributed iTasks
-                       \item Implement a device as an SDS
-                               \pause{}
-                       \item Difficult to get logic in
-               \end{itemize}
-       \end{block}
-\end{frame}
-
-\section{mTask}
-\subsection{EDSLs}
-\begin{frame}
-       \frametitle{Embedded Domain Specific Language}
-       \framesubtitle{What is are EDSL}
-       \begin{itemize}
-               \item DSL:\ language for a specific domain
-               \item E.g., PostScript, VimScript, HTML, \ldots
-               \pause{}
-               \item EDSL:\ Embedded DSL
-               \item Language in a language
-               \item Use the properties of the host
-               \item E.g., Ivory, \ldots\pause{} and iTasks
-       \end{itemize}
-\end{frame}
-
-\begin{frame}
-       \frametitle{Embedded Domain Specific Language (2)}
-       \framesubtitle{Embedding techniques}
-       \begin{block}{Deep}
-       \end{block}
-
-       \begin{block}{Shallow}
-       \end{block}
-
-       \begin{block}{Class based shallow}
-       \end{block}
-\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}