I had to setup a fresh Ubuntu dev machine after quite some time. Given that this was a loaner machine, I wanted to make sure that I have a minimal viable dev setup ready as quickly as possible.

Below are the steps for the minimal things I need.

Upgrade packages

For a fresh setup it is better to first make sure that everything that is upgradable is up to date. If you have a specific version requirement for any package make sure you pin it at the package manager level.

Basic commands

1
2
3
4
sudo apt update
sudo apt upgrade
sudo apt install software-properties-common apt-transport-https wget zsh git vim tree
sudo apt autoremove

ZSH setup

  • ZSH is an extended Bourne shell.

  • Together with Oh-My-ZSH it provides a delight full dev experience.

  • I personally like to use the agnoster theme from ohmyzsh with the plugins git common-aliases zsh-syntax-highlighting zsh-autosuggestions

  • For Ubuntu terminal make sure you got to Terminal -> Preferences -> <Your Profile> -> Colors and uncheck the Use system colors option so that the theme colors are used in the terminal.

  • Ohmyzsh standard plugins do not require explicit installation. Community plugins require some installation. Plugins links and installation guides are:

My simple ~/.zshrc file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
export ZSH="/home/username/.oh-my-zsh"

ZSH_THEME="agnoster"

# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git common-aliases zsh-syntax-highlighting zsh-autosuggestions)

source $ZSH/oh-my-zsh.sh

export HISTSIZE=100000
export SAVEHIST=100000

SSH key-gen and add to repositories

Interacting with multiple hosted git repositories is much smoother when using SSH keys.

Specific git hosts provide their guides to do this, e.g: GitHub ssh key gen guide .

General setup includes:

  • Generate a ssh key pair on a machine.
  • Add it to your git host profile settings.
  • Test ssh access to git
1
2
3
4
5
6
ssh-keygen -t ed25519 -C "email@example.com"
ssh-keygen -t ed25519 -C "username@example.com"
xclip -sel clip < ~/.ssh/id_ed25519.pub

# Add your git host (GitLab/GitHub/BitBucket, etc) URL for git-example.com
ssh -T git@git-example.com

Basic software install

  • VSCode. General post for VSCode helpers is here
  • Slack
  • Zoom
  • Hugo . Hugo is fantastic website building framework. Awesome for static sites.

Programming language settings

  • Go. Basic introductory primer is present here .
  • Python. Getting started link

Pull your code and go exploring :)