Table of Contents


Computer and Windows

I recommend using a computer with the following specifications. I use a Dell XPS 13 which I think is reasonably priced.

  • RAM: 16 GB
  • Processor: Intel i7
  • Disk: 500 GB

You should install Windows 10 Pro so that the Hyper-V virtualization features are enabled (used for Docker). If you have Windows 10 Home, then go to your computer settings and click the ‘upgrade your edition of Windows’ link.

windows


Windows Subsystem for Linux

Run bash on Windows.

Installation

Enable Windows Subsystem for Linux.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Install Ubuntu.

References


Dropbox

:cloud: storage. Dropbox is great for scanning documents and for housing your dev config so you can keep the same environment on different computers (e.g., personal and work).

Installation

Navigate to https://www.dropbox.com/install and install for your system.

Set up a ‘Dev’ directory at the top level of your Dropbox.

References


Scoop

Package manager for Windows.

Installation

Set the execution policy.

Set-ExecutionPolicy RemoteSigned -s CurrentUser

Set the Scoop install location.

[environment]::setEnvironmentVariable('SCOOP','C:\Users\<user>\Dropbox\Dev','User')

You can let scoop install into it’s default directory but I highly recommend installing into a cloud storage directory so you don’t ever have to set up again.

Install scoop.

iex (New-Object net.webclient).downloadstring('https://get.scoop.sh')

Install sudo.

scoop install sudo

This allows you to run a command as an ‘Administrator’.

Add extras and versions buckets.

scoop bucket add extras
scoop bucket add versions

Usage

Search for packages

scoop search vim

Install a package

scoop install vim

References


Chocolatey

Another package manager for Windows. Useful for packages that cannot be installed with scoop.

Installation

Set the execution policy.

Set-ExecutionPolicy Bypass -Scope Process -Force

Open Powershell as an ‘Administrator’ and install choco.

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Usage

Install a package

sudo choco install -y docker-desktop

References


Vim

Text editor to speed up your typing.

Installation

scoop install vim

Usage

Open vim in current directory.

vim .

Open a file in vim

vim ./my-file.txt

Vimium

Google Chrome extension to speed up your Googling. Use Vim keybindings to navigate around the web.

Installation

Head to Vimium homepage and click the ‘Install’ button. Or search for ‘Vimium’ in the Chrome Web Store and install from there.

Usage

  • j,k: used to scroll up and down respectively.
  • d,u: used to page up and down respectively.
  • f-{other}: used to show links on page and then navigate to {other} which was the shown link.
  • ?: show the rest of the keybindings and other help.

Visual Studio Code

IDE to speed up your development.

Installation

scoop install vscode

Usage

Open current directory in VS Code.

code .

Open file in VS Code.

code ./my-file.txt

References


Git

Version control for champs.

Installation

scoop install git

Usage

Initialize a new repository.

mkdir my-repo
cd my-repo
git init

Add a file to track.

echo "hello" > hello.txt
git add hello.txt

Commit changes.

git commit -m 'added hello.txt'

Docker

Container management.

Installation

Install Docker Desktop.

sudo choco install -y docker-desktop

Open the start menu and select ‘Docker Desktop’ to start the Docker daemon.

Usage

View running containers

docker ps -a

View local images

docker images

Pull image from DockerHub

docker pull bash

Run a container

docker run -it bash

Cmder

Portable console emulator.

Installation

scoop install cmder

References


Terminus

Electron based terminal.

Installation

Install Terminus

scoop bucket add extras
scoop install terminus

Install Fira Code font.

sudo choco install -y firacode

Update the ‘Font’ family in the Terminus settings.

terminus-font

Next, create a profile to work with cmder.

terminus-new-profile

Update the profile to argument to use Invoke-Expression $env:CMDER_ROOT\vendor\profile.ps1 after the Invoke-Expression.

Then set this profile as the default.

terminus-set-default-profile

Resources


posh-git and oh-my-posh

Better prompt.

Installation

vim $env:CMDER_ROOT\config\user_profile.ps1
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

References


dotnet

Cross platform toolchain for developing .NET applications.

Installation

scoop install dotnet-sdk

Usage

Create a new F# console application

dotnet new console -lang F# -n my-fsharp-app

FAKE

A DSL for build tasks and more.

Installation

First install the dotnet CLI. Next, install FAKE as a global tool.

dotnet tool install fake-cli -g

Usage

Run a FAKE script (default is build.fsx)

fake build

Resources


Node

A JavaScript runtime.

Installation

First install nvm-windows.

scoop install nvm

List available versions.

nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    12.0.0    |   10.15.3    |   0.12.18    |   0.11.16    |
|   11.14.0    |   10.15.2    |   0.12.17    |   0.11.15    |

Install the latest LTS.

nvm install 10.15.3

Use installed version.

nvm use 10.15.3

Usage

