\section{Escaping the cloud}

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}{Down to Earth with home-hosting}


% \todo{Stanley Parabole reference?}

% \end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Why?}

\begin{itemize}
	\item \textbf{Privacy}: no prying eyes besides your ISP
	\item \textbf{Control} of your infrastructure
	\item \textbf{Ecology}: reuse old hardware
\end{itemize}

\vfill
\begin{block}{\emph{Tim Berners-Lee} (1994)}
``Now, if someone tries to monopolize the Web, for example pushes proprietary variations on network protocols, then that would make me unhappy.''
\end{block}

\begin{itemize}
	\item Make Tim Berners-Lee happy
\end{itemize}

\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{What?}

\centering\Large
A data store for commodity hardware on heterogenous household connections. 


\vfill\raggedright\normalsize


\begin{block}{Targetting user-facing services}
\begin{itemize}
	\item Static sites 
	\item E-mails
	\item Instant communication
	%\item Video streaming % No need for a data store
	\item Collaboration 
\end{itemize}
\end{block}
\vfill

Nothing fancy like sensors data streams, AI or IoT.

\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{What?}


\begin{block}{Requirements}
\begin{itemize}
	\item \textbf{No single point of failure} / flat hierarchy: 

	Any node can die for extended periods of time.
	\item \textbf{Multi-site}: cluster spans regions/countries.
	\item \textbf{Acceptable performance}.
	\item \textbf{Lightweight}: targets legacy hardware.
	\item \textbf{Conceptually simple}: built for low-tech organisations.

	Adding/maintaining cluster nodes should be easy.
\end{itemize}
\end{block}
\vfill 

\begin{block}{Non-goals}
\begin{itemize}
	\item \textbf{Super badass performance}.
	\item \textbf{NAT traversal} etc.: we require full-mesh connectivity.
\end{itemize}
\end{block}
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{How?}

\begin{itemize}
	\item Theoretically possible with object storage \& CRDTs.
	\vfill
	\item Household uplinks are getting decent (optical fibers).
\end{itemize}



\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Research Questions}

\begin{itemize}
	\item Decent performance despite bad inter-node connectivity.
	\vfill

	\item Tailoring workloads as a function of nodes' capabilities:

	\begin{itemize}
		\item Make use of low-end nodes (e.g. Raspberry Pis),
		\item Avoid impeding global performance because of low-end nodes.
	\end{itemize}
	\vfill

	\item Building CRDTs for target use-cases:

	\begin{itemize}
		\item Software engineering: DSL or native code?
		\item Provide APIs to data store users? Risky?
	\end{itemize}
	\vfill

	\item Cluster management: effortless UX, low perf. overhead.
\end{itemize}
\end{frame}