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 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 )