== Tools === Tools >>>> Process === ! [%step] * Repetitive work is boring... * ...and prone to errors * Why should I work, when I can make my computer do it for me? === ! image::nap.jpg[] === Version control systems [%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. === 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] * Currently the most used * Free and open source * Distributed * Powerful and flexible * Learning curve can be steep === Installation https://git-scm.com/download Package managers are heavily recommended! anaconda, chocolatey, homebrew... === but, what is it? image::architecture.png[] === How to use GIT [%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 === workflow image::git_workflow.jpg[] === ! IMPORTANT: You **WILL** regret not using version control // -------------------------------------------------------------------------------------------------------------------- === Other tools [%step] * Integrated Development Environments * Debuggers * Libraries * Reference sites: stack overflow, rosettacode, kaggle... === ! image::github-stack-overflow-y-code-my-code-44625886.png[] === Scripting languages === Do it once, do it right [.fragment] (and never do it again) [.fragment] image:geeks-and-repetitive-tasks.png[] === ! https://automatetheboringstuff.com/ image::Automate_coversmall_0.png[]