From 1e84022436ed2b1dbb12382aea375196f0324570 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Tue, 4 Jul 2017 17:28:10 +0200 Subject: [PATCH] update presentation --- .gitignore | 1 + build | 2 +- presentation.pre | 3 +- presentation.tex | 197 ++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 197 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 077cdca..d2268ab 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ img/fig-* *.snm *.tdo *.toc +*.vrb diff --git a/build b/build index 35b62ec..685e33f 100755 --- a/build +++ b/build @@ -84,7 +84,7 @@ clean(){ while [ $# -ne 0 ]; do log "Clean $1" rm -fv $1.{acn,acr,alg,aux,bbl,blg,idl,idx,ilg,ind,fmt,glg,glo,gls,\ -ist,loa,lof,log,lol,lot,nav,out,pdf,snm,tdo,toc} +ist,loa,lof,log,lol,lot,nav,out,pdf,snm,tdo,toc,vrb} shift done } diff --git a/presentation.pre b/presentation.pre index eb4a4a1..e8cded1 100644 --- a/presentation.pre +++ b/presentation.pre @@ -1,6 +1,7 @@ \documentclass{beamer} \usepackage{listings} % Source code +\usepackage{subcaption} % Subcaptions \usepackage[nodayofweek]{datetime} % Use a fixed document date % Images directory @@ -50,7 +51,7 @@ breaklines=true, captionpos=b, keepspaces=true, - basicstyle=\ttfamily\fontseries{l}\footnotesize, + basicstyle=\ttfamily\fontseries{l}\scriptsize, commentstyle=\slshape\fontseries{m}, keywordstyle=\bfseries\fontseries{b}, stringstyle=\ttfamily, diff --git a/presentation.tex b/presentation.tex index f82c2d0..3566aeb 100644 --- a/presentation.tex +++ b/presentation.tex @@ -9,14 +9,203 @@ \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} -\section{TOP \& EDSLs} +\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} + +\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} -\section{System Overview} +\begin{frame} + \frametitle{Embedded Domain Specific Language (2)} + \framesubtitle{Shallow Embedding} +\end{frame} -\section{Extending the mTask EDSL} +\begin{frame} + \frametitle{Embedded Domain Specific Language (3)} + \framesubtitle{Class Based Shallow Embedding} +\end{frame} -\section{Considerations \& Implementation} +\subsection{mTask} +\begin{frame} + \frametitle{mTask} + \framesubtitle{Class Based Shallow Embedding} +\end{frame} + +\begin{frame} + \frametitle{Extending mTask} +\end{frame} + +\section{System Overview} +\subsection{Devices} +\subsection{Server} +\subsection{Examples} + +\section{Demo} +\begin{frame} + \frametitle{And ofcourse\ldots} +\end{frame} +\begin{frame} + \frametitle{And ofcourse\ldots a demo} +\end{frame} \end{document} -- 2.20.1