Commits

Romain Pelisse committed aebe14a

adds concurrent parts, plus a some images

Comments (0)

Files changed (4)

img/lego-mess.jpg

Added
New image

img/lego-simple.jpg

Added
New image

img/schisms.png

Added
New image
   \end{block}
 \end{frame}
 
-\section*{Agenda}
-\begin{frame}
-  \tableofcontents
- \end{frame}
+%\section*{Agenda}
+%\begin{frame}
+%  \frametitle{Agenda}
+%  \tableofcontents
+%\end{frame}
 
 \chapter{Building an house : the difference between frontend and backend developpment}
 \begin{frame}[fragile]
   \frametitle{What is an (web based) application today ?}
-  here they'll a nice picture
+  here they'll a nice picture here
 \end{frame}
 
 \begin{frame}[fragile]
   \frametitle{Lifecycle of each tiers}
-  \begin{block}{Front end}
-    \begin{itemize}
-      \item \textit{get the feature !} (quick dev. cycle)
-      \item business-oriented: logic must be easy to implement
-      \item "dirty" code - it has to work no matter what
-    \end{itemize}
-  \end{block}
-  \begin{block}{Back end}
-    \begin{itemize}
-      \item stability before all, code must reliable and controller
-      \item robustness, resilience, scalability
-      \item glutter code is death
-    \end{itemize}
-  \end{block}
+  \begin{columns}
+    \begin{column}[r]{0.7\textwidth}
+      \begin{block}{Front end}
+        \begin{itemize}
+          \item \textit{get the feature !} (quick dev. cycle)
+          \item business-oriented: logic must be easy to implement
+          \item "dirty" code - it has to work no matter what
+        \end{itemize}
+      \end{block}
+
+      \begin{block}{Back end}
+        \begin{itemize}
+          \item stability before all, code must reliable and controller
+          \item robustness, resilience, scalability
+          \item glutter code is death
+        \end{itemize}
+      \end{block}
+    \end{column}
+
+    \begin{column}[l]{0.3\textwidth}
+      % Place holder for the textblock image
+    \end{column}
+  \end{columns}
+
+  \begin{textblock*}{40mm}[0.4,1.5](100mm,100mm)
+    \includegraphics[height=145px]{../img/schisms.png}
+  \end{textblock*}
+
+
 \end{frame}
 
 \begin{frame}[fragile]
   \frametitle{Java : best of both world ?}
   \begin{block}{What made the success of Java on the server side ?}
     \begin{itemize}
-      \item Java is easy to learn
-      \item many frameworks (Struts, JSF,...) arises to ease even more web front end dev
-      \item but also Java is OPP allowed "complex system design" (with pattern,...)
+      \item is easy to learn
+      \item many frameworks (Struts, JSF,...) %arises to ease it even more on the web front end
+      \item OPP allowed "complex system design" %(with pattern,...)
     \end{itemize}
   \end{block}
-  \begin{block}{State as today}
+
+  \begin{block}{State today}
     \begin{itemize}
-      \item lack of advance feature in Java requires complex system to have a LOT of code
-      \item lack of integration with the web tiers leads to use other language on the front end side
-      (JSP, Groovy, JRuby...) more appropriate
-      \item once right in the middle Java became too basic for both sides
+      \item lack of advance feature %in Java requires complex system to have a LOT of code
+      \item lack of integration %with the web tiers leads to use other language on the front end side (JSP, Groovy, JRuby...) more appropriate
     \end{itemize}
   \end{block}
+
+  \begin{raggedleft}
+    Once right in the \textbf{middle},\newline
+      Java became too \textbf{crude} for both sides...
+  \end{raggedleft}
+
+  \begin{textblock*}{40mm}[0.4,3.1](100mm,100mm)
+    \includegraphics[height=65px]{../img/lego-simple.jpg}
+  \end{textblock*}
+
+  \begin{textblock*}{40mm}[0.4,1.9](100mm,100mm)
+    \includegraphics[height=65px]{../img/lego-mess.jpg}
+  \end{textblock*}
+
 \end{frame}
 
 \begin{frame}[fragile]
   \end{textblock*}
 \end{frame}
 
-\section{Key features for backend development}
+\section{Key features of Scala for backend development}
 \subsection{Scala expressiveness and Scala}
