# Setup Workspace and Basic Tools
## Basic Terminal Setup and CLI Usage
### WSL (only for Windows dudes)
- read and follow [this](https://docs.microsoft.com/en-us/windows/wsl/setup/environment) until [here](https://docs.microsoft.com/en-us/windows/wsl/setup/environment#use-visual-studio-code)
- final deliverables:
- should have WSL Ubuntu installed
- on opening Windows Terminal, the default profile must be WSL Ubuntu
### Shells
- for Windows: open the recently installed Windows Terminal; for macOS: open Terminal; for Linux: you probably already know what to do
- read about shells [here](https://missing.csail.mit.edu/2020/course-shell/) or follow [this](https://www.youtube.com/watch?v=Z56Jmr9Z34Q) video tutorial (do not worry if you are not able to remember or "memorize" the commands, you don't need to. this exercise is just to introduce you to cli)
- try to solve [these](https://overthewire.org/wargames/bandit/bandit0.html) levels (as many as you can)
- **bonus**:
- install the zsh shell by following this typing this: `sudo apt install zsh`
- make zsh your default shell (google it)
- install [ohmyzsh](https://ohmyz.sh/) by typing this: `sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"`
## Managing Packages and Environments in Python
- packages represent the power of the Python community. they provide prebuilt utilities, ranging from new data structures to various models
- packages need to be managed in order for them to work together. read about how packages are installed and managed [here](https://www.programiz.com/python-programming/pip)
- read about the difference between a package manager for an operating system (such as `apt` for the Debian OS) and package managers for the Python ecosystem. show us some of the coolest packages you installed using `apt`
- a virtual environment is an isolated installation of Python and its packages. read about how to create and manage virtual envs with conda [here](https://whiteboxml.com/blog/the-definitive-guide-to-python-virtual-environments-with-conda)
- install conda on your system
- WSL: refer [here](https://gist.github.com/kauffmanes/5e74916617f9993bc3479f401dfec7da)
- macOS: refer [here](https://docs.conda.io/projects/conda/en/latest/user-guide/install/macos.html)
## Git Setup and Guides
### Installation
#### Linux Users (or Windows users who use WSL)
- open the terminal, and run this command to install git: `sudo apt-get install git` (**bonus**: read about the difference between `apt` and `apt-get`)
- verify your installation of git using this command: ```git --version```
#### macOS Users
- git is pre-installed on macOS
- just to verify, run this command to verify your installation: ```git```
- in case it is not pre-installed, you can use package managers like **Homebrew** to install git.
- run this command to install Homebrew: ```/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"```
- run this command to install git using Homebrew: ```brew install git```
### Learn about Git
- a highly recommended resource to learn Git is the [MIT's missing semester](https://missing.csail.mit.edu/2020/version-control/)
- another nice read: [here](https://xosh.org/explain-git-in-simple-words/)
- [this](https://learngitbranching.js.org) is an interactive online tool which you can use to visualize the git version tree. you will also develop a very strong intuition as to what exactly different git commands are doing.
- [lab based approach](https://gitimmersion.com/) to learn git
### When frustrated 😖
- https://ohshitgit.com/
- https://firstaidgit.io/#/
- https://stackoverflow.com/