Wednesday, October 30, 2019; Reading time 5 minutes.

This is more or less the continuation of the previous blog post but a lot of things changed in last few months. I’ve “moved back” to my laptop and I’m not working on a server anymore due to the changes to vscode server. Since I’ve had to setup everything again here is a blog post explaining my tool set!

Operating system

I’ve been using everything under the sun so far in my life: Windows 95-10, Ubuntu since 8.04, Arch, Gentoo, OSX, and now MacOS.

Am I happy? Eh, it’s been OK. It comes with the laptop and it works good enough that I can keep working without fixing everything all of the time. I like that it has a UI made for ease of use and that I can still drop to the console when I need something else. It also plays nice with my iPhone but I’ve disabled most of the things that it can do.

What is missing I try to compesate with my tool set.


I’ve been using fish shell for more than 10 years now (on and off). Since the day I started using Ubuntu someone installed it for me and I’ve kept it with me. The configuration grew quite a bit and it reflects my work flow perfectly.

alias ls "exa --long --git"
alias rm "trash"
alias cat "bat"
alias grep "rg"

abbr map "xargs -n1"
abbr gco "git checkout"
abbr gst "git status -sb"
abbr gc "git commit"
abbr gcm "git commit -m"
abbr ga "git add"
abbr gaa "git add -A"
abbr gap "git add --patch"
abbr gpl "git pull"
abbr gps "git push"
abbr scrapvm "docker run -ti --rm ubuntu"
abbr upload "rsync -avzu --progress"

set -gx EDITOR "vim"
test -e {$HOME}/.config/fish/; and source {$HOME}/.config/fish/
set -Ua fish_user_paths {$HOME}/.dotfiles/bin

starship init fish | source

For most of my aliases I use an abbr since it saves the correct command history 😄. There are ones that I use all of the time and some (scrapvm, upload, map) that I wish to use but never get to them…

Replacements for basic tools

As you might have seen I use a lot of replacements for basic tools like rm and cat. Most of it is to get either a speed bump or some more features. Take bat for an example:

It’s a much cleaner expirience and it still works with pipes and redirects. Awesome. The same goes for exa.

Easier to read with more info but still backwards compatible.


I’ve also used everything here from ed, nano, ne, vim to Visual Studio Code. And there I stayed. Since I teach at the Infinum Academy I needed something that won’t look at all different from what the students can use. For quick edits I use vim and here is my extra simple config:

set mouse=a
set number
set clipboard=unnamed
set laststatus=0

" Colors {{{
  syntax enable
  set background=dark
" }}} Colors

" Spaces & Tabs {{{
  set tabstop=2
  set softtabstop=2
  set shiftwidth=2
  set expandtab
  set autoindent
  set copyindent
" }}} Spaces & Tabs

And my Visual Studio Code settings stay also very simple.


I’ve made my own that I can run on any new device I setup to have everything as I want it to be. It’s not fragile but I still read it everytime I use it 😂.

#!/usr/bin/env bash

if grep -q "Darwin" <<< $(uname -a); then
  if &#091; ! -x "$(command -v brew)" ]; then
    /usr/bin/ruby -e "$(curl -fsSL"

  brew install exa git node postgresql rbenv bat fish httpie n ripgrep jq starship

  brew cask install visual-studio-code google-chrome \
    firefox slack 1password docker iterm2 imageoptim \
    resilio-sync spotify tableplus zoomus whatsapp

  if ! grep -q "auth sufficient" /etc/pam.d/sudo; then
    awk 'NR==2{print "auth sufficient"}1' /etc/pam.d/sudo | sudo tee /etc/pam.d/sudo

  sudo mkdir -p /usr/local/n
  sudo chown -R $(whoami):staff /usr/local/n

  code --install-extension dbaeumer.vscode-eslint
  code --install-extension esbenp.prettier-vscode
  code --install-extension ms-azuretools.vscode-docker
  code --install-extension ms-vscode.vscode-typescript-tslint-plugin
  code --install-extension sianglim.slim
  code --install-extension
  code --install-extension

  ln -s $HOME/.dotfiles/settings.json $HOME/Library/Application\ Support/Code/User/settings.json

if ! grep -q "$(which fish)" /etc/shells; then
  which fish | sudo tee -a /etc/shells
chsh -s $(which fish)

n lts

cd $HOME
git clone .dotfiles

mkdir -p $HOME/.config/fish
ln -s $HOME/.dotfiles/ $HOME/.config/fish/

ln -s $HOME/.dotfiles/gitconfig $HOME/.gitconfig

ln -s $HOME/.dotfiles/vimrc $HOME/.vimrc

cd $HOME/.dotfiles
git remote set-url origin

From here you can see all of the apps that are installed. I try to use as many as possible default and included apps to keep this lightweight.