"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:

Manjaro
This page provides an overview of Manjaro Linux, an open source operating system designed for ease of use. Learn about its features, installation, and support options. Get the most out of Manjaro Linux with the latest news, downloads, and tips from our helpful community.
Garuda Linux Official website
Garuda Linux is an appealing Arch Linux based Distro with BTRFS (modern filesystem), Linux-zen kernel, auto snapshots, gaming edition and a lot more bleeding-edge features.
EndeavourOS
A terminal-centric distro with a vibrant and friendly community at its core

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, in case not, just type

$ sudo pacman -S gcc gdb

Verify the compiler is already installed

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-libunwind-exceptions --disable-werror gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.1.0 (GCCyayA

Next, you need to install make, again you can try to see if it is already installed typing make -v, and in case you haven’t

$ sudo pacman -Syu make

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 )

$ curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
  Downloading pip-23.0-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 5.6 MB/s eta 0:00:00
...

$ rm get-pip.py 

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:

Chocolatey - The package manager for Windows
Chocolatey is software management automation for Windows that wraps installers, executables, zips, and scripts into compiled packages. Chocolatey integrates w/SCCM, Puppet, Chef, etc. Chocolatey is trusted by businesses to manage software deployments.

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,