update presentation
authorMart Lubbers <mart@martlubbers.net>
Tue, 4 Jul 2017 15:28:10 +0000 (17:28 +0200)
committerMart Lubbers <mart@martlubbers.net>
Tue, 4 Jul 2017 15:28:10 +0000 (17:28 +0200)
.gitignore
build
presentation.pre
presentation.tex

index 077cdca..d2268ab 100644 (file)
@@ -25,3 +25,4 @@ img/fig-*
 *.snm
 *.tdo
 *.toc
+*.vrb
diff --git a/build b/build
index 35b62ec..685e33f 100755 (executable)
--- 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
 }
index eb4a4a1..e8cded1 100644 (file)
@@ -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,
index f82c2d0..3566aeb 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}
 
-\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}