(from the internet)

I’m a MacOS guy for several years until my MBP died on me last year and haven’t got a replacement for it. However, my 8 to 5 job revolves around Windows. Recently, Win10 has been working great for me. But, I always wanted a development environment that is different from what I use every day at work, change of scenery of some sort. So for 3 to 4 months I was reviewing the different flavors of Linux has to offer. Ubuntu has always got a soft spot for me, I have been on and off the platform since 2006. But the current interface has put me off. Either my system lags using it or I just need a more efficient OS. I’m not into games or the fancy graphics stuff anyway, I just need a reliable development machine. Eventually, I have decided to go with Xubuntu, an Ubuntu flavor utilizing a more resource friendly xfce interface. I never looked back since then.

Fast forward to now, I’m moving to the Focal Fossa 20.04 LTS release. I finally found time to migrate and wanted to start with a clean install. And with that, I have to re-install everything I needed. Been looking for a way to automate this process but for now I’ll go the manual route.

What do I need ?
As I have mentioned, I just need my development tools available and ready to roll. Let me list them down:

The foundations
- gcc
- wget
- curl
- git

The dev kits
- dotnet
- python
- ruby

Editors and others
- vscode
- oh my zsh
- typora
- azure cli
- powershell core

Lets get down to business

First order of business is to get all the foundations setup. Without these, I cant seem to progress any further.

  • gcc — the GNU Compiler Collection that includes a lot of libraries for the basic languages in Linux (e.g. C , C++)
# check if you have gcc installed
$ gcc — version
# install if needed, this will include gcc, g++ and make
$ sudo apt update
$ sudo apt install build-essential
# install the manual
$ sudo apt-get install manpages-dev
  • wget — this is a command-line utility for downloading files from the web. In most cases, if you will be install other packages later on, wget will come in handy.
# check if you have wget installed
$ wget — version
# install if needed
$ sudo apt update
$ sudo apt install wget
  • curl — is a command-line utility for transferring data from or to a remote server and just like wget, you will be needing this later if you intend to install additional packages.
# check if you have curl installed
$ curl — version
# install if needed
$ sudo apt update
$ sudo apt install curl
  • git — in this era of open source and gitlabs and githubs, you wont survive without git!
# check if you have git installed
$ git — version
# install if needed
$ sudo apt update
$ sudo apt install git

Then we go to the programming languages I use.

  • dotnet — I am a developer that mostly used Microsoft technology ( dotNet, C#, VB.Net and many more) for my entire developers life. I have longed for using C# in Linux since the day of Mono 1.0. I am just glad with this new dotnet revolution embracing cross platform development.
# check if you have dotnet installed
$ dotnet — version
# install here
# add the Microsoft package signing key to your list of trusted keys and # add the package repository
$ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
# install the SDK
$ sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-5.0
#install the runtime
$ sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-5.0
  • python — Next to dotnet, python is my next go to language. Python usually comes out of the box with latest Xubuntu. But if you need to, see the steps below.
# check if you have python installed
$ python — version
# if you must
$ sudo apt update
$ sudo apt install python3.8
  • ruby — Not for actual development purpose for now, I just need it for my blog. Trying out Jekyll as I move on from blogspot.
# check if you have ruby installed
$ ruby — version
# if you must
$ sudo apt update
$ sudo apt install ruby-full
  • more? — Indeed! Rust and Golang to follow.

Now, we go to my tools.

  • vscode — My editor of choice. I used the Software app to install VSCode.
  • oh my zsh — I work with the terminal every now and then, it is just fitting to use “oh my zsh” with “agnoster” as my cli.
# make sure zsh is installed
$ zsh — version
# install if you must
$ sudo apt-get update
$ sudo apt upgrade
$sudo apt install zsh# install the needed powerline font
sudo apt-get install powerline fonts-powerline
# clone and install oh-my-zsh
$ sh -c “$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)”
# customize your theme, I use agnoster :)
  • typora — Again, for my blog!
$ wget -qO — https://typora.io/linux/public-key.asc | sudo apt-key add -# add Typora’s repository
$ sudo add-apt-repository ‘deb https://typora.io/linux ./’
$ sudo apt-get update
# install typora
$ sudo apt-get install typora
  • azure cli— For my cloud works. Azure has been my choice, though, I have the option to use Alibaba Cloud as well.
$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
  • powershell core — As I have mentioned before, I’m a MS guy, so.
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt -y install powershell

What’s next?
For basic development work I can roll with the setup above. However, my list above is not complete. Obviously, docker is missing. For my machine, I chose not to install a database directly on the system. I will go with a cloud approach or a container. But for now, I’m all set.

How about you? Whats on your Linux backpack?

This article is also posted on my personal blog.

Turns coffee into codes. Definitely #kafenated!