wiki:Tools/Bootstrapping

Classic and classy tools

I use Ubuntu, because it is backed by big corps. I use GTK because it is everywhere (Chrome, Emacs, gVim, Firefox, etc, etc.). I use Wayland because Chrome OS and even Chrome are using it. I use Clang + libc++ because Google (Android) and Apple (Swift) do.

Assembler, C, C++, Python3

To really understand the basic principles of Software Engineering (as opposed to merely PHP coding) one must be able to zoom from, say, Python code, through C, thorough Assembly to the actual memory layout and register values. It does not mean that we need to memorize all the details of how a particular compiler creates function's activation frames and pack structures and classes - we must understand the principles and be able to examine objdump -d and run gdb.

Gnome Shell + Wayland

Most of the time I use Ubuntu with Gnome Shell on Wayland instead of X11. I believe there are enough man-hours being spent for each new release to make Ubuntu barely usable --and bloated--, so it could make things easier. At least there is always working binutils glibc and gcc - just imagine how many installations of Ubuntu on Google and Facebook server farms, leave alone Amazon AWS. Ubuntu is de-facto the most widely used distro, supported by big corps.

This will fetch and install all the innumerable dependencies

sudo apt-get install xwayland gnome-session-wayland libwayland-egl1 gnome-shell

Gnome Terminal

Gnome Terminal is good just for one reason - it can render nicely True Type fonts. Otherwise it is a bloatware.

sudo apt-get install gnome-terminal

Fonts

To have the same consistent set of fonts in Terminal, Neovim, Emacs and gVim is absolutely essential. I use both Vim and Emacs heavily, Vim for quick and dirty editing of config files and code snippets, including on remote servers, and Emacs for long-running editing sessions of whatever it could be. So I really like when everything look the same.

Source Code Pro Fonts

Solarized Dark Theme

Having the same consistent colors (and fonts) everywhere is The Principle Of Less Astonishment applied to your DE. Ideally, I should see no difference whether I edit the same file in Vim or Emacs or just view it in the Terminal. The Solarized Dark theme makes it possible, with some minor caveats, like bold fonts in Emacs faces.

Solarized Dark Theme

binutils

This will install as, ld, objdump, etc. - the whole executable building pipeline.

sudo apt-get install build-essential

gcc

We need default stock compilers and debugger

sudo apt-get install gcc g++ gdb

version control systems

We need to fetch a source code from developer's repos.

sudo apt-get install cvs subversion mercurial git

cmake

Sometimes we have no choice but to use a crapware.

sudo apt-get install cmake

clang

and compile it efficiently and robustly, with hight quality and well-tested code generation Clang

OpenMP

This is Intel's own OpenMP runtime. Could be linked with C or C++ code. OpenMP is the easiest and sanest way (pragmas will be merely ignored) to parallelize media players and even the basic stuff.

sudo apt-get install libmkl-gnu-thread

Python3

Scripting languages rely on C and the Standard Library. Python 3 Interpreter is a C program. Python3

Language Servers

Language Servers

Neovim

Neovim

Emacs

Emacs

MIT Scheme

Steel Bank Common Lisp

Standard ML NJ

Erlang

Rust

Haskell

Scala

Swift

Last modified 2 years ago Last modified on Dec 31, 2018, 12:17:57 PM
Note: See TracWiki for help on using the wiki.