From 3e8d5c226fe32c8b2b376daf56f775bc87f4a882 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Thu, 11 Jul 2024 23:02:32 +0200
Subject: Add Guix.social talk about Guix RISCV bootstrap

---
 GuixSocial/.gitignore     |  2 ++
 GuixSocial/Makefile       | 16 +++++++++
 GuixSocial/contents.latex | 60 ++++++++++++++++++++++++++++++++++
 GuixSocial/takahashi.sty  | 82 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 160 insertions(+)
 create mode 100644 GuixSocial/.gitignore
 create mode 100644 GuixSocial/Makefile
 create mode 100644 GuixSocial/contents.latex
 create mode 100644 GuixSocial/takahashi.sty

diff --git a/GuixSocial/.gitignore b/GuixSocial/.gitignore
new file mode 100644
index 0000000..dc4967f
--- /dev/null
+++ b/GuixSocial/.gitignore
@@ -0,0 +1,2 @@
+aux
+*.pdf
diff --git a/GuixSocial/Makefile b/GuixSocial/Makefile
new file mode 100644
index 0000000..75b713c
--- /dev/null
+++ b/GuixSocial/Makefile
@@ -0,0 +1,16 @@
+TARGET	= presentation.pdf
+
+AUX			= aux
+CONTENT		= contents.latex
+
+all: $(TARGET)
+
+$(TARGET): $(CONTENT)
+	mkdir -p $(AUX)
+	pdflatex -output-directory=$(AUX) $(CONTENT)
+	cp $(AUX)/*.pdf .
+
+clean:
+	rm -r $(TARGET) $(AUX)
+
+.PHONY: all clean
diff --git a/GuixSocial/contents.latex b/GuixSocial/contents.latex
new file mode 100644
index 0000000..4141e5d
--- /dev/null
+++ b/GuixSocial/contents.latex
@@ -0,0 +1,60 @@
+\documentclass{beamer}
+\usepackage{takahashi}
+\usepackage{hyperref}
+\hypersetup{
+    colorlinks = true,
+    urlcolor = {red}
+}
+\newcommand{\link}[1]{\footnote{\url{#1}}}
+\newcommand{\stack}[1]{\begin{tabular}{@{}c@{}}#1\end{tabular}}
+\begin{document}
+\takahashi{\stack{\textbf{Guix}\\\textbf{RISC-V}\\\textbf{Bootstrap}}}
+
+\takahashi{\stack{\textbf{Me, ekaitz}\\freelance\\engineer\link{https://elenq.tech}}}
+
+\takahashi{\textbf{RISC-V}}
+\takahashi{\stack{Most ISAs\\are proprietary\\license fees}}
+\takahashi{\stack{RISC-V\\is open\\and modular}}
+\takahashi{\stack{microcontrollers\\computers\\huge servers}}
+\takahashi{\stack{Linux \& RISC-V\\getting there}}
+
+\takahashi{\textbf{Bootstrapping}}
+\takahashi{\stack{Can we make sure our\\Free software comes\\from the sources?}}
+\takahashi{NO}
+\takahashi{\stack{No, the compilers\\(person or program)\\might be evil}}
+\takahashi{\stack{Making yogurt\link{https://archive.fosdem.org/2020/schedule/event/gnumes/}\\Trusting Trust\link{https://dl.acm.org/doi/pdf/10.1145/358198.358210}}}
+\takahashi{\stack{Bootstrapping\\prevents this}}
+
+\takahashi{\stack{\textbf{A new}\\\textbf{commencement}\footnote{(gnu
+packages commencement)}}}
+\takahashi{\stack{\textbf{Ports!}
+           \\\onslide<2,3,4>{Stage0-POSIX}
+           \\\onslide<3,4>{GNU Mes}
+           \\\onslide<4>{TinyCC}}}
+\takahashi{\stack{\textbf{Backports!}
+           \\\onslide<2,3>{GCC 4.6.4}
+           \\\onslide<3>{TinyCC-Boot}}}
+\takahashi{\stack{\textbf{Changes!}
+           \onslide<2>{\\Musl instead of
+                       \\GCC 2.95 \& Glibc}}}
+
+\takahashi{See \href{https://issues.guix.gnu.org/issue/71921}{\#71921}}
+
+\takahashi{\stack{\textbf{People}
+           \\\onslide<2,3,4>stikonas
+           \\\onslide<3,4>janneke
+           \\\onslide<4>efraim}}
+\takahashi{\stack{\textbf{Money}\\NLNet-NGI\link{https://nlnet.nl/}}}
+
+\takahashi{\stack{Leadership}}
+\takahashi{\stack{
+           \onslide<1,2,3>{Writing\footnote{\href{https://ekaitz.elenq.tech/tag/bootstrapping-gcc-in-risc-v.html}{My blog}}}\\
+           \onslide<2,3>{Introductory talk\footnote{\href{https://archive.fosdem.org/2023/schedule/event/guixriscv/}{FOSDEM 2023}}}\\
+           \onslide<3>{Advanced talk\footnote{\href{https://archive.fosdem.org/2023/schedule/event/guixriscv/}{FOSDEM 2024 (in person!)}}} }}
+
+\takahashi{ \stack{\textbf{Thanks}
+            \\\onslide<2,3,4,5>help
+            \\\onslide<3,4,5>money
+            \\\onslide<4,5>support
+            \\\onslide<5>attention}}
+\end{document}
diff --git a/GuixSocial/takahashi.sty b/GuixSocial/takahashi.sty
new file mode 100644
index 0000000..cab0056
--- /dev/null
+++ b/GuixSocial/takahashi.sty
@@ -0,0 +1,82 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{takahashi}[2013/06/25 Takahashi method for beamer]
+
+%   Copyright (c) 2008-2013, Chung-chieh Shan.
+
+%   This program is free software; you can redistribute it and/or modify
+%   it under the terms of the GNU General Public License as published by
+%   the Free Software Foundation; either version 2 of the License, or
+%   (at your option) any later version.
+
+%   This program is distributed in the hope that it will be useful,
+%   but WITHOUT ANY WARRANTY; without even the implied warranty of
+%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%   GNU General Public License for more details.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Our main command \takahashi takes an optional overlay specification
+% (for the frame), an optional argument (frame options, defaulting to
+% "plain"), and a mandatory argument (the contents of the frame).
+\newcommand<>{\takahashi}[2][plain]{%
+  \toks0={#1}%
+  \toks2={\begin{frame}#3}%
+  \edef\next{\the\toks0 }%
+  \ifx\next\@empty
+    \edef\next{\the\toks2 }%
+  \else
+    \edef\next{\the\toks2 [{\the\toks0 }]}%
+  \fi
+  \next
+    \aftergroup\aftergroup\aftergroup\beamer@takahashi
+    \resizebox\hsize!{#2}%
+  \end{frame}%
+}
+
+% Define \takahashi@shrinkframebox, a variant of \beamer@shrinkframebox
+% that centers the frame horizontally and does not depend on
+% \beamer@shrinkpercentage.
+\def\takahashi@shrinkframebox{%
+  \@tempdima=\ht\beamer@framebox
+  \advance\@tempdima\dp\beamer@framebox
+  \ifdim\@tempdima>\beamer@frametextheight
+    \@tempcnta=\@tempdima
+    \divide\@tempcnta by 65536
+    \@tempdimc=\beamer@frametextheight
+    \divide\@tempdimc by\@tempcnta
+    \edef\beamer@factortemp{\strip@pt\@tempdimc}%
+    \setbox\beamer@framebox=\vbox to\beamer@frametextheight{%
+      \begin{pgfpicture}{-.5\wd\beamer@framebox}{-\beamer@frametextheight}{0pt}{0pt}
+        {\pgftransformscale{\beamer@factortemp}%
+          \pgftext[top]{\box\beamer@framebox}}%
+      \end{pgfpicture}%
+    }%
+  \fi
+}
+
+% Takahashi slides always enable the frame option "shrink" with
+% \takahashi@shrinkframebox in place of \beamer@shrinkframebox.
+\def\beamer@takahashi{%
+  \beamer@shrinktrue
+  \let\beamer@shrinkframebox\takahashi@shrinkframebox
+}
+
+% Patch beamer's implementation of the ignorenonframetext option
+% (i.e., the \mode* command) so that \takahashi is not ignored.
+\toks0={\ifx\beamer@nexttoken\takahashi\let\next=\beamer@stopoutsidemode\fi}%
+\toks2=\expandafter{\beamer@treat}%
+\edef\beamer@treat{\the\toks0 \the\toks2 }%
+
+% Tested with beamer 3.07:
+% \documentclass{beamer}
+% \usepackage{takahashi}
+% \usepackage{calc}
+% \setbeamersize{text margin left = 0pt, text margin right = 0pt}
+% \begin{document}
+% \takahashi{Test \onslide<2>{some more}}
+% \takahashi<1>[label=repeat]{\frametitle{Title here}Test \onslide<2>{some more}}
+% \againframe<2>{repeat}
+% \takahashi{$_g$\!\vrule depth.2pt height.2pt \vrule}
+% \takahashi[]{\frametitle{Title here}$_g$\!\vrule depth.2pt height.2pt \vrule}
+% \takahashi{\raisebox{0pt}[\height+1pt][\depth+1pt]{!}}
+% \end{document}
-- 
cgit v1.2.3