first commit presentation

This commit is contained in:
Mariano Bernaldo 2019-11-12 10:54:57 +01:00
parent 574b0a13d5
commit 21f87beb24
18 changed files with 777 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/node_modules
/img/not_used

Binary file not shown.

8
asciidoctor-revealjs.js Normal file
View File

@ -0,0 +1,8 @@
// Load asciidoctor.js and asciidoctor-reveal.js
var asciidoctor = require('asciidoctor.js')();
var asciidoctorRevealjs = require('asciidoctor-reveal.js');
asciidoctorRevealjs.register()
// Convert the document 'presentation.adoc' using the reveal.js converter
var options = {safe: 'safe', backend: 'revealjs'};
asciidoctor.convertFile('presentation.adoc', options);

28
custom_css.css Normal file
View File

@ -0,0 +1,28 @@
.reveal h1 {
color: #133481 !important;
}
.reveal h2 {
/* position: absolute !important; */
position: fixed !important;
top: 0 !important;
left: 0 !important;
/* margin-left: auto !important;
margin-right: auto !important; */
/* right: 0 !important;
align-items: left !important;
text-align: left !important; */
color: #133481 !important;
}
.reveal ul {
color: #ff7c00 !important;
}
.reveal ol {
color: #ff7c00 !important;
}

BIN
img/architecture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
img/git_workflow.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
img/intro.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

BIN
img/lyxlilipond.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
img/nocloud.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
img/normal.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
img/nvbqz.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
img/xkcd_git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

115
package-lock.json generated Normal file
View File

@ -0,0 +1,115 @@
{
"name": "presentacion_nov_2019",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"asciidoctor-reveal.js": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/asciidoctor-reveal.js/-/asciidoctor-reveal.js-2.0.0.tgz",
"integrity": "sha512-REnlW62qj6NPheOl8EwLwJZWpArUWOfAhDZv+lf9wX2MXUC/n9LN081buerQtByYAMG2ZiuY9ealPZqKTCIsvQ==",
"requires": {
"asciidoctor.js": "1.5.9",
"reveal.js": "3.7.0"
}
},
"asciidoctor.js": {
"version": "1.5.9",
"resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz",
"integrity": "sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA==",
"requires": {
"opal-runtime": "1.0.11"
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"glob": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"opal-runtime": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.11.tgz",
"integrity": "sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA==",
"requires": {
"glob": "6.0.4",
"xmlhttprequest": "1.8.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"reveal.js": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-3.7.0.tgz",
"integrity": "sha512-HTOTNhF5mQAw6fcsptk4oql/DEEUwTG0YHk/LzTNNx0/3IgvOQZqKzvlK/zNpqqKMLlhn1gH9Nvp+FFoc/e5/w=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
}
}
}

14
package.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "presentacion_nov_2019",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"asciidoctor-reveal.js": "^2.0.0"
}
}

376
presentation.adoc Normal file
View File

