|
| 1 | +# Setting up your environment |
| 2 | + |
| 3 | +A good development environment on your computer is crucial to effective working as a computational researcher. |
| 4 | +In this section we discuss basic preliminaries to setup your machine for software development, code editing tools, |
| 5 | +external services, and other useful resources to get you started. |
| 6 | + |
| 7 | +## Configuring your computer |
| 8 | + |
| 9 | +These days it does not really matter any more, whether you use Windows, Linux, or Mac OS for software development. |
| 10 | +All three of them are fine and support almost anything you need. There is a small caveat with Windows on ARM architectures ( |
| 11 | + e.g. recent Microsoft Surface devices ) Almost everything should work fine. But it is a relatively recent platform and |
| 12 | + there still maybe smaller support gaps. |
| 13 | + |
| 14 | +### Windows setup |
| 15 | + |
| 16 | +The best way to get started with development on Windows is to use [WSL - Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install). |
| 17 | +This gives you a complete Ubuntu Linux environment under Windows, allowing any Linux software and development libraries to run natively |
| 18 | +within Windows. It is fully Microsoft supported and the preferred way to do scientific software development under Windows. |
| 19 | + |
| 20 | +To access WSL you can use the Windows Terminal app. For software development within WSL you can use [VS Code](https://code.visualstudio.com/) or a text based editor such as Neovim or Helix. |
| 21 | + |
| 22 | +You should familiarize yourself with command line tools to install software under Ubuntu, the default Linux distribution in WSL. See also below for more |
| 23 | +information on this. |
| 24 | + |
| 25 | +### Linux setup |
| 26 | + |
| 27 | +If you are already running Linux there is not much more you need to do apart from installing your preferred development tools. We are assuming that |
| 28 | +people use Ubuntu and typically show commands for Ubuntu. But any Linux setup works fine. |
| 29 | + |
| 30 | +### MacOS |
| 31 | + |
| 32 | +If you are running Mac it is recommended to install [Homebrew](https://brew.sh/). This is a command line package manager that gives you access |
| 33 | +to a vast ecosystem of software tools and libraries for almost anything. |
| 34 | + |
| 35 | + |
| 36 | +### Coding tools |
| 37 | + |
| 38 | +The most convenient graphical code editor is [VS Code](https://code.visualstudio.com). It supports a huge range of plugins with support |
| 39 | +for almost any programming language. If you like working on the command line you might also consider [Neovim](https://neovim.io/) or |
| 40 | +[Helix](https://helix-editor.com/). While these have faster editing speed than VS Code they are much harder to learn though. For Neovim |
| 41 | +a preconfigured setup such as [LazyVim](https://www.lazyvim.org/) is recommendable. |
| 42 | + |
| 43 | +Many of you will do significant work in Python. One of the most frequently used Python distributions is Anaconda. |
| 44 | +Here, a personal recommendation is to install [Conda-Forge](https://conda-forge.org/download/). It is a minimalist version of Anaconda with |
| 45 | +just the interpreter and the conda-forge repository preconfigured, which has the largest selection of packages. |
| 46 | + |
| 47 | +### Working on the command line |
| 48 | + |
| 49 | +Whatever system you have, you will do a lot of work on the command line. Very often, when using remote machines the command line is |
| 50 | +the only way to interact with a computer. On Ubuntu and WSL your command line will typically by [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)). On Mac OS it will be [Zsh](https://en.wikipedia.org/wiki/Z_shell). Both are fairly similar for most day to day use. |
| 51 | +A good tutorial to get started on these and similar so-called Unix like shells is available [here](https://cerfacs.fr/coop/unix-terminal). |
| 52 | + |
| 53 | +### Version Management |
| 54 | + |
| 55 | +Almost everybody uses [Git](https://git-scm.com/book/ms/v2/Getting-Started-About-Version-Control) for version management of code. You should |
| 56 | +use `git` together with a [Github](https://github.com) account. Github also has a [simple tutorial](https://github.com/git-guides) for git. |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | + |
0 commit comments