"We are software engineers and as such we code, yeah we like to write code"
In a few words the vast majority of our trainings are text base, because are mainly focus on increasing your abilities as a embedded software engineer, get use to the terminal and command line program execution. Don't worry you soon will find this is a much better and faster way to do things related to code.
You have two option to work with Linux and Windows but in both you will need a terminal. Regarding linux and its many flavor, Arch version are the one we will use, mostly because its powerful package manager and easy way to install all the required software. Choose any Arch distro you want but here are some recommendations:
The main tools
The best compiler, a nice code editor, a fancy terminal and a powerful shell plus some other nice to have tools will make us unstoppable.
Linux Users
After a fresh linux installation and before anything else, install the linux base devel package
pacman is the program we use in arch linux to install all our software, or most of them
$ sudo pacman -Syu base-devel
The later one shall install most of the build tools we need, including the compiler and make, but not gdb
$ sudo pacman -S gdb
the most popular source code manager is also a must
$ sudo pacman -S git
tree, to display beautiful directory list in cli
$ sudo pacman -S tree
Prior to continue it is needed to install an arch linux utility that will allow us to install extra packages, it is called paru
$ git clone https://aur.archlinux.org/paru.git
$ cd paru
$ makepkg -si
$ cd ..
$ rm -r paru
And last but not least the code editor, we gonna pick VS Code because it is really fancy and has a tons of plugins you can use, there is a open source version on the arch offcial repo, but we gonna choose the microsoft license version because it is easy to install the plugins and themes. Hope you don’t mind to be spy by Microsoft.
$ paru -S visual-studio-code-bin
Python already comes with any linux distribution but not its packager manager, called pip ( well sometimes it does )
$ sudo pacman -S python-pip
Windows users
Windows does not have a powerful terminal workflow like linux, but there is a good and nice project with the goal to emulate the easy and fancy way Linux has to install programs, and that is:
Open powershell in Admin mode and type
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Just in case and from time to time you should upgrade choco
$ choco upgrade chocolatey
Ok install mingw to run gcc and gdb
$ choco install mingw
test installation
$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/12.2.0/lto-wrapper.exe
...
do not forget make
$ choco install make
Of course you can install Git
$ choco install git
and tree, to display beautiful directory list in cli
$ choco install tree
VSCode
$ choco install vscode
ALWAYS run PowerShell with admin permission to install anything with choco
By the way, the default VSCode terminal shell is PowerShell, but since we already installed git, ( that comes with its own shell base in BASH ), lets make a switch like is shown in this nice video from Neutro Dev.
Now you have a linux like terminal, where you can use bash scripting with all its powers making almost transparent "The way we work " without worry about the operative system in use.
Soon or later you gonna need python and its good friend pip ( that already comes with python, or should )
$ choco install python
Terminal and CLI worflow
I can write tons of lines on how to use the Terminal but someone else already did it really well and also wrote a book, https://linuxcommand.org/tlcl.php. You should and must read it, just remember if you are in Windows things will be a little more limited. the most important is to learn about navigation with the commands pwd, cd, ls, mkdir, rm,