\subsection{Overview}
+\begin{frame}
+ \frametitle{Current state of mTask}
+ \begin{itemize}
+ \item It all seems perfect
+ \item \ldots\pause{} but\ldots
+ \pause{}
+ \item No interaction
+ \item Compilation requires reprogramming
+ \item Entire system is created and fixed
+ \end{itemize}
+\end{frame}
+
\begin{frame}
\frametitle{Solution}
- \begin{block}{Downsides of the current mTask view}
- \begin{itemize}
- \item It all seems perfect
- \item \ldots\pause{} but\ldots
- \pause{}
- \item No interaction
- \item Compilation requires reprogramming
- \end{itemize}
- \end{block}
- \pause{}
- \begin{block}{Solution}
- \begin{itemize}[<+->]
- \item New bytecode backend for mTask
- \item Interpreter on client
- \item Server in iTasks with integration
- \item No taskserver generation, onetime programming
- \item Explicit SDS publishing
- \end{itemize}
- \end{block}
+ \begin{itemize}[<+->]
+ \item New bytecode backend for mTask
+ \item Interpreter on client
+ \item Server in iTasks with integration
+ \item No taskserver generation, onetime programming
+ \item Dynamic task sending
+ \item Explicit SDS publishing
+ \end{itemize}
\end{frame}
\subsection{Extending mTask}
\end{lstlisting}
\end{frame}
-\begin{frame}[fragile]
- \frametitle{Functionality}
- \begin{block}{SDS scope and naming}
- \begin{itemize}
- \item SDS is lost
- \item State per device
- \item Tasks are sent and gone
- \item Save bandwidth
- \end{itemize}
- \pause{}
- \begin{lstlisting}
-class namedsds v where
- namedsds :: ((v t Upd) -> In (Named t String) (Main (v c s)))
- -> (Main (v c s)) | ...
-:: Named a b = Named infix 1 a b
-
-instance sdspub ByteCode where
- pub (BC x) = BC (censor (\[BCSdsFetch s]->[BCSdsPublish s]) x)
- \end{lstlisting}
- \end{block}
-\end{frame}
+%\begin{frame}[fragile]
+% \frametitle{Functionality}
+% \begin{block}{SDS scope and naming}
+% \begin{itemize}
+% \item SDS is lost
+% \item State per device
+% \item Tasks are sent and gone
+% \end{itemize}
+% \pause{}
+% \begin{lstlisting}
+%class namedsds v where
+% namedsds :: ((v t Upd) -> In (Named t String) (Main (v c s)))
+% -> (Main (v c s)) | ...
+%:: Named a b = Named infix 1 a b
+%
+%instance sdspub ByteCode where
+% pub (BC x) = BC (censor (\[BCSdsFetch s]->[BCSdsPublish s]) x)
+% \end{lstlisting}
+% \end{block}
+%\end{frame}
\begin{frame}[fragile]
\frametitle{Assignment}
instance assign ByteCode where
(=.) (BC v) (BC e) = BC (e >>| censor makeStore v)
+instance sdspub ByteCode where
+ pub (BC x) = BC (censor (\[BCSdsFetch s]->[BCSdsPublish s]) x)
+
makeStore [BCSdsFetch i] = [BCSdsStore i]
makeStore [BCDigitalRead i] = [BCDigitalWrite i]
makeStore [...] = [...]
\end{lstlisting}
\end{frame}
+
\begin{frame}[fragile]
\frametitle{Task scheduling}
\begin{block}{Old}
\end{frame}
\subsection{Server}
+\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
+ \item On write the SDS returns \CI{p -> Bool}
+ \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}
\subsection{Examples}