\documentclass{beamer}

\usepackage[utf8x]{inputenc}

\usepackage{amsmath}
\usepackage{amssymb} % math symbols
\usepackage{geometry}
\usetheme{Darmstadt}
\usecolortheme{lily}
\setbeamertemplate{navigation symbols}{}
\usepackage{anyfontsize}
\usepackage{verbatim}

\newcommand{\R}{\mathbb{R}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\C}{\mathbb{C}}

\author{Axel Angel}
\title{Yesod}
\subtitle{GNU Generation}
\institute{EPFL}
\date{October 2013}
\subject{Yesod presentation}

\begin{document}
\maketitle

\begin{frame}
    \frametitle{Table of Contents}
    \tableofcontents[hideallsubsections]
\end{frame}

\section{Introduction}
\subsection{What is Yesod?}
\begin{frame}
      {\fontsize{80}{80}\selectfont Yesod} is a {\large cool} {\bf type-safe} {\small functional} {\fontsize{6}{6}\selectfont monadic\footnote{ {\tiny productive}}} {\Large free-as-in-free-software} {\it upfront-debugging} {\it fast} {\large \bf applicative} DRY {\rm next-gen} \tiny{full of DSL} {\large EXPERIMENTAL} {\Large \it complete} {\scriptsize great} strong-typed {\huge Web framework}
\end{frame}

\subsection{Why?}
\begin{frame}
    Yesod is a Haskell web-framework with type-safety and productivity in mind

    Why it's cool?
    \begin{itemize}
        \item Why a new framework? Great ideas, DRY
        \item Why Haskell? Type-safety and type inference
        \item Why type-safety?
    \end{itemize}
\end{frame}

\subsection{Haskell}
\begin{frame}
    Haskell
    \begin{itemize}
        \item Functional language
        \item Type system on steroids: Applicative, Functor, Monad
        \item Side effects are part of the type (Monad)
        \item Abstract polymorphic types (+extensions)
        \item Compiles down to ASM (self-contained)
    \end{itemize}
    Haskell is very hard at some times!
\end{frame}

\subsection{Strength}
\begin{frame}
    Yesod strong points:
    \begin{itemize}
        \item  Type-safety
        \item  Security
        \item  RESTful
        \item  fast (warp)
        \item  TDD (not tested)
    \end{itemize}
\end{frame}

\section{Details}
\subsection{How?}
\begin{frame}
    How?
    \begin{itemize}
        \item  DSL: TH, Quasi Quoting (usable separately)
        \item  DB: Persistent (usable separately)
        \item  DRY: Handlers, Widgets, Forms, Subsite
        \item  Included: Sessions, Auth, I18N
        \item  Migration (database abstraction)
    \end{itemize}
\end{frame}

\subsection{DSL}
\begin{frame}
    DSL
    \begin{itemize}
        \item Shakespeare
        \item Routes (TH)
        \item Model (TH)
        \item Esqueleto (EDSL)
    \end{itemize}
\end{frame}

\subsection{In practice}
\begin{frame}
    Deployment
    \begin{itemize}
        \item Warp (standalone)
        \item FastCGI/SCGI (modular)
        \item CGI (old)
        \item Webkit (local)
        \item Dev server
    \end{itemize}
\end{frame}

\section{Around Yesod}
\subsection{Contact}
\begin{frame}
    Community
    \begin{itemize}
        \item on GitHub, reactive and open
        \item IRC \#yesod, not that great
        \item IRC \#haskell, great
        \item Book "Yesod book", great
        \item Moving, more ideas coming
    \end{itemize}
\end{frame}

\subsection{Coming features}
\begin{frame}
    Experimental
    \begin{itemize}
        \item AngularJS
        \item Typescript/Coffescript/Roy
        \item EventSource/Real time
    \end{itemize}
    What's next? Better Javascript integration
    \begin{itemize}
        \item Fay/Elm
        \item Still not perfect but usable in production
    \end{itemize}
\end{frame}

\subsection{More more more}
\begin{frame}
    More
    \begin{itemize}
        \item Yesod wikipedia
        \item Github: github.com/yesodweb
        \item Yesod book + blog: yesodweb.com
        \item scattered articles on the web
    \end{itemize}
\end{frame}

\end{document}
