slides.tex 19.5 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
\input{../.style/header}

\title{Software Management for Open Science}
\author{Horea Christian}
\institute{SSC TheAlternative | ETHZ and UZH}

\begin{document}
	\begin{frame}
		\titlepage
	\end{frame}
	\begin{frame}{These Slides}
		Type one link, click all others:
		\begin{itemize}
Horea Christian's avatar
Horea Christian committed
14
			\item Download \textcolor{lg}{\href{https://thealternative.ch/ssm/slides.pdf}{\texttt{thealternative.ch/ssm/slides.pdf}}}
15
16
17
		\end{itemize}
	\end{frame}
	\section{Requirements}
Horea Christian's avatar
Horea Christian committed
18
		\subsection{... for the demo session}
19
20
21
			\begin{frame}{SSH}
				Linux and MacOS:
				\begin{itemize}
22
					\item Check that you can run:
Horea Christian's avatar
Horea Christian committed
23
24
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|ssh YOURUSER@130.60.24.66|
25
26
27
				\end{itemize}
				Windows:
				\begin{itemize}
28
29
					\item Download and launch “Git for Windows” from \textcolor{lg}{\href{https://git-for-windows.github.io}{\texttt{git-for-windows.github.io}}}.
					\item Check that you can run:
Horea Christian's avatar
Horea Christian committed
30
31
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|ssh YOURUSER@130.60.24.66|
32
33
				\end{itemize}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
34
35
36
			\begin{frame}{Command Line Text Editor}
				Usable via SSH and ubiquitous. There are many alternatives, but here we use \textcolor{lg}{\texttt{nano}}:
				\begin{itemize}
37
					\item Open file:
Horea Christian's avatar
Horea Christian committed
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|nano file|
					\item Save via: \keys{Ctrl + c}
					\item Exit via: \keys{Ctrl + x}
				\end{itemize}
			\end{frame}
			\begin{frame}{Git and Social Coding}
				Git needs to know who you are.
				\begin{itemize}
					\item On the server, run:
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git config --global user.name "Your Name"|
					\vspace{-3.1em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git config --global user.email yourname@example.com|
				\end{itemize}

54
55
				GitHub is a \textbf{social coding platform} providing free accounts:
				\begin{itemize}
56
					\item Register under \textcolor{lg}{\href{https://github.com}{\texttt{github.com}}}.
Horea Christian's avatar
Horea Christian committed
57
					\item Use a password which you can remember.
58
59
60
				\end{itemize}
			\end{frame}
	\section{What?}
Horea Christian's avatar
Horea Christian committed
61
		\subsection{What is software management?}
62
			\begin{frame}{The Package}
Horea Christian's avatar
Horea Christian committed
63
64
65
66
67
				\begin{center}
					\textcolor{ldorange}{\Large Better organization for your research!}
				\end{center}
				\vspace{1.5em}

68
				A package is a software format which is (easily):
Horea Christian's avatar
Horea Christian committed
69
				\begin{multicols}{2}
70
				\begin{itemize}
71
72
73
74
75
76
					\item Distributable
					\item Integrated
					\item Testable
					\item Updateable
					\item Uninstallable
					\item Understandable
77
				\end{itemize}
Horea Christian's avatar
Horea Christian committed
78
				\end{multicols}
79
80
81
82
83
			\end{frame}
			\begin{frame}{Package Management --- best done automatically}
				\begin{minipage}{0.44\textwidth}
					Packages interact in complex and nontrivial manners:
					\begin{itemize}
84
85
86
87
						\item Version-dependent behaviour
						\item Optional features
						\item Incompatibilities
						\item Static/dynamic linking
88
89
90
91
92
93
94
95
96
97
98
99
100
101
					\end{itemize}
				\end{minipage}
				\begin{minipage}{0.55\textwidth}
					\begin{figure}
						\includegraphics[height=0.83\textheight]{img/ng_mi.png}
						\vspace{-1em}
						\caption{Minimal neuroscience package dependency stack \cite{Ioanas2017}}
					\end{figure}
				\end{minipage}
			\end{frame}
			\begin{frame}{Binary Packages}
				\begin{figure}
				\centering
					\includegraphics[width=0.9\textwidth]{img/pm_d.png}
Horea Christian's avatar
Horea Christian committed
102
					\caption{Rudimentary overview of binary package distribution.}
103
104
105
106
107
108
				\end{figure}
				\begin{columns}
					\column{.5\linewidth}
						Advantages:
						\begin{itemize}
							\item Faster installation
Horea Christian's avatar
Horea Christian committed
109
							\item Less variable installation
110
111
112
113
114
115
116
117
118
119
						\end{itemize}
					\column{.5\linewidth}
						Disadvantages:
						\begin{itemize}
							\item No access to live software
							\item Man-in-the middle
							\item Limited support for rolling release
						\end{itemize}
				\end{columns}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
120
			\begin{frame}{Source-Based Packages}
121
122
123
				\begin{figure}
				\centering
					\includegraphics[width=0.9\textwidth]{img/pm_g.png}
Horea Christian's avatar
Horea Christian committed
124
					\caption{Rudimentary overview of source-based package distribution.}
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
				\end{figure}
				\begin{columns}
					\column{.5\linewidth}
						Advantages:
						\begin{itemize}
							\item Live software is a first-class citizen
							\item Thin wrapper for upstream
							\item Acutely version and linking aware
						\end{itemize}
					\column{.5\linewidth}
						Disadvantages:
						\begin{itemize}
							\item Slower installation
							\item More variable installation
						\end{itemize}
				\end{columns}
			\end{frame}
	\section{Why?}
Horea Christian's avatar
Horea Christian committed
143
144
		\subsection{Why does open science require package management?}
			\begin{frame}{Quality}
145
				\begin{itemize}
Horea Christian's avatar
Horea Christian committed
146
147
148
149
150
					\item Make development more transparent.
					\item Get \textbf{constructive} feedback.
					\item Ask for help with concrete reproducible examples.
					\item Easily manage \textcolor{lg}{\href{https://github.com/gentoo-science/sci/issues}{\texttt{bugs/issues}}} and \textcolor{lg}{\href{https://github.com/gentoo-science/sci/pulls}{\texttt{conributions}}}.
					\item Implement proper version tracking.
151
152
153
154
155
156
157
158
159
				\end{itemize}
			\end{frame}
			\begin{frame}{Impact}
				\begin{itemize}
					\item Reach more potential users.
					\item Communicate with users to improve your software's usability.
					\item Retain more users.
				\end{itemize}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
160
			\begin{frame}{Recognition}
161
				\begin{itemize}
Horea Christian's avatar
Horea Christian committed
162
163
164
165
166
167
168
					\item Establish proof of authorship.
					\item Publicize your innovative workflows, solutions, data structures.
					\item Create a handle for attribution (including DOI), e.g:
					\begin{itemize}
						\item BehavioPy: \textcolor{lg}{\href{http://doi.org/10.5281/zenodo.188169}{\texttt{10.5281/zenodo.188169}}}
						\item Nipype: \textcolor{lg}{\href{http://doi.org/10.5281/zenodo.50186}{\texttt{10.5281/zenodo.50186}}}
					\end{itemize}
169
170
171
				\end{itemize}
			\end{frame}
			\begin{frame}{Sustainability}
Horea Christian's avatar
Horea Christian committed
172
				A sustainable project \textbf{cannot} depend on environments remaining unchanged.
173
				\begin{itemize}
Horea Christian's avatar
Horea Christian committed
174
					\item Ensure long-term viability of your software.
175
					\item Avoid death-by-PhD.
Horea Christian's avatar
Horea Christian committed
176
					\item Give your funders their money's worth.
177
					\item Develop a lean start-up.
Horea Christian's avatar
Horea Christian committed
178
					\item Maintain a reliable and affordable infrastructure for your work.
179
180
181
182
183
				\end{itemize}
			\end{frame}
			\begin{frame}{Why Not?}
				\begin{itemize}
					\item Don't be afraid of your software not being “good/unique enough”!
Horea Christian's avatar
Horea Christian committed
184
					\item Don't wait until your software is “ready”!
185
186
187
188
					\item A lot of research software you are already using is not written by “professional” programmers.
				\end{itemize}
			\end{frame}
	\section{How?}
Horea Christian's avatar
Horea Christian committed
189
190
		\subsection{How do I package my software?}
			\begin{frame}{Choose Appropriate Technologies}
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
				\begin{columns}
					\column{.5\linewidth}
						\begin{figure}
						\centering
							\includegraphics[width=0.6\textwidth]{img/gentoo.png}
							\caption{Gentoo Linux Logo by Gentoo Foundation and Lennart Andre Rolland - CC BY-SA/2.5.}
						\end{figure}
					\column{.5\linewidth}
						\begin{figure}
							\centering
							\includegraphics[width=0.6\textwidth]{img/python.png}
							\caption{Python Logo by Python Software Foundation.}
						\end{figure}
				\end{columns}
			\end{frame}
			\begin{frame}{Python Package Distribution}
				\begin{columns}
Horea Christian's avatar
Horea Christian committed
208
					\column{.55\linewidth}
209
210
					You can package your python software by writing \textbf{one short} file.
						\begin{itemize}
Horea Christian's avatar
Horea Christian committed
211
							\item Python provides its own limited package management, e.g. via \textcolor{lg}{\href{https://packaging.python.org/distributing/}{\texttt{setuptools}}}.
212
							\item Package metadata saved in \texttt{setup.py}, e.g. \textcolor{lg}{\href{https://github.com/IBT-FMI/SAMRI/blob/master/setup.py}{\texttt{SAMRI/setup.py}}}.
213
						\end{itemize}
Horea Christian's avatar
Horea Christian committed
214
215
					\column{.45\linewidth}
						\inputminted[bgcolor=tlg,fontsize=\Tiny,tabsize=4]{python}{samri/setup.py}
216
217
218
219
				\end{columns}
			\end{frame}
			\begin{frame}{Gentoo Packages}
				\begin{columns}
Horea Christian's avatar
Horea Christian committed
220
221
					\column{.55\linewidth}
					A Gentoo package is \textbf{one short} file.
222
						\begin{itemize}
223
224
							\item Regardless of the programming language
							\item Can automatically interpret information contained in the package, e.g. in \textcolor{lg}{\texttt{setup.py}}
225
						\end{itemize}
Horea Christian's avatar
Horea Christian committed
226
227
228
229
230
					\column{.47\linewidth}
						\vspace{-3em}
						\inputminted[bgcolor=tlg,fontsize=\Tiny,tabsize=4,firstline=1,lastline=36]{bash}{samri/samri-0.4.ebuild}
						\vspace{-3.2em}
						\inputminted[bgcolor=tlg,fontsize=\Tiny,tabsize=4,firstline=47,lastline=49]{bash}{samri/samri-0.4.ebuild}
231
232
				\end{columns}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
			\begin{frame}{Reposit Your Software}
				\begin{figure}
				\centering
					\includegraphics[width=0.4\textwidth]{img/git.png}
					\caption{Git Logo by Jason Long (\href{https://creativecommons.org/licenses/by/3.0/}{CC-BY-3.0})}
				\end{figure}
				You can self-host, but hosting also available via social coding platforms:
				\begin{multicols}{3}
					\begin{itemize}
						\item GitLab
						\item GitHub
						\item Bitbucket
					\end{itemize}
				\end{multicols}
			\end{frame}
248
249
250
251
	\section{Demo}
		\subsection{Put what you have learned into practice, and start typing...}
			\begin{frame}{A Few Basic Gentoo Commands}
				\begin{itemize}
252
					\item Check available package names, versions, and details.
Horea Christian's avatar
Horea Christian committed
253
					\vspace{-0.6em}
254
255
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|eix -v nibabel|
					\item See package dependencies.
Horea Christian's avatar
Horea Christian committed
256
257
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|equery g nibabel|
258
					\item See what packages depend on a said package.
Horea Christian's avatar
Horea Christian committed
259
260
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|equery d nibabel|
261
					\item See files installed by package.
Horea Christian's avatar
Horea Christian committed
262
263
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|equery f nibabel|
264
					\item Try to install a new package.
Horea Christian's avatar
Horea Christian committed
265
					\vspace{-0.6em}
266
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|emerge -p psychopy|
267
268
269
270
271
272
273
				\end{itemize}
			\end{frame}
			\begin{frame}{Reproduce a Scientific Article}
				Novel frameworks, such as RepSeP \cite{repsep} permit articles to be written as software.
				\begin{itemize}
					\item Get the source code for brand-new articles:
					\begin{itemize}
274
						\item Work-in-progress (reexecution time \SI{\approx 2}{\minute})
Horea Christian's avatar
Horea Christian committed
275
						\vspace{-0.6em}
276
						\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git clone https://gitlab.com/Chymera/nvcz.git |
277
						\item Preprint (reexecution time \SI{\approx 11}{\minute})
Horea Christian's avatar
Horea Christian committed
278
279
						\vspace{-0.6em}
						\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git clone https://bitbucket.org/TheChymera/irsabi.git |
280
					\end{itemize}
281
					\item Switch to article directory.
Horea Christian's avatar
Horea Christian committed
282
					\vspace{-0.6em}
283
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cd nvcz|
284
					\item Attempt to reexecute.
Horea Christian's avatar
Horea Christian committed
285
					\vspace{-0.6em}
286
287
288
289
290
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|./compile.sh|
					%\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git chechout 28b5d2d1|
				\end{itemize}
			\end{frame}
			\begin{frame}{What happened? Dependency requirements happened.}
Horea Christian's avatar
Horea Christian committed
291
292
293
294
				\begin{center}
					\textcolor{ldorange}{\Large But you can solve the issue yourself!}
				\end{center}
				\vspace{2em}
295
296
297
298
299
300
301
302
303
304
				Write a new package atom for the package manager.
				\begin{itemize}
					\item Gentoo Linux makes this wholly autonomous.
					\item Solve one problem only once:
					\begin{itemize}
						\item Installation will be automatic on all your further systems.
						\item And on everybody else's systems!
					\end{itemize}
				\end{itemize}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
305
			\begin{frame}{Write a Package Atom --- The Overlay}
306
				\begin{itemize}
Horea Christian's avatar
Horea Christian committed
307
308
309
310
311
					\item Fork an overlay on GitHub, e.g. from \textcolor{lg}{\href{https://github.com/TheChymera/overlay}{\texttt{github.com/TheChymera/overlay}}}
					\begin{figure}
						\vspace{-0.1em}
						\includegraphics[width=0.94\textwidth]{img/fork.png}
					\end{figure}
312
					\item Go back to your home directory.
Horea Christian's avatar
Horea Christian committed
313
					\vspace{-0.6em}
314
315
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cd|
					\item Clone your fork of the overlay.
Horea Christian's avatar
Horea Christian committed
316
317
318
319
320
321
322
323
324
325
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git clone https://github.com/YourName/overlay.git|
					\item Make the ebuild directory, and navigate into it.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|mkdir -p overlay/sci-biology/samri && cd $_|%stopzone
				\end{itemize}
			\end{frame}
			\begin{frame}{Transparency means less work for you!}
				You could write the following files from scratch, but you can also reuse analogous files from existing packages.
				\begin{itemize}
326
					\item Copy a metadata file from a Python package.
Horea Christian's avatar
Horea Christian committed
327
					\vspace{-0.6em}
328
329
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cp /usr/portage/dev-python/astropy/metadata.xml .|
					\item Copy an ebuild file from a Python package.
Horea Christian's avatar
Horea Christian committed
330
					\vspace{-0.6em}
331
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cp /usr/portage/dev-python/astropy/*2.0.1.ebuild samri-0.4.ebuild|
Horea Christian's avatar
Horea Christian committed
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
				\end{itemize}
			\end{frame}
			\begin{frame}{Write a Package Atom --- The Metadata File}
				\vspace{-0.9em}
				\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4]{xml}{samri/metadata.xml}
			\end{frame}
			\begin{frame}{Write a Package Atom --- The Ebuild (header excerpt)}
				\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4,firstline=1,lastline=17]{bash}{samri/samri-0.4.ebuild}
			\end{frame}
			\begin{frame}{Write a Package Atom --- The Ebuild (dependency excerpts)}
				\begin{itemize}
					\item Compile-time dependency example:
					\vspace{-0.6em}
					\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4,firstline=18,lastline=25]{bash}{samri/samri-0.4.ebuild}
					\item Run-time dependency DIY (fill out, consulting \textcolor{lg}{\href{https://github.com/IBT-FMI/SAMRI}{\texttt{github.com/IBT-FMI/SAMRI}}}):
					\vspace{-0.6em}
					\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4,firstline=26,lastline=29]{bash}{samri/samri-0.4.ebuild}
					\vspace{-3em}
					\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4,firstline=47,lastline=47]{bash}{samri/samri-0.4.ebuild}
				\end{itemize}
			\end{frame}
			\begin{frame}{Write a Package Atom --- Finishing Touches}
				\begin{itemize}
355
					\item Not all packages are perfect. Append the following to the ebuild:
Horea Christian's avatar
Horea Christian committed
356
357
					\vspace{-0.6em}
					\inputminted[bgcolor=tlg,fontsize=\scriptsize,tabsize=4,firstline=49,lastline=49]{bash}{samri/samri-0.4.ebuild}
358
					\item Check your work. Minor formatting differences (e.g. indents) are not critical.
Horea Christian's avatar
Horea Christian committed
359
360
361
362
363
364
365
366
367
368
369
370
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|wget https://thealternative.ch/ssm/samri/samri-0.4.ebuild -P ~|
					\vspace{-3.1em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|colordiff ~/samri-0.4.ebuild samri-0.4.ebuild|
					\vspace{-3.1em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|wget https://thealternative.ch/ssm/samri/metadata.xml -P ~|
					\vspace{-3.1em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|colordiff ~/metadata.xml metadata.xml|
				\end{itemize}
			\end{frame}
			\begin{frame}{Social Coding --- Upload Your Package for Reuse}
				\begin{itemize}
371
372
373
374
					\item Download the data and make git aware of your files.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|ebuild samri-0.4.ebuild manifest && git add .|
					\item Run a quality check.
Horea Christian's avatar
Horea Christian committed
375
376
377
378
379
380
381
382
383
384
385
386
387
388
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|repoman full|
					\item Record and publish your work in version control.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|git commit -a && git push origin master|
					\item Include your work in widely used overlay: visit \textcolor{lg}{\href{https://github.com/YourName/overlay}{\texttt{github.com/YourName/overlay}}}.
					\begin{figure}
						\vspace{-0.1em}
						\includegraphics[width=0.94\textwidth]{img/pr.png}
					\end{figure}
				\end{itemize}
			\end{frame}
			\begin{frame}{Use Your Work}
				\begin{itemize}
389
					\item Update the package index (as superuser).
Horea Christian's avatar
Horea Christian committed
390
391
392
393
394
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|eix-sync|
					\item Try out the install command yourself.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|emerge -pv samri|
395
					\item Install (as superuser).
Horea Christian's avatar
Horea Christian committed
396
397
398
399
400
401
402
403
404
405
406
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|emerge -v samri|
				\end{itemize}
			\end{frame}
			\begin{frame}{The Article Environment is Now Reproducible}
				\begin{itemize}
					\item Navigate back to the article directory.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cd ~/nvcz|
					\item Compile.
					\vspace{-0.6em}
407
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|./compile.sh|
Horea Christian's avatar
Horea Christian committed
408
409
410
411
					\item Log out from SSH: \keys{Ctrl + d}
					\item Get the document locally.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|scp YOURUSER@130.60.24.66:nvcz/article.pdf .|
412
413
				\end{itemize}
			\end{frame}
Horea Christian's avatar
Horea Christian committed
414
415
416
417
418
419
420
421
422
423
			\begin{frame}{And the Article is now Automated}
				\begin{itemize}
					\item Log back in and navigate to article directory.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|ssh YOURUSER@130.60.24.66|
					\vspace{-3.1em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|cd nvcz|
					\item Automatically adjust the t-statistic threshold for the entire document.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}:grep -rlI 3\.5 | xargs sed -i -e "s/3.5/3.0/g":
424
					\item Clean up trace files and visualize what you have changed.
Horea Christian's avatar
Horea Christian committed
425
					\vspace{-0.6em}
426
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|./cleanup.sh && git diff|
Horea Christian's avatar
Horea Christian committed
427
428
429
430
431
					\item Compile, log out.
					\item Get the document locally.
					\vspace{-0.6em}
					\mint[bgcolor=tlg,fontsize=\footnotesize]{bash}|scp YOURUSER@130.60.24.66:nvcz/article.pdf newarticle.pdf|
				\end{itemize}
432
			\end{frame}
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
			\begin{frame}{Results}
				You have:
				\begin{itemize}
					\item Packaged a new piece of scientific software, now automatically installable:
					\begin{itemize}
						\item By anybody else
						\item By you on any machine
					\end{itemize}
					\item Updated data analysis visualizations in a reproducible article.
					\begin{itemize}
						\item It's that easy to contribute to well-organized research!
					\end{itemize}
				\end{itemize}
				\vspace{-.5em}
				\begin{columns}
					\column{.5\linewidth}
						\begin{figure}
						\centering
							\includegraphics[width=0.52\textwidth]{img/fig_old.png}
						\end{figure}
					\column{.5\linewidth}
						\begin{figure}
							\centering
							\includegraphics[width=0.52\textwidth]{img/fig_new.png}
						\end{figure}
				\end{columns}
			\end{frame}
460
461
462
463
464
465
466
467
468
469
470
471


	\section{Meta}
		\subsection{About this presentation}
			\begin{frame}{What now?}
				\begin{itemize}
					\item Q\&A round\\
					\textcolor{lg}{in a few seconds}
					\item Get help packaging your own Free and Open Source Scientific Software\\
					\textcolor{lg}{in a few minutes}
					\item Get help with running your own Gentoo Linux data analysis server\\
					\textcolor{lg}{in a few hours}
Horea Christian's avatar
Horea Christian committed
472
					\item Spread package management in your field\\
473
474
475
476
477
					\textcolor{lg}{tomorrow at work}
				\end{itemize}
			\end{frame}
			\begin{frame}{These Slides}
				\begin{itemize}
Horea Christian's avatar
Horea Christian committed
478
					\item \textcolor{lg}{Latest Slides:}\\
Horea Christian's avatar
Horea Christian committed
479
					\texttt{\href{https://thealternative.ch/ssm/slides.pdf}{thealternative.ch/ssm/slides.pdf}}
Horea Christian's avatar
Horea Christian committed
480
481
					\item \textcolor{lg}{Source:}\\
					\texttt{\href{https://gitlab.ethz.ch/thealternative/courses/tree/master/scientific_software_management}{\footnotesize gitlab.ethz.ch/thealternative/courses/tree/master/scientific\_software\_management}}
482
483
484
485
486
487
488
489
490
491
492
				\end{itemize}
				%separate sources from info so it looks nicer
				\begin{itemize}
					\item \textcolor{lg}{License:} \href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA 3.0}
				\end{itemize}
			\end{frame}
			\begin{frame}{References}
				\bibliographystyle{abbrv}
				\bibliography{./bib}
			\end{frame}
\end{document}