X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=presentation.tex;h=044b4dc7b7b364d3572f0cae44cf4fb15540f6fa;hb=7e2e068caf02d8eae46cddc12ed36445069e67d1;hp=a0b0997fad9560a4cd12967bcd3e5dee3a5c5e2b;hpb=8dc29f41a1c7fb79d8f4d070c2625daf76f36f14;p=msc-thesis1617.git diff --git a/presentation.tex b/presentation.tex index a0b0997..044b4dc 100644 --- a/presentation.tex +++ b/presentation.tex @@ -9,242 +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 +\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}