node
> var x = 10;
undefined
> var y = 5;
undefined
> console.log(x + y);
15
undefined
> .exit

Resources


Python

Easy to read, learn, use programming language.

Installation

scoop install python

Usage

Check version.

python --version

Run code in shell.

python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 1
>>> y = 2
>>> x + y
3
>>>

References


Pipenv

Python package management.

Installation

First make sure Python is installed (see Python above).

pip install --user pipenv

Check the installation.

pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where             Output project home information.
...

Usage

Create a virtual environment.

mkdir my-project
cd my-project
pipenv --python 3.7

Install a package

pipenv install pandas

References


Go

Fast, productive, open source programing language.

Go is great Windows as it can be used as a substitute for bash scripts.

Installation

scoop install go
go version

Usage

mkdir my-project
vim my-project/main.go
// my-project/main.go

package main

import "fmt"

func main() {
	fmt.Println("Hello, World")
}

Run the program.

go run .\my-project\
Hello, World

Build the program.

go build .\my-project\

Run the compiled program.

.\my-project
Hello, World

Resources


Jupyter Lab

Web based Notebook/REPL.

Check out my dedicated post on Jupyter for a more advanced setup.

Installation

First create a directory, e.g. notebooks.

mkdir notebooks
cd notebooks

Use Pipenv to create a virtual environment (see Pipenv above.).

pipenv --python 3.7
pipenv install jupyterlab

Usage

Start Jupyter

pipenv run jupyter lab

Install Jupyter VIM extension (I highly recommend).

jupyter labextension install jupyterlab_vim

Kubernetes

Kubernetes is an open-source container-orchestration system. You can install local cluster using kind.

Installation

Install go.

scoop install go

Install kind.

GO111MODULE="on" go get sigs.k8s.io/[email protected]

Update the context name in ~/.kub/kind-config-kind to kind.

contexts:
- context:
    cluster: kind
    user: kubernetes-admin
  name: kind

This just makes it easier to switch between contexts. Totally optional.

Usage

Create a cluster.

kind create cluster

Append the kind config to the KUBECONFIG environment variable.

vim $env:CMDER_ROOT/config/user_profile.ps1
$env:KUBECONFIG = "C:\Users\<user>\.kube\config;C:\Users\<user>\.kube\kind-config-kind"

Switch to the kind cluster.

ktx set kind

You will need to install ktx to run this command.

List pods.

kubectl get pods --all-namespaces

Resources


kubectl

Kubernetes CLI

Installation

scoop install kubectl

Configuration

Set the KUBECONFIG environment variable.

vim $env:CMDER_ROOT/config/user_profile.ps1
New-Alias k kubectl
$env:KUBECONFIG = "C:\Users\{username}\.kube\{my-config};"

Usage

kubectl get pods 

kubectxwin

CLI for configuring Kubernetes contexts

Installation

Clone the repository.

git clone https://github.com/thomasliddledba/kubectxwin.git

Add the executable to the PATH.

vim $env:CMDER_ROOT\config\user_profile.ps1
$env:Path += ";C:\{path to kubectxwin repo}\bin"

Create an alias.

vim $env:CMDER_ROOT\config\user_profile.ps1
New-Alias ktx kubectxwin

Usage

View contexts

ktx ls
docker-for-desktop
other-context

Change context

ktx set docker-for-desktop
Switched to context "docker-for-desktop".

kubenswin

CLI for configuring Kubernetes namespaces

Installation

Clone the repository.

git clone https://github.com/thomasliddledba/kubenswin.git

Add the executable to the PATH.

vim $env:CMDER_ROOT\config\user_profile.ps1
$env:Path += ";C:\{path to kubenswin repo}\bin"

Create an alias.

vim $env:CMDER_ROOT\config\user_profile.ps1
New-Alias kns kubenswin

Usage

View namespaces

kns ls
* docker
kube-public
kube-system
openfaas

Change namespace

kns set openfaas
Context "docker-for-desktop" modified.
Active namespace is openfaas in context docker-for-desktop

Helm

Package manager for Kubernetes.

Installation

scoop install helm

Usage

Install a chart (read:package).

helm install stable/postgresql --name my-postgres

List charts.

helm list

Show status of chart.

helm status my-postgres

Lightshot

Screen capture tool. (Used for all the images in this post.)

Installation

Install Lightshot by downloading here.

Usage

Take a screen shot by pressing the PrtScr button on your keyboard. You can then select an area on your screen, add lines or arrows, and save or copy the image to your clipboard.

Resources


ScreenToGif

Screen capture tool, but GIFs :tada:!

Installation

scoop install screentogif

Make sure you have added the extras bucket. scoop bucket add extras.

Usage

Start ScreenToGif.

screentogif

Drag the window around the area you would like to record and press F7 to start recording. Press F8 to stop recording.

screen-to-gif

Resources


Thats all folks! :smile: Let me know if you have any other suggestions in the comments below. Always looking to try out new tools!