Software Development

Manage your config files (dotfiles) using dotbot and Git

DotBot

Maths and Statistical programming

Learn git properly

Watch this Then play this game

Install npm, node and typescript

Bash shell:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
nvm install node

Fish shell:

omf install bass
omf install nvm
nvm install node

Updating:

Latest current version: nvm install

Latest LTS version: nvm install --lts

Use specific version: nvm use --lts or nvm use 14 etc

Switch default version: nvm alias default --lts or nvm alias default 14 etc

node-typescript:

There is no more node-typescript (deprecated cli tool as part of original nodejs, for converting .ts code to .js). This functionality is now built into node (e.g. node main.ts main.js). If you have a tool which requires it, just create the alias: alias node-typescript=node

VS Code Recommendations

Install right-click context menu open for Nautilus

Good extensions:

  • Tabnine
  • cht.sh (and vscode-snippet extension bound to hotkey)
  • Git Graph
  • Git Lens
  • Markdown All in One

Install Julia

The best way I found was to use the Jill tool to install system-wide, as the package manager versions are old, and the manual install is very... manual. Jill also allows installation and management of multiple versions of Julia under the julias installation directory

sudo pip install jill
sudo jill install

For notebook support (recommended), use Pluto.jl

You may also want to install the VS Code extension julia-vscode (the older Atom IDE is now discontinued).

Pimp your dev setup

Ricing or RICE

Also see the 3. Terminal chapter of this book.

  • One developers f-ing awsome dev setup to get some ideas.

  • More inspiration.

  • Some more

  • For great monospace fonts for terminal and code, recommend one of the Nerd Fonts which are various popular coding fonts patch to include many additional icons and features:

    • Hack⭐
    • FiraCode
  • Looking for mouse-less efficiency or better management of large/multiple displays: see Tiling Window Managers (TWM)

    • Regolith (good starting point for TWM newbies)
    • AwesomeWM
    • If you use KDE and want a taste of the tiling experience, try either this Kwin script or Kröhnkite (recommended).
    • If you use Gnome and/or want to try a different tiling approach, check out Paper WM or for a standard TWM on Gnome: Pop Shell

Compile your own Kernel

Why?

  • Learn to compile a kernel
  • Customize the kernel for your machine by removing un-needed features, drivers and modules (especially if your device has limited space)
  • Modify it to support new hardware or features
  • Apply 3rd party code patches for new hardware or features that are not available as modules yet.

Basic instructions

Xanmod kernel example

The main idea is:

  1. Install dependencies sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison gcc
  2. Get the Kernel code: git clone the kernel code you want to build
  3. In the cloned folder: make menuconfig to configure the kernel features and save as .config file.
  4. Run make command with parameters: number of cores to use during build (e.g. 16), build a .deb package for easy install/uninstall and suffix with -custom so you can identify it easily make -j16 deb-pkg LOCALVERSION=-custom
  5. Wait some time (Took 18 minutes on my 8 core 16 thread AMD laptop. On some devices it can take hours)
  6. Install both resulting linux-headers-... and linux-image-... deb files, which will be placed outside the git project folder.

Docker for developers

Docker runs natively on Linux so there is no need for "Docker Desktop" which is essentially a user-friendly VM manager for developers on non-Linux OS (hence required on Windows and Mac).

Simply Install Docker Engine (CE) for development. Here is a good way to do it, which also installs Portainer⭐, a helpful web based GUI. This will also enable docker to run automatically as a background service.

After installing Docker Engine CE + Portainer, you would want to add your user to docker group permissions (so you dont have to do sudo docker all the time), and install docker-compose:

sudo groupadd docker
sudo usermod -aG docker $USER

Then reboot your PC and try docker ps which should no loneger require sudo

Then install docker-compose. Or a simpler way on Ubuntu is just run: sudo pip install docker-compose