+
+\begin{frame}[fragile]
+  \frametitle{Expressiveness: a big misunderstanding}
+    \begin{block}{What expressiveness is (and is not)}
+      \begin{itemize}
+        \item it's not about \textbf{readability}
+        \item it's not about \textbf{conciveness}
+        \item it's about expressing \textbf{high-level} concept
+      \end{itemize}
+    \end{block}
+\end{frame}
+
 \begin{frame}[fragile]
   \frametitle{Expressiveness}
-    \begin{block}{Conciseness vs Expressiveness}
+    \begin{block}{Some expressiveness comparaison}
       \begin{columns}
         \begin{column}[l]{0.3\textwidth}
         \begin{center}
-
         \Small{
 (python)
 \lstset{language=Python}
       \end{columns}
     \end{block}
     \begin{center}
-    \tiny{All examples taken from  \mylink{What is
-    expressiveness}{What is expresiveness ?}, please check it for
-    more}
+    \tiny{All examples taken from  \mylink{What is expressiveness}{What is expresiveness ?}, please check it for more}
     \end{center}
 \end{frame}
 
           \item \textbf{increase readablitity} - less "boilerplate" code to read
           \item \textbf{increase code resusability} - with functionnal programming, less code
           duplication
+          \item no more dumb debug, more code reading...
         \end{itemize}
       \end{block}
     \end{center}
 \subsection{Design for scalability and concurrent programming}
 
 \begin{frame}[fragile]
-  \frametitle{TODO}
+  \frametitle{Scalability}
+  \begin{block}{What is it ?}
+    \textit{In telecommunications and software engineering, scalability is a desirable
+    property of a system, a network, or a process, which indicates its ability to either
+    handle growing amounts of work in a gracefull manner or to be readily enlarged.}
+    - Wikipedia (15/02/2010)
+  \end{block}
+
+  \begin{itemize}
+    \item Scalabilty
+    \begin{itemize}
+      \item Give more resources  to the system as load or number of user increases
+    \end{itemize}
+
+    \item Difficult to achieve
+    \begin{itemize}
+      \item Increased complexity
+      \item Humain brain
+      \item Sharing is hard
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Java Thread Model}
+  \begin{itemize}
+    \item Primitives
+    \begin{itemize}
+        \item Threads
+        \item Volatile
+        \item Synchronized
+        \begin{itemize}
+          \item variable
+          \item methods
+        \end{itemize}
+    \end{itemize}
+    \begin{itemize}
+        \item Java Memory Model
+        \item atomic operation
+        \item immutability
+        \item defense copies
+    \end{itemize}
+    \item Threads Pools
+    \item Executor framework
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{The Scala (functionnal way) : Actors}
+  \begin{itemize}
+    \item Actors: \textit{Runnable with a BlockingQueue  (mailbox)}
+    \begin{itemize}
+      \item Mailbox
+      \item Non blocking
+      \item Managed resources
+    \end{itemize}
+  \end{itemize}
+
   \begin{center}
+    Actors unify thread based and event based models
   \end{center}
 \end{frame}
 
+\begin{frame}[fragile]
+  \frametitle{The Scala (functionnal way) : Actors}
+  \begin{itemize}
+    \item So, Scala and Actors for concurrent programming ?
+    \begin{itemize}
+      \item Benefits for sure ...
+      \begin{itemize}
+        \item Safe space to think sequentially
+        \item Messages as sole way to communicate
+        \item Can fallback on old share data / lock model
+        \item Typing harness providing even more robustness
+        \item Java integration
+      \end{itemize}
+      \item ... but arguably
+      \begin{itemize}
+        \item Actors and messages passing are nothing new
+        \item Functionnal programming on top of OOP might get you sick
+        \item Still a new world, lack of “Effective Actors” book...
+      \end{itemize}
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
 \begin{frame}{Questions and answers}
   \begin{center}
     \includegraphics[height=200px]{../img/questions-answer.jpg}
     \includegraphics[height=100px]{../img/obfuscate-it.jpg}
   \end{textblock*}
 
-    \begin{columns}
+    \begin{columns
       \begin{column}[l]{0.5\textwidth}
         \begin{center}
           (Java)