X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=presentation.tex;h=044b4dc7b7b364d3572f0cae44cf4fb15540f6fa;hb=2498dced580be1e7af31a662dadee26c4fd159ed;hp=3566aebf5fda762714f33a78bb7ec32169359373;hpb=1e84022436ed2b1dbb12382aea375196f0324570;p=msc-thesis1617.git diff --git a/presentation.tex b/presentation.tex index 3566aeb..044b4dc 100644 --- a/presentation.tex +++ b/presentation.tex @@ -9,203 +9,15 @@ \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}