diff --git a/.gitignore b/.gitignore
index 699b388..9fdeaed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,303 @@ hugo.linux
docs/
*.webp
*.avif
+
+# Created by https://www.toptal.com/developers/gitignore/api/latex
+# Edit at https://www.toptal.com/developers/gitignore?templates=latex
+
+### LaTeX ###
+## Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+*.fmt
+*.fot
+*.cb
+*.cb2
+.*.lb
+
+## Intermediate documents:
+*.dvi
+*.xdv
+*-converted-to.*
+# these rules might exclude image files for figures etc.
+# *.ps
+# *.eps
+# *.pdf
+
+## Generated if empty string is given at "Please type another file name for output:"
+.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex(busy)
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Build tool directories for auxiliary files
+# latexrun
+latex.out/
+
+## Auxiliary and intermediate files from other packages:
+# algorithms
+*.alg
+*.loa
+
+# achemso
+acs-*.bib
+
+# amsthm
+*.thm
+
+# beamer
+*.nav
+*.pre
+*.snm
+*.vrb
+
+# changes
+*.soc
+
+# comment
+*.cut
+
+# cprotect
+*.cpt
+
+# elsarticle (documentclass of Elsevier journals)
+*.spl
+
+# endnotes
+*.ent
+
+# fixme
+*.lox
+
+# feynmf/feynmp
+*.mf
+*.mp
+*.t[1-9]
+*.t[1-9][0-9]
+*.tfm
+
+#(r)(e)ledmac/(r)(e)ledpar
+*.end
+*.?end
+*.[1-9]
+*.[1-9][0-9]
+*.[1-9][0-9][0-9]
+*.[1-9]R
+*.[1-9][0-9]R
+*.[1-9][0-9][0-9]R
+*.eledsec[1-9]
+*.eledsec[1-9]R
+*.eledsec[1-9][0-9]
+*.eledsec[1-9][0-9]R
+*.eledsec[1-9][0-9][0-9]
+*.eledsec[1-9][0-9][0-9]R
+
+# glossaries
+*.acn
+*.acr
+*.glg
+*.glo
+*.gls
+*.*-glg
+*.*-glo
+*.*-gls
+*.glsdefs
+*.lzo
+*.lzs
+
+# uncomment this for glossaries-extra (will ignore makeindex's style files!)
+# *.ist
+
+# gnuplottex
+*-gnuplottex-*
+
+# gregoriotex
+*.gaux
+*.gtex
+
+# htlatex
+*.4ct
+*.4tc
+*.idv
+*.lg
+*.trc
+*.xref
+
+# hyperref
+*.brf
+
+# knitr
+*-concordance.tex
+# TODO Comment the next line if you want to keep your tikz graphics files
+*.tikz
+*-tikzDictionary
+
+# listings
+*.lol
+
+# luatexja-ruby
+*.ltjruby
+
+# makeidx
+*.idx
+*.ilg
+*.ind
+
+# minitoc
+*.maf
+*.mlf
+*.mlt
+*.mtc
+*.mtc[0-9]*
+*.slf[0-9]*
+*.slt[0-9]*
+*.stc[0-9]*
+
+# minted
+_minted*
+*.pyg
+
+# morewrites
+*.mw
+
+# nomencl
+*.nlg
+*.nlo
+*.nls
+
+# pax
+*.pax
+
+# pdfpcnotes
+*.pdfpc
+
+# sagetex
+*.sagetex.sage
+*.sagetex.py
+*.sagetex.scmd
+
+# scrwfile
+*.wrt
+
+# sympy
+*.sout
+*.sympy
+sympy-plots-for-*.tex/
+
+# pdfcomment
+*.upa
+*.upb
+
+# pythontex
+*.pytxcode
+pythontex-files-*/
+
+# tcolorbox
+*.listing
+
+# thmtools
+*.loe
+
+# TikZ & PGF
+*.dpth
+*.md5
+*.auxlock
+
+# todonotes
+*.tdo
+
+# vhistory
+*.hst
+*.ver
+
+# easy-todo
+*.lod
+
+# xcolor
+*.xcp
+
+# xmpincl
+*.xmpi
+
+# xindy
+*.xdy
+
+# xypic precompiled matrices and outlines
+*.xyc
+*.xyd
+
+# endfloat
+*.ttt
+*.fff
+
+# Latexian
+TSWLatexianTemp*
+
+## Editors:
+# WinEdt
+*.bak
+*.sav
+
+# Texpad
+.texpadtmp
+
+# LyX
+*.lyx~
+
+# Kile
+*.backup
+
+# gummi
+.*.swp
+
+# KBibTeX
+*~[0-9]*
+
+# TeXnicCenter
+*.tps
+
+# auto folder when using emacs and auctex
+./auto/*
+*.el
+
+# expex forward references with \gathertags
+*-tags.tex
+
+# standalone packages
+*.sta
+
+# Makeindex log files
+*.lpz
+
+# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
+# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
+# Uncomment the next line to have this generated file ignored.
+#*Notes.bib
+
+### LaTeX Patch ###
+# LIPIcs / OASIcs
+*.vtc
+
+# glossaries
+*.glstex
+
+# End of https://www.toptal.com/developers/gitignore/api/latex
+latex/*.pdf
diff --git a/content/posts/2021-04-14-git-introduction.md b/content/posts/2021-04-14-git-introduction.md
new file mode 100644
index 0000000..94cf426
--- /dev/null
+++ b/content/posts/2021-04-14-git-introduction.md
@@ -0,0 +1,179 @@
+---
+title: "Git Introduction"
+date: 2021-04-14T18:54:16+02:00
+
+
+
+categories:
+ - misc
+ - git
+ - software
+tags:
+ - english
+ - software engineering
+ - tools
+summary: This post will help you to get started with using and understanding git!
+showToc: false
+draft: true
+---
+
+Currently, I'm working on my slides for this semester's tutorials for our Software Engineering course.
+I aim to give the students a good introduction to git, as it is an integral part of our toolchain.
+So I decided to share my thoughts on what a beginner should know about git here.
+I'm probably going to expand on this post in later posts.
+
+---
+
+![The struggles with git](/images/xkcd/1597.png)
+
Source: xkcd.com
+
+## What is it?
+
+So, what is Git? The xkcd already implies that git is a collaborative, distributed source control system.
+But that is a rather abstract definition. Let's simplify a bit for now. Git tracks changes to your files.
+
+Essentially Git keeps different versions of your files around, so you can compare them and refer to old versions.
+This is really useful, as it makes it hard for you to lose working code, and easy to compare a broken version to a
+working one, to find the culprit.
+
+
+## So how do we use it?
+
+The comic above is not wrong. A lot of git comes down to remembering different commands (or button locations for that matter).
+The first thing one needs to do, is to prepare a Repository. A repository encapsulates everything git tracks. So you move to
+your project directory and type:
+
+```bash
+$ git init
+Initialized empty Git repository in $project_dir/.git
+```
+
+Git now told you exactly what it did. It prepared a folder for the data it has to track. We now refer to the $project_dir
+as the working directory, and $project_dir/.git as the repository. Let's create some files, track some changes and take a
+look at how we can interact with those.
+
+```bash
+$ echo "our first change" > file_one.txt
+$ git status
+On branch master
+
+No commits yet
+
+Untracked files:
+ (use "git add ..." to include in what will be committed)
+ file_one.txt
+
+nothing added to commit but untracked files present (use "git add" to track)
+```
+
+So, we created a new file with the content "our first change". `git status` is used to get information about the current
+state of the working directory and repository. It currently tells us, that we have not committed anything at all, and that
+there is a untracked file. Let's stage it. Staging means that we tell git to *prepare* that file for a snapshot in its current
+version.
+
+```bash
+$ git add file_one.txt
+$ git status
+On branch master
+
+No commits yet
+
+Changes to be committed:
+ (use "git rm --cached ..." to unstage)
+ new file: file_one.txt
+```
+Git now tells us that there are no unstaged chanes, as well as no commits. And that we have prepared a new file for commit.
+So let's create our first commit. A commit basically is a snapshot of our files, frozen in time. We'll not concern ourselves
+with the semantics of a good commit for now.
+
+A commit consists of a list of files, their contents, author information, and a message describing the commit.
+
+```diff
+$ git commit -m "This is our first commit"
+$ git show
+commit cf0475067740275c6469836ff743855fcf4e4f85 (HEAD -> master)
+Author: Tobias Manske
+Date: Wed Apr 14 19:37:00 2021 +0200
+
+ This is our first commit
+
+diff --git a/file_one.txt b/file_one.txt
+new file mode 100644
+index 0000000..103f365
+--- /dev/null
++++ b/file_one.txt
+@@ -0,0 +1 @@
++our first change
+```
+
+`git show` shows us what our last commit did. In my case it is filled in with my email and my name for author information.
+The commit has the id cf04... and is currently the commit the master branch points to (more on that later).
+In the bottom part we see a so called diff of the state before the commit and the new state. We can obtain more information
+about the history with the `git log` command. Without further options it just prints the top part of `git show` for every
+commit in the history. Before we can explore that further, we need some more changes. I'll not go into detail here. Just
+repeat what we did before. Change stuff, add it to git and commit it.
+
+
+```diff
+$ git log
+commit 1849c7644425684cea7039e825168d92df4e6936
+Author: Tobias Manske
+Date: Wed Apr 14 19:57:38 2021 +0200
+
+ remove a file
+
+commit 4db54105f028d23339bbd1eb51fb397ab0d45719
+Author: Tobias Manske
+Date: Wed Apr 14 19:57:23 2021 +0200
+
+ Changes some more stuff
+
+commit cf0475067740275c6469836ff743855fcf4e4f85
+Author: Tobias Manske
+Date: Wed Apr 14 19:37:00 2021 +0200
+
+ This is our first commit
+```
+
+As we can see, this is our history. It can be rather cumbersome to look at it this way, let's use some options to make
+it easier to digest:
+
+```bash
+$ git log --oneline
+1849c76 remove a file
+4db5410 Changes some more stuff
+cf04750 This is our first commit
+```
+
+This is a lot more concise, but lacks quite a lot of information. I have a shorthand `git lg` in
+[my configuration](https://git.tobiasmanske.de/user/rad4day/public/dotfiles/tree/.gitconfig)
+which would show (colored, not like it's shown here):
+
+```bash
+$ git lg
+* 1849c76 - (4 minutes ago) remove a file - Tobias Manske (HEAD -> master)
+* 4db5410 - (4 minutes ago) Changes some more stuff - Tobias Manske
+* cf04750 - (25 minutes ago) This is our first commit - Tobias Manske
+```
+
+The left most column is a abbreviation of the commit hash (that long number we've seen before) that git uses to identify
+and distinguish commits. The length of the abbreviation will adjust if git ever needs more symbols to distinguish two commits.
+
+## Looks complicated, can you explain this again?
+
+I will! With a graphic. Below you can see what happened step-by-step, when we committed.
+
+![How commits changed our graph](/images/git-graph.png)
+
+You can see 4 columns, which are the 4 states our repository was in; every commit changes the state from left to right.
+In the beginning we had no commits, then we created our first commit and git placed the HEAD-Pointer at it (more on that later).
+
+Each new commit has a parent-pointer to its ancestor and is now the location of our HEAD. This pattern continues till we made
+our last commit.
+
+## So how do I access my data?
+
+Until now, we just stored data into git. That's nice to know, but how could we recover code we deleted later on?
+
+For example: How do we get back our initial version of file_one.txt, how do we look at it? How can we replace our current
+version with it?
diff --git a/latex/git-graph.tex b/latex/git-graph.tex
new file mode 100644
index 0000000..a0634f6
--- /dev/null
+++ b/latex/git-graph.tex
@@ -0,0 +1,49 @@
+\documentclass[border=4mm]{standalone}
+
+\usepackage{url}
+\usepackage{tikz}
+\usepackage{color}
+\definecolor{dcolor}{rgb}{0.68, 0.05, 0.0}
+
+
+\begin{document}
+
+\begin{tikzpicture}[draw=dcolor, text=dcolor]
+ \usetikzlibrary{shapes}
+ \usetikzlibrary{fit}
+ \usetikzlibrary{automata, arrows.meta, positioning}
+ \tikzstyle{roundnode}=[ellipse, thin, draw=dcolor, minimum width=20mm, minimum height=20mm, node distance=1.5cm, align=center, auto]
+ \tikzstyle{highlight}=[red,ultra thick]
+ \tikzset{>=latex}
+ \node[roundnode, dashed] (a) {none};
+
+ \node[roundnode, right=of a] (b) {cf04750};
+ \node[roundnode, right=of b] (bb) {cf04750};
+ \node[roundnode, right=of bb] (bbb) {cf04750};
+
+
+ \node[roundnode, below=of bb] (bc) {4db5410};
+ \draw[->] (bc) edge (bb);
+
+
+ \node[roundnode, below=of bbb] (bbc) {4db5410};
+ \node[roundnode, below=of bbc] (bbd) {1849c76};
+ \draw[->] (bbc) edge (bbb);
+ \draw[->] (bbd) edge (bbc);
+ \node[rectangle, dashed, draw=dcolor, right=.1cm of b, yshift=-1cm] (H) {\scriptsize HEAD};
+ \draw[->] (H) edge (b);
+ \node[rectangle, dashed, draw=dcolor, right=.1cm of bc, yshift=-1cm] (bH) {\scriptsize HEAD};
+ \draw[->] (bH) edge (bc);
+ \node[rectangle, dashed, draw=dcolor, right=.1cm of bbd, yshift=-1cm] (bbH) {\scriptsize HEAD};
+ \draw[->] (bbH) edge (bbd);
+
+ \draw[->, dashed] (a) edge node[above] {\tiny git commit} (b);
+ \draw[->, dashed] (b) edge node[above] {\tiny git commit} (bb);
+ \draw[->, dashed] (bb) edge node[above] {\tiny git commit} (bbb);
+% * 1849c76 - (4 minutes ago) remove a file - Tobias Manske (HEAD -> master)
+% * 4db5410 - (4 minutes ago) Changes some more stuff - Tobias Manske
+% * cf04750 - (25 minutes ago) This is our first commit - Tobias Manske
+
+ \end{tikzpicture}
+
+\end{document}
diff --git a/static/images/git-graph.png b/static/images/git-graph.png
new file mode 100644
index 0000000..3929ee8
Binary files /dev/null and b/static/images/git-graph.png differ
diff --git a/static/images/git-logo.png b/static/images/git-logo.png
new file mode 100644
index 0000000..910f993
Binary files /dev/null and b/static/images/git-logo.png differ
diff --git a/static/images/xkcd/1597.png b/static/images/xkcd/1597.png
new file mode 100644
index 0000000..3f35d2d
Binary files /dev/null and b/static/images/xkcd/1597.png differ