Kickoff — the basic concepts, before you need them
This is a map, not the material. Four written parts carry the actual depth — worked examples, the exceptions, what breaks and why:
Only Part 1 gates a first practical. If you are short on time, read that one properly and treat the rest of this deck as a preview of what is coming.
A fair question before spending an evening on this.
The cost: nothing is discoverable. A terminal shows a cursor and waits. That gap is what Part 1 closes.
Own figure.
The one part worth watching is where you currently are — it changes as you move, and it answers the question that causes most early confusion.
Own figure.
No drive letters. Everything — a second disk, a USB stick, a network share — is a directory somewhere inside this one tree. And it is case-sensitive: Data.csv and data.csv are two different files.
pwd, ls and cd answer where am I and what is here — the two questions worth asking before anything else.
Press Tab. Every time, not just when stuck.
Typing a filename from memory is a guess. Letting the shell complete it is not — it is spelled right or it does not exist. This is worth repeating because it is the single most common thing people forget under time pressure.
Four parameters, four jobs: -t, the delimiter, -k2 which column, -n compare as numbers, -r largest first. Drop -n and 103 sorts before 12, because as text it starts with a smaller character.
The shell splits what you type on whitespace — so a space inside a filename is indistinguishable from a space between two separate arguments.
cd saw two arguments, not one. Quoting (cd "lab notebook") fixes it, but the real fix is upstream: use lab_notebook and the problem never comes up. Graphical file managers and Windows both allow spaces freely — the terminal is where that difference first bites.
Read left to right, as a sentence: sort it, count the repeats, sort that numerically. None of these four tools knows the others exist — the pipe is what turns simple pieces into an answer nobody wrote a program for.
* matches any run of characters. Check what it will match with ls before ever pointing it at rm.
Terminal, tree, parameters, pipes, wildcards. The full page → has the backslash line-continuation, stdin/stdout/stderr, reading errors, a short section on $HOME-style variables, and a checklist to test yourself against.
Two projects can genuinely need different, incompatible versions of the same dependency. An environment keeps one project’s tools from breaking another’s — and if it is written down in a file, someone else can rebuild it and get the same result.
No “activation” — pixi run uses this project’s tools because you are standing in this project’s directory.
pixi.toml says what you asked for; pixi.lock says exactly what you got. Commit both. The full page → covers conda and mamba too — you will meet both in documentation even if you never install them.
Own figure.
git config --global user.name "You" # one-time, per machine
git config --global user.email "[email protected]"
mkdir -p repo && cd repo && git init -q
echo "print('hello')" > analysis.py
git add analysis.py
git commit -q -m "Add the analysis script"
git log --onelineIf a team shares one repository, this happens in the first hour:
Nothing is lost — Git is refusing to overwrite someone else’s work with yours. The fix, and the habit worth having from the start: work on a branch, push it, and open a pull request for someone to read before it joins main.
You will need an account. At least one person per team, for the shared repository to exist — in practice, everyone, since each of you pushes your own commits.
Treat it as more than a requirement: pinned repositories, a short bio, a clear README on each project — this becomes a portfolio you did not realise you were building. One real example: github.com/jonas-fuchs.
For a job in this field, that can say more than a CV — it is evidence you can do the work, not a claim that you can.
add → commit → push, and branch before you push if anyone else shares the repository. The full page → covers diff, restore, merge conflicts, and the full branch-to-pull-request walkthrough.
Markdown is what READMEs and GitHub pages are written in. JSON is how tools hand structured results to each other — six types, no comments, no trailing commas.
Plus CSV/TSV, why Excel silently damages data files, and the two invisible things — line endings and encoding — that make a text file misbehave. The full page →