# 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/