about summary refs log tree commit diff
path: root/presentation.tex
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@gmail.com>2018-03-12T00·09+0100
committerVincent Ambo <tazjin@gmail.com>2018-03-12T00·09+0100
commit6f4278537ea8380b21dd094dd537fa2d39c674b4 (patch)
treec77cb1fde42c018adeb55d31a6a4217817821ecb /presentation.tex
parentda53459e60d57045ef68c4b4608417027d803bf2 (diff)
feat(slides): Add iniital presentation
Diffstat (limited to 'presentation.tex')
-rw-r--r--presentation.tex71
1 files changed, 71 insertions, 0 deletions
diff --git a/presentation.tex b/presentation.tex
new file mode 100644
index 0000000000..579850f77b
--- /dev/null
+++ b/presentation.tex
@@ -0,0 +1,71 @@
+\documentclass[12pt]{beamer}
+\usetheme{metropolis}
+\newenvironment{code}{\ttfamily}{\par}
+\title{Where does \textit{your} compiler come from?}
+\date{2018-03-13}
+\author{Vincent Ambo}
+\institute{Norwegian Unix User Group}
+\begin{document}
+  \maketitle
+
+  %% Slide 1:
+  \section{Introduction}
+
+
+  %% Slide 2:
+  \begin{frame}{Chicken and egg}
+    Self-hosted compilers are often built using themselves, for example:
+
+    \begin{itemize}
+    \item C-family compilers bootstrap themselves \& each other
+    \item (Some!) Common Lisp compilers can bootstrap each other
+    \item \texttt{rustc} bootstraps itself with a previous version
+    \item ... same for many other languages!
+    \end{itemize}
+  \end{frame}
+
+  %% Slide 3:
+  \begin{frame}{Trusting Trust}
+    \begin{center}
+      Could this be exploited?
+    \end{center}
+  \end{frame}
+
+  %% Slide 4:
+  \begin{frame}{Short interlude: A quine}
+    \begin{center}
+      \begin{code}
+        ((lambda (x) (list x (list 'quote x)))
+        \newline\vspace*{6mm} '(lambda (x) (list x (list 'quote x))))
+      \end{code}
+    \end{center}
+  \end{frame}
+
+  %% Slide 5:
+  \begin{frame}{Short interlude: Quine Relay}
+    \begin{center}
+      \includegraphics[
+        keepaspectratio=true,
+        height=\textheight
+      ]{quine-relay.png}
+    \end{center}
+  \end{frame}
+
+  %% Slide 6:
+  \begin{frame}{Trusting Trust}
+    An attack described by Ken Thompson in 1984:
+
+    \begin{enumerate}
+    \item Modify a compiler to detect when it's compiling itself.
+    \item Let the modification insert \textit{itself} into the new compiler.
+    \item Add arbitrary attack code to the modification.
+    \end{enumerate}
+  \end{frame}
+
+  %% Slide 7:
+  \begin{frame}{Damage potential?}
+    \begin{center}
+      Let your imagination run wild!
+    \end{center}
+  \end{frame}
+\end{document}