@ -0,0 +1,376 @@
= Document Version Control with GIT
:customcss: custom_css.css
:imagesdir: img
:title-slide-background-image: intro.jpg
:background-image: normal.jpg
:revealjs_theme: white
:revealjs_margin: 0.1
:revealjs_width: 1920
:revealjs_height: 1200
== Before we start...
image::nocloud.jpg[scaledwith=60%]
== What is version control?
[%step]
* Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
* Has existed for almost as long as writing has existed (ex. document version)
* Today, the most capable (as well as complex) revision control systems are those used in software development.
=== Why?
[%step]
* Revert files back to a previous state
* "Freeze" important versions of a document
* Compare changes over time
* Track progress of a project
* See who modified something, and when
=== Modern version control systems
[%step]
* Remote backup of files
* Powerful tool for collaboration
== GIT
[%step]
* Developed by Linus Torvalds in 2005
* The linux Kernel:
** ~63000 files
** Roughly 15,600 developers from more than 1,400 companies
=== Characteristics
[%step]
* Free and open source
* Distributed
* Powerful and flexible
* Learning curve can be steep
=== !
image:xkcd_git.png[]
=== How does it work?
image::architecture.png[]
=== Installation
https://git-scm.com/download/win
Package managers are heavily recommended!
=== Creating a remote repository
[%step]
* register at the remote git server
** https://git.webhosting.rug.nl/
* create repository
* add participants __ssh public keys__
* clone the repository in your machine
=== README and .gitignore
Every repository should have these 2 files:
* **README**: project description and useful information
* **.gitignore**: special file indicating GIT which files are **not** to be tracked
=== workflow
image::git_workflow.jpg[]
=== copying remote repository: clone
* **git clone __repository__**
* Clones the remote repository into the local one
=== staging changes (local)
[%step]
* **git add __files__**
* Adds the changes into the local staging area
=== Saving changes: commit (local)
[%step]
* **git commit "message"**
* Saves the changes in the staging area into the repository
* Creates a "snapshot" of the current state of one or more files
* A message describing the changes must be provided
=== history and revert (local)
[%step]
* **git log __files__**
* returns a history of the file modifications
* **git revert __commit__**
* removes one or more commits from the local files, changes must be committed after
=== upload to remote repository: push
[%step]
* **git push**
* Uploads the state of the local repository to the remote one
=== Download from remote repository: pull
[%step]
* **git pull**
* Fetch and merges the documents in the remote repository into the local one
* Merging files can generate conflicts, git will ask us to fix them and commit the changes
=== Branching
image::version-control-flow.png[]
=== other (advanced) stuff
* tags
* partial reverts
* change history
* ...
== Docs as code
[%step]
* Software is a small part of the documents a project must handle
* Still, version control and remote collaboration are needed for all the documents
* In the last years there is a big push of treating documents the same way as programming files
** https://www.writethedocs.org/guide/docs-as-code/
=== Advantages
[%step]
* Working in plain text files (rather than binary file formats like Word)
* Collaborating using version control such as git and GitHub
* Storing docs in the same repositories as the programming code itself
* Versioning docs through git tags/releases (rather than duplicating all the files to archive each release)
* Generate other formats or websites without modifying the document
=== Just a little problem...
[%step]
* The most common document formats: word, pdf... are binary files
* git (text based) doesn't work with them
=== Solutions?
[%step]
* Markup languages:
* Markup languages are ways of annotating an electronic document.
* Usually markup will either specify how something should be displayed or what something means.
** html, xml, latex...
=== Markup languages
[%step]
* Documents are written in plain text, then a program convert them into the final document
* The same document can be used to generate files in other formats: latex, word, pdf or even slides
* Formating is done by the computer, output is always consistent
* Fast and light
* Can be used in version control systems
=== Markup languages: Advanced features
[%step]
* Automatic generation of documents
* Inline comments (not rendered in the final document)
* Split one the document into several. Ex: main document, chapters and bibliography
* Code executed and plots rendered __in__ the document
=== Latex
[%step]
* Extensively used for technical papers
* Beautiful generated documents
* Very powerful...
* ...and very heavy
* Setup and document customization are complex
=== Latex: example
----
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\title{Introduction to \LaTeX{}}
\author{Author's Name}
\maketitle
\begin{abstract}
The abstract text goes here.
\end{abstract}
\section{Introduction}
Here is the text of your introduction.
\begin{equation}
\label{simple_equation}
\alpha = \sqrt{ \beta }
\end{equation}
\subsection{Subsection Heading Here}
Write your subsection text here.
\begin{figure}
\centering
\includegraphics[width=3.0in]{myfigure}
\caption{Simulation Results}
\label{simulationfigure}
\end{figure}
\section{Conclusion}
Write your conclusion here.
\end{document}
----
=== Latex: example II
----
\documentclass[12pt]{article}
\usepackage{lingmacros}
\usepackage{tree-dvips}
\begin{document}
\section*{Notes for My Paper}
Don't forget to include examples of topicalization.
They look like this:
{\small
\enumsentence{Topicalization from sentential subject:\\
\shortex{7}{a John$_i$ [a & kltukl & [el &
{\bf l-}oltoir & er & ngii$_i$ & a Mary]]}
{ & {\bf R-}clear & {\sc comp} &
{\bf IR}.{\sc 3s}-love & P & him & }
{John, (it's) clear that Mary loves (him).}}
}
\subsection*{How to handle topicalization}
I'll just assume a tree structure like (\ex{1}).
{\small
\enumsentence{Structure of A$'$ Projections:\\ [2ex]
\begin{tabular}[t]{cccc}
& \node{i}{CP}\\ [2ex]
\node{ii}{Spec} & &\node{iii}{C$'$}\\ [2ex]
&\node{iv}{C} & & \node{v}{SAgrP}
\end{tabular}
\nodeconnect{i}{ii}
\nodeconnect{i}{iii}
\nodeconnect{iii}{iv}
\nodeconnect{iii}{v}
}
}
\subsection*{Mood}
Mood changes when there is a topic, as well as when
there is WH-movement. \emph{Irrealis} is the mood when
there is a non-subject topic or WH-phrase in Comp.
\emph{Realis} is the mood when there is a subject topic
or WH-phrase.
\end{document}
----
=== Latex alternative: Lyx
[%step]
* WYSIWYG latex editor
* Documents are generated in .lyx, a subset of latex
* Can be used together with version control
* Provides, by default, templates for many of the biggest scientific journals
=== Lyx: example
image::nvbqz.png[]
=== Lyx: example II
image::lyxlilipond.png[]
=== Lightweight Markup languages
[%step]
* Also called Plain Text Markup or humane markup language
* Provide a way of formating the document, while still being readable
* Widely used on websites and code documentation
=== LML: current options
* Markdown
* reStructuredText (rst)
* Asciidoc
=== Markdown
[%step]
* Created for minimal formating of web text
* used **__everywhere__**: web, jupyter notebooks, r-markdown...
* There is no standard, currently exist many flavours of it (github, commonmark, pandoc)
* Originally not intended for documents, very limited
* Different flavors and tools try to overcome this limitation
** (+ pandoc)
=== Markdown: example
image::quicktourexample_small.png[]
=== Asciidoc
[%step]
* Developed for book creation.
* Limited number of users
* Standardized and extensible, great documentation
* Lack of resources makes that bugs or request take time to be fixed
=== reStructuredText
[%step]
* Originally intended for python documentation
* medium sized but very tech-savvy community
* Syntax is a little different than the other two
* Very powerful and extensible
=== Which one to use?
* Notetaking:
** Markdown
** Asciidoc
** reStructuredText
* Anything more serious:
** reStructuredText
** Latex/Lyx
== Resources
https://chocolatey.org
----
choco install git vscode pandoc
----
== Questions?

234
presentation.html Normal file
View File

@ -0,0 +1,234 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Document Version Control with GIT</title><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"><link href="node_modules/reveal.js/css/reveal.css" rel="stylesheet"><link rel="stylesheet" href="node_modules/reveal.js/css/theme/white.css" id="theme"><!--This CSS is generated by the Asciidoctor-Reveal.js converter to further integrate AsciiDoc's existing semantic with Reveal.js--><style type="text/css">.reveal div.right {
float: right;
}
/* callouts */
.conum[data-value] {display:inline-block;color:#fff!important;background-color:rgba(50,150,50,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]:after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}</style><link href="node_modules/reveal.js/lib/css/zenburn.css" rel="stylesheet"><script>var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? "node_modules/reveal.js/css/print/pdf.css" : "node_modules/reveal.js/css/print/paper.css";
document.getElementsByTagName( 'head' )[0].appendChild( link );</script><!--[if lt IE 9]><script src="node_modules/reveal.js/lib/js/html5shiv.js"></script><![endif]--><link rel="stylesheet" href="custom_css.css"></head><body><div class="reveal"><div class="slides"><section class="title" data-state="title" data-background-image="img/intro.jpg"><h1>Document Version Control with GIT</h1></section><section id="_before_we_start" data-background-image="img/normal.jpg"><h2>Before we start&#8230;&#8203;</h2><div class="imageblock" style=""><img src="img/nocloud.jpg" alt="nocloud"></div></section>
<section><section id="_what_is_version_control" data-background-image="img/normal.jpg"><h2>What is version control?</h2><div class="ulist"><ul><li class="fragment"><p>Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.</p></li><li class="fragment"><p>Has existed for almost as long as writing has existed (ex. document version)</p></li><li class="fragment"><p>Today, the most capable (as well as complex) revision control systems are those used in software development.</p></li></ul></div></section><section id="_why" data-background-image="img/normal.jpg"><h2>Why?</h2><div class="ulist"><ul><li class="fragment"><p>Revert files back to a previous state</p></li><li class="fragment"><p>"Freeze" important versions of a document</p></li><li class="fragment"><p>Compare changes over time</p></li><li class="fragment"><p>Track progress of a project</p></li><li class="fragment"><p>See who modified something, and when</p></li></ul></div></section><section id="_modern_version_control_systems" data-background-image="img/normal.jpg"><h2>Modern version control systems</h2><div class="ulist"><ul><li class="fragment"><p>Remote backup of files</p></li><li class="fragment"><p>Powerful tool for collaboration</p></li></ul></div></section></section>
<section><section id="_git" data-background-image="img/normal.jpg"><h2>GIT</h2><div class="ulist"><ul><li class="fragment"><p>Developed by Linus Torvalds in 2005</p></li><li class="fragment"><p>The linux Kernel:</p><div class="ulist"><ul><li><p>~63000 files</p></li><li><p>Roughly 15,600 developers from more than 1,400 companies</p></li></ul></div></li></ul></div></section><section id="_characteristics" data-background-image="img/normal.jpg"><h2>Characteristics</h2><div class="ulist"><ul><li class="fragment"><p>Free and open source</p></li><li class="fragment"><p>Distributed</p></li><li class="fragment"><p>Powerful and flexible</p></li><li class="fragment"><p>Learning curve can be steep</p></li></ul></div></section><section data-background-image="img/normal.jpg"><div class="paragraph"><p><span class="image"><img src="img/xkcd_git.png" alt="xkcd git"></span></p></div></section><section id="_how_does_it_work" data-background-image="img/normal.jpg"><h2>How does it work?</h2><div class="imageblock" style=""><img src="img/architecture.png" alt="architecture"></div></section><section id="_installation" data-background-image="img/normal.jpg"><h2>Installation</h2><div class="paragraph"><p><a href="https://git-scm.com/download/win" class="bare">https://git-scm.com/download/win</a></p></div>
<div class="paragraph"><p>Package managers are heavily recommended!</p></div></section><section id="_creating_a_remote_repository" data-background-image="img/normal.jpg"><h2>Creating a remote repository</h2><div class="ulist"><ul><li class="fragment"><p>register at the remote git server</p><div class="ulist"><ul><li><p><a href="https://git.webhosting.rug.nl/" class="bare">https://git.webhosting.rug.nl/</a></p></li></ul></div></li><li class="fragment"><p>create repository</p></li><li class="fragment"><p>add participants <em>ssh public keys</em></p></li><li class="fragment"><p>clone the repository in your machine</p></li></ul></div></section><section id="_readme_and_gitignore" data-background-image="img/normal.jpg"><h2>README and .gitignore</h2><div class="paragraph"><p>Every repository should have these 2 files:</p></div>
<div class="ulist"><ul><li><p><strong>README</strong>: project description and useful information</p></li><li><p><strong>.gitignore</strong>: special file indicating GIT which files are <strong>not</strong> to be tracked</p></li></ul></div></section><section id="_workflow" data-background-image="img/normal.jpg"><h2>workflow</h2><div class="imageblock" style=""><img src="img/git_workflow.jpg" alt="git workflow"></div></section><section id="_copying_remote_repository_clone" data-background-image="img/normal.jpg"><h2>copying remote repository: clone</h2><div class="ulist"><ul><li><p><strong>git clone <em>repository</em></strong></p></li><li><p>Clones the remote repository into the local one</p></li></ul></div></section><section id="_staging_changes_local" data-background-image="img/normal.jpg"><h2>staging changes (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git add <em>files</em></strong></p></li><li class="fragment"><p>Adds the changes into the local staging area</p></li></ul></div></section><section id="_saving_changes_commit_local" data-background-image="img/normal.jpg"><h2>Saving changes: commit (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git commit "message"</strong></p></li><li class="fragment"><p>Saves the changes in the staging area into the repository</p></li><li class="fragment"><p>Creates a "snapshot" of the current state of one or more files</p></li><li class="fragment"><p>A message describing the changes must be provided</p></li></ul></div></section><section id="_history_and_revert_local" data-background-image="img/normal.jpg"><h2>history and revert (local)</h2><div class="ulist"><ul><li class="fragment"><p><strong>git log <em>files</em></strong></p></li><li class="fragment"><p>returns a history of the file modifications</p></li><li class="fragment"><p><strong>git revert <em>commit</em></strong></p></li><li class="fragment"><p>removes one or more commits from the local files, changes must be committed after</p></li></ul></div></section><section id="_upload_to_remote_repository_push" data-background-image="img/normal.jpg"><h2>upload to remote repository: push</h2><div class="ulist"><ul><li class="fragment"><p><strong>git push</strong></p></li><li class="fragment"><p>Uploads the state of the local repository to the remote one</p></li></ul></div></section><section id="_download_from_remote_repository_pull" data-background-image="img/normal.jpg"><h2>Download from remote repository: pull</h2><div class="ulist"><ul><li class="fragment"><p><strong>git pull</strong></p></li><li class="fragment"><p>Fetch and merges the documents in the remote repository into the local one</p></li><li class="fragment"><p>Merging files can generate conflicts, git will ask us to fix them and commit the changes</p></li></ul></div></section><section id="_branching" data-background-image="img/normal.jpg"><h2>Branching</h2><div class="imageblock" style=""><img src="img/version-control-flow.png" alt="version control flow"></div></section><section id="_other_advanced_stuff" data-background-image="img/normal.jpg"><h2>other (advanced) stuff</h2><div class="ulist"><ul><li><p>tags</p></li><li><p>partial reverts</p></li><li><p>change history</p></li><li><p>&#8230;&#8203;</p></li></ul></div></section></section>
<section><section id="_docs_as_code" data-background-image="img/normal.jpg"><h2>Docs as code</h2><div class="ulist"><ul><li class="fragment"><p>Software is a small part of the documents a project must handle</p></li><li class="fragment"><p>Still, version control and remote collaboration are needed for all the documents</p></li><li class="fragment"><p>In the last years there is a big push of treating documents the same way as programming files</p><div class="ulist"><ul><li><p><a href="https://www.writethedocs.org/guide/docs-as-code/" class="bare">https://www.writethedocs.org/guide/docs-as-code/</a></p></li></ul></div></li></ul></div></section><section id="_advantages" data-background-image="img/normal.jpg"><h2>Advantages</h2><div class="ulist"><ul><li class="fragment"><p>Working in plain text files (rather than binary file formats like Word)</p></li><li class="fragment"><p>Collaborating using version control such as git and GitHub</p></li><li class="fragment"><p>Storing docs in the same repositories as the programming code itself</p></li><li class="fragment"><p>Versioning docs through git tags/releases (rather than duplicating all the files to archive each release)</p></li><li class="fragment"><p>Generate other formats or websites without modifying the document</p></li></ul></div></section><section id="_just_a_little_problem" data-background-image="img/normal.jpg"><h2>Just a little problem&#8230;&#8203;</h2><div class="ulist"><ul><li class="fragment"><p>The most common document formats: word, pdf&#8230;&#8203; are binary files</p></li><li class="fragment"><p>git (text based) doesn&#8217;t work with them</p></li></ul></div></section><section id="_solutions" data-background-image="img/normal.jpg"><h2>Solutions?</h2><div class="ulist"><ul><li class="fragment"><p>Markup languages:</p></li><li class="fragment"><p>Markup languages are ways of annotating an electronic document.</p></li><li class="fragment"><p>Usually markup will either specify how something should be displayed or what something means.</p><div class="ulist"><ul><li><p>html, xml, latex&#8230;&#8203;</p></li></ul></div></li></ul></div></section><section id="_markup_languages" data-background-image="img/normal.jpg"><h2>Markup languages</h2><div class="ulist"><ul><li class="fragment"><p>Documents are written in plain text, then a program convert them into the final document</p></li><li class="fragment"><p>The same document can be used to generate files in other formats: latex, word, pdf or even slides</p></li><li class="fragment"><p>Formating is done by the computer, output is always consistent</p></li><li class="fragment"><p>Fast and light</p></li><li class="fragment"><p>Can be used in version control systems</p></li></ul></div></section><section id="_markup_languages_advanced_features" data-background-image="img/normal.jpg"><h2>Markup languages: Advanced features</h2><div class="ulist"><ul><li class="fragment"><p>Automatic generation of documents</p></li><li class="fragment"><p>Inline comments (not rendered in the final document)</p></li><li class="fragment"><p>Split one the document into several. Ex: main document, chapters and bibliography</p></li><li class="fragment"><p>Code executed and plots rendered <em>in</em> the document</p></li></ul></div></section><section id="_latex" data-background-image="img/normal.jpg"><h2>Latex</h2><div class="ulist"><ul><li class="fragment"><p>Extensively used for technical papers</p></li><li class="fragment"><p>Beautiful generated documents</p></li><li class="fragment"><p>Very powerful&#8230;&#8203;</p></li><li class="fragment"><p>&#8230;&#8203;and very heavy</p></li><li class="fragment"><p>Setup and document customization are complex</p></li></ul></div></section><section id="_latex_example" data-background-image="img/normal.jpg"><h2>Latex: example</h2><pre class="highlight listingblock"><code>\documentclass{article}
\usepackage{graphicx}
\begin{document}
\title{Introduction to \LaTeX{}}
\author{Author's Name}
\maketitle
\begin{abstract}
The abstract text goes here.
\end{abstract}
\section{Introduction}
Here is the text of your introduction.
\begin{equation}
\label{simple_equation}
\alpha = \sqrt{ \beta }
\end{equation}
\subsection{Subsection Heading Here}
Write your subsection text here.
\begin{figure}
\centering
\includegraphics[width=3.0in]{myfigure}
\caption{Simulation Results}
\label{simulationfigure}
\end{figure}
\section{Conclusion}
Write your conclusion here.
\end{document}</code></pre></section><section id="_latex_example_ii" data-background-image="img/normal.jpg"><h2>Latex: example II</h2><pre class="highlight listingblock"><code>\documentclass[12pt]{article}
\usepackage{lingmacros}
\usepackage{tree-dvips}
\begin{document}
\section*{Notes for My Paper}
Don't forget to include examples of topicalization.
They look like this:
{\small
\enumsentence{Topicalization from sentential subject:\\
\shortex{7}{a John$_i$ [a &amp; kltukl &amp; [el &amp;
{\bf l-}oltoir &amp; er &amp; ngii$_i$ &amp; a Mary]]}
{ &amp; {\bf R-}clear &amp; {\sc comp} &amp;
{\bf IR}.{\sc 3s}-love &amp; P &amp; him &amp; }
{John, (it's) clear that Mary loves (him).}}
}
\subsection*{How to handle topicalization}
I'll just assume a tree structure like (\ex{1}).
{\small
\enumsentence{Structure of A$'$ Projections:\\ [2ex]
\begin{tabular}[t]{cccc}
&amp; \node{i}{CP}\\ [2ex]
\node{ii}{Spec} &amp; &amp;\node{iii}{C$'$}\\ [2ex]
&amp;\node{iv}{C} &amp; &amp; \node{v}{SAgrP}
\end{tabular}
\nodeconnect{i}{ii}
\nodeconnect{i}{iii}
\nodeconnect{iii}{iv}
\nodeconnect{iii}{v}
}
}
\subsection*{Mood}
Mood changes when there is a topic, as well as when
there is WH-movement. \emph{Irrealis} is the mood when
there is a non-subject topic or WH-phrase in Comp.
\emph{Realis} is the mood when there is a subject topic
or WH-phrase.
\end{document}</code></pre></section><section id="_latex_alternative_lyx" data-background-image="img/normal.jpg"><h2>Latex alternative: Lyx</h2><div class="ulist"><ul><li class="fragment"><p>WYSIWYG latex editor</p></li><li class="fragment"><p>Documents are generated in .lyx, a subset of latex</p></li><li class="fragment"><p>Can be used together with version control</p></li><li class="fragment"><p>Provides, by default, templates for many of the biggest scientific journals</p></li></ul></div></section><section id="_lyx_example" data-background-image="img/normal.jpg"><h2>Lyx: example</h2><div class="imageblock" style=""><img src="img/nvbqz.png" alt="nvbqz"></div></section><section id="_lyx_example_ii" data-background-image="img/normal.jpg"><h2>Lyx: example II</h2><div class="imageblock" style=""><img src="img/lyxlilipond.png" alt="lyxlilipond"></div></section><section id="_lightweight_markup_languages" data-background-image="img/normal.jpg"><h2>Lightweight Markup languages</h2><div class="ulist"><ul><li class="fragment"><p>Also called Plain Text Markup or humane markup language</p></li><li class="fragment"><p>Provide a way of formating the document, while still being readable</p></li><li class="fragment"><p>Widely used on websites and code documentation</p></li></ul></div></section><section id="_lml_current_options" data-background-image="img/normal.jpg"><h2>LML: current options</h2><div class="ulist"><ul><li><p>Markdown</p></li><li><p>reStructuredText (rst)</p></li><li><p>Asciidoc</p></li></ul></div></section><section id="_markdown" data-background-image="img/normal.jpg"><h2>Markdown</h2><div class="ulist"><ul><li class="fragment"><p>Created for minimal formating of web text</p></li><li class="fragment"><p>used <strong><em>everywhere</em></strong>: web, jupyter notebooks, r-markdown&#8230;&#8203;</p></li><li class="fragment"><p>There is no standard, currently exist many flavours of it (github, commonmark, pandoc)</p></li><li class="fragment"><p>Originally not intended for documents, very limited</p></li><li class="fragment"><p>Different flavors and tools try to overcome this limitation</p><div class="ulist"><ul><li><p>(+ pandoc)</p></li></ul></div></li></ul></div></section><section id="_markdown_example" data-background-image="img/normal.jpg"><h2>Markdown: example</h2><div class="imageblock" style=""><img src="img/quicktourexample_small.png" alt="quicktourexample small"></div></section><section id="_asciidoc" data-background-image="img/normal.jpg"><h2>Asciidoc</h2><div class="ulist"><ul><li class="fragment"><p>Developed for book creation.</p></li><li class="fragment"><p>Limited number of users</p></li><li class="fragment"><p>Standardized and extensible, great documentation</p></li><li class="fragment"><p>Lack of resources makes that bugs or request take time to be fixed</p></li></ul></div></section><section id="_restructuredtext" data-background-image="img/normal.jpg"><h2>reStructuredText</h2><div class="ulist"><ul><li class="fragment"><p>Originally intended for python documentation</p></li><li class="fragment"><p>medium sized but very tech-savvy community</p></li><li class="fragment"><p>Syntax is a little different than the other two</p></li><li class="fragment"><p>Very powerful and extensible</p></li></ul></div></section><section id="_which_one_to_use" data-background-image="img/normal.jpg"><h2>Which one to use?</h2><div class="ulist"><ul><li><p>Notetaking:</p><div class="ulist"><ul><li><p>Markdown</p></li><li><p>Asciidoc</p></li><li><p>reStructuredText</p></li></ul></div></li><li><p>Anything more serious:</p><div class="ulist"><ul><li><p>reStructuredText</p></li><li><p>Latex/Lyx</p></li></ul></div></li></ul></div></section></section>
<section id="_resources" data-background-image="img/normal.jpg"><h2>Resources</h2><div class="paragraph"><p><a href="https://chocolatey.org" class="bare">https://chocolatey.org</a></p></div>
<pre class="highlight listingblock"><code>choco install git vscode pandoc</code></pre></section>
<section id="_questions" data-background-image="img/normal.jpg"><h2>Questions?</h2></section></div></div><script src="node_modules/reveal.js/lib/js/head.min.js"></script><script src="node_modules/reveal.js/js/reveal.js"></script><script>Array.prototype.slice.call(document.querySelectorAll('.slides section')).forEach(function(slide) {
if (slide.getAttribute('data-background-color')) return;
// user needs to explicitly say he wants CSS color to override otherwise we might break custom css or theme (#226)
if (!(slide.classList.contains('canvas') || slide.classList.contains('background'))) return;
var bgColor = getComputedStyle(slide).backgroundColor;
if (bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') {
slide.setAttribute('data-background-color', bgColor);
slide.style.backgroundColor = 'transparent';
}
})
// See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options
Reveal.initialize({
// Display presentation control arrows
controls: true,
// Help the user learn the controls by providing hints, for example by
// bouncing the down arrow when they first encounter a vertical slide
controlsTutorial: true,
// Determines where controls appear, "edges" or "bottom-right"
controlsLayout: 'bottom-right',
// Visibility rule for backwards navigation arrows; "faded", "hidden"
// or "visible"
controlsBackArrows: 'faded',
// Display a presentation progress bar
progress: true,
// Display the page number of the current slide
slideNumber: false,
// Control which views the slide number displays on
showSlideNumber: 'all',
// Push each slide change to the browser history
history: false,
// Enable keyboard shortcuts for navigation
keyboard: true,
// Enable the slide overview mode
overview: true,
// Vertical centering of slides
center: true,
// Enables touch navigation on devices with touch input
touch: true,
// Loop the presentation
loop: false,
// Change the presentation direction to be RTL
rtl: false,
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if speaker notes should be visible to all viewers
showNotes: false,
// Global override for autolaying embedded media (video/audio/iframe)
// - null: Media will only autoplay if data-autoplay is present
// - true: All media will autoplay, regardless of individual setting
// - false: No media will autoplay, regardless of individual setting
autoPlayMedia: null,
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
autoSlide: 0,
// Stop auto-sliding after user input
autoSlideStoppable: true,
// Use this method for navigation when auto-sliding
autoSlideMethod: Reveal.navigateNext,
// Specify the average time in seconds that you think you will spend
// presenting each slide. This is used to show a pacing timer in the
// speaker view
defaultTiming: 120,
// Enable slide navigation via mouse wheel
mouseWheel: false,
// Hides the address bar on mobile devices
hideAddressBar: true,
// Opens links in an iframe preview overlay
// Add `data-preview-link` and `data-preview-link="false"` to customise each link
// individually
previewLinks: false,
// Transition style (e.g., none, fade, slide, convex, concave, zoom)
transition: 'slide',
// Transition speed (e.g., default, fast, slow)
transitionSpeed: 'default',
// Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom)
backgroundTransition: 'fade',
// Number of slides away from the current that are visible
viewDistance: 3,
// Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'")
parallaxBackgroundImage: '',
// Parallax background size in CSS syntax (e.g., "2100px 900px")
parallaxBackgroundSize: '',
// Number of pixels to move the parallax background per slide
// - Calculated automatically unless specified
// - Set to 0 to disable movement along an axis
parallaxBackgroundHorizontal: null,
parallaxBackgroundVertical: null,
// The display mode that will be used to show slides
display: 'block',
// The "normal" size of the presentation, aspect ratio will be preserved
// when the presentation is scaled to fit different resolutions. Can be
// specified using percentage units.
width: 1600,
height: 900,
// Factor of the display size that should remain empty around the content
margin: 0.1,
// Bounds for smallest/largest possible scale to apply to content
minScale: 0.2,
maxScale: 1.5,
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'node_modules/reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'node_modules/reveal.js/plugin/zoom-js/zoom.js', async: true },
{ src: 'node_modules/reveal.js/plugin/notes/notes.js', async: true },
],
});</script></body></html>