Merge branch 'master' of git.martlubbers.net:msc-thesis1617
[msc-thesis1617.git] / pres.intro.tex
index a87e514..2ffc7ba 100644 (file)
@@ -1,44 +1,36 @@
 \subsection{IoT}
 \begin{frame}
-       \frametitle{What is Internet of Things (IoT)}
+       \frametitle{What is the Internet of Things (IoT)}
        \begin{block}{History}
                \begin{itemize} \item 1999: \pause{} RFID
                        \item Device to device communication
                        \pause{}
-                       \item ESP8266
+                       \item Now: \pause{} IoT is everywhere
                        \item Estimated 30 billion in 2020
                \end{itemize}
        \end{block}
        \pause{}
        \begin{block}{Tasks performed by IoT}
-               \begin{itemize}
+               \begin{itemize}[<+->]
                        \item Monitoring (Temperature, Electricity, Humidity, Heartbeat)
                        \item Acting (Servo's, Motors)
                        \item Tracking (GPS, WiFi tracking)
-                       \item Relaying (SMS, Whatsapp)
-                       \pause{}
-                       \item Combinations: e.g. Thermostat
-                       \item Smart clothing, smart watches
+                       \item Combinations: e.g. Thermostat, Smart Clothing, Smart Watches
                \end{itemize}
        \end{block}
 \end{frame}
 
 \begin{frame}
        \frametitle{Problems with IoT}
-       \begin{itemize}
+       \begin{itemize}[<+->]
                \item Device $\rightarrow$ Server $\rightarrow$ Application
-               \pause{}
                \item Myriads of devices: Arduino, ESP8266, Raspberry pi\ldots
-               \pause{}
                \item Tons of languages: C++, Lua, C, python\ldots
-               \pause{}
                \item Heaps of communication methods: LoRa (Sigfox, KPN, TTN), BTLE, WiFi, ZigBee\ldots
-               \pause{}
-               \item But\ldots
-               \pause{}
+               \item Resulting in
                \item Separated logic
+               
                \item Integration problems
-               \item Reprogramming, write cycles
        \end{itemize}
 \end{frame}
 
        \frametitle{And there is TOP/iTasks}
        \begin{block}{iTasks}
                \begin{itemize}[<+->]
-                       \item Basic blocks
+                       \item Tasks are basic blocks
                        \item Generated web interface
                        \item Type driven
-                       \item EDSL
+                       \item EDSL in Clean
                \end{itemize}
        \end{block}
-       \pause{}
        \begin{block}{Tasks}
                \begin{itemize}[<+->]
                        \item Filling in forms
        \begin{block}{Overlap}
                \begin{itemize}[<+->]
                        \item Tasks often involve humans
-                       \item Tasks can be performed by IoT
-               \end{itemize}
-       \end{block}
-       \pause{}
-       \begin{block}{But how to integrate}
-               \begin{itemize}[<+->]
-                       \item Distributed iTasks
-                       \item SDS
-                       \item Swat two flies at once
+                       \item Tasks can often be performed by IoT
                \end{itemize}
        \end{block}
 \end{frame}
 
 \begin{frame}
-       \frametitle{Solution}
-       \begin{itemize}[<+->]
-               \item Add IoT to iTasks
-               \item Solve the integration problem
-               \item Extend the reach of iTasks
-               \item iTasks server
-               \item IoT device client
-               \item EDSL to make IoT tasks
-               \item Interpreted on the client
-               \item No reprogramming
-       \end{itemize}
+       \frametitle{Problem statement}
+       \begin{block}{What is the problem?}
+               \begin{itemize}
+                       \item iTasks works
+                       \item IoT works
+                       \item But\ldots\pause{} integration does not
+               \end{itemize}
+       \end{block}
+
        \pause{}
-       Internalship
-\end{frame}
 
-\begin{frame}
-       \frametitle{Problems overcome}
-       \begin{itemize}[<+->]
-               \item Way to express IoT Tasks
-               \item Write client software
-               \item Write server software
-               \item Connect them up
-       \end{itemize}
+       \begin{block}{Why is this interesting?}
+               \begin{itemize}[<+->]
+                       \item Makes IoT integration easier
+                       \item Safer IoT clients
+                       \item Extend the reach of iTasks
+                       \item Generate all three components of IoT from one source
+               \end{itemize}
+       \end{block}
 \end{frame}
 
 \subsection{iTasks}
 \begin{frame}[fragile]
-       \frametitle{Task Oriented Programming}
-       \framesubtitle{\ldots and iTasks}
-       \begin{block}{iTasks}
+       \frametitle{First some theory}
+       \framesubtitle{\ldots iTasks}
+       \begin{block}{Tasks}
                \begin{itemize}[<+->]
-                       \item Basic blocks
-                       \item Generated web interface
-                       \item Type driven
+                       \item Observables
+                       \item Given the state, a \CI{TaskValue} is observed.
+                       \item Continuous execution
                \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}
+       \begin{figure}[ht]
+               \centering
+               \includegraphics[width=.6\linewidth]{fig-taskvalue}
+               \caption{The states of a \CI{TaskValue}}
+       \end{figure}
 \end{frame}
 
 \begin{frame}[fragile]
        \frametitle{Task Oriented Programming}
        \framesubtitle{Example}
-       \begin{lstlisting}
+       \begin{lstlisting}[language=Clean]
 :: Name = { firstname :: String, lastname :: String }
 derive class iTask Name
 
@@ -175,7 +141,7 @@ enterName = enterInformation "Enter your name" []
        \frametitle{Task Oriented Programming (3)}
        \framesubtitle{Combinators}
        \begin{block}{Sequence}
-               \begin{lstlisting}
+               \begin{lstlisting}[language=Clean]
 (>>=)  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
@@ -188,7 +154,7 @@ enterName = enterInformation "Enter your name" []
        \end{block}
 
        \begin{block}{Parallel}
-               \begin{lstlisting}
+               \begin{lstlisting}[language=Clean]
 (-||-) 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
@@ -200,13 +166,16 @@ enterName = enterInformation "Enter your name" []
 \begin{frame}[fragile]
        \frametitle{Shared Data Sources (SDS)}
        \begin{block}{What is an SDS}
-               \begin{itemize}[<+->]
+               \begin{itemize}
                        \item Read function
                        \item Write function
+                       \pause{}
+                       \item Both have access to the world
+                       \item Default: JSON file storage
                \end{itemize}
        \end{block}
 
-       \begin{lstlisting}
+       \begin{lstlisting}[language=Clean]
 :: RWShared p r w = ... 
 :: ReadWriteShared r w :== RWShared () r w
 :: Shared r :== ReadWriteShared r r
@@ -221,65 +190,16 @@ 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 Implement a device as an SDS
-                       \pause{}
-                       \item Tailor made SDS for every task
-                       \item Difficult to get logic in
-                       \pause{}
-                       \item Arjan's Distributed iTasks
-                       \pause{}
-                       \item Requires fast hardware
-                       \pause{}
-               \end{itemize}
-       \end{block}
+       \frametitle{So how can we do the integration?}
+       \begin{itemize}[<+->]
+               \item Program device as an SDS
+               \item Distributed iTasks
+               \item Devices have different paradigms
+       \end{itemize}
 \end{frame}
 
 \begin{frame}
-       \frametitle{Solution}
-       \pause{}
-       \begin{block}{EDSL to the rescue}
-               \pause{}
-               After the break.
-       \end{block}
+       \frametitle{How to express Tasks suitable for microcontrollers}
+       \pause\centering\Huge EDSLs to the rescue
 \end{frame}