# Week 1 - Setup and Tools

The first week we will learn about setting up the work Envoirnment and setup various tools which will be used during your daily routine. You can either use Linux and Windows for Dvelopement 

For linux we recommend Ubuntu 20.04 LTS 
Windows use whatever is > Windows 7 

[Web Devlopment in 2021]:(https://www.youtube.com/watch?v=VfGW0Qiy2I0)



### Hardware 

* Please make sure to have a Full HD ( 1080p ) monitor 
* SSD as a storage setup 
* 8GB + Ram 

### Console - *Use it when possible*

Console is your firend so get comfortable with console based tools , to get a console on Windows please install Git SCM , use its console. Please learn to use the following commands 

* **cd**
* **ls** 
* **grep** - Regex searching , recursive searching , listing files , piping seached files 
* **head** and **tail**
* **vim** - Command mode and Insert , ! , wq , dd , w , %s , searching 
* **ln** 
* **find** - File Searching 
* **xargs** 
* **tar** 
* **zip** 
* **curl**
* **weget** 
* **ssh**
* **scp**  

### Source Control

In most cases you will be working in a team so you will be useing Git as the main source control tool , Install git and learn to do the following operations , you can use github to create a dummy account - 

* **init** , **clone** , **commit** , **push** ,  **brach** , **merge** , **stash** 

As a exercise create a repo , edit a text file and push to the repo then do the following operations

* Create a Repo on github and clone it locally 
* Make changes to a text file and push it to cloud 
* Create a brach and edit text file 
* Edit text file in branch and merge to main branch 
* Clone repo in a seprate directory and edit the file at multiple similar locations
* Merge and resolve conflict  

### Editor

Though you can use vim for editing , we recommend using VSCode for editing and development. Its lightweight , free and maintaned by Microsoft with logs of addons availbile. 


### Package Managers 

For different setups different package managers will be used , Depending on your install you will use one of the following -

* apt
* yarn 
* pip 
* composer 

### Virtual Machines

**vagrant** - Vagrant is a tool focused on providing a consistent development environment workflow across multiple operating systems.

Please install vagrant for your setup , this will help have a consistent work envoirnmnt acorss multiple platforms . 

### Misc tools 

Some other misc tools we find helpful 

* **Clipboard managers** - Development is a lot of copy paste so a Clipboard manager helps ( W:Ditto )
* **Launchers** - These tools help you quickly launch application / perform small operations in a small launchable app ( W:Launchy )
* **Text Editors** - Small text editors to edit config files / hex editing etc ( W:pspad )