DEV Community

Cover image for I left Windows for Ubuntu. Here’s everything I configured and what I learned
Melia Log
Melia Log

Posted on

I left Windows for Ubuntu. Here’s everything I configured and what I learned

I left Windows for Ubuntu. Here’s everything I configured and what I learned

I recently decided to leave Windows and switch to Ubuntu for my development environment.

Not because Windows is bad, but because I wanted:

  • more control
  • a cleaner dev workflow
  • and to really understand what’s happening under the hood

This article is not a tutorial from someone who knows everything.

It’s a real dev journey: things I discovered while doing, tools I didn’t even know existed before, and why Ubuntu honestly surprised me (in a good way).


What I configured after installing Ubuntu

Installing and configuring Git

First thing first: Git.

Install Git

sudo apt install git
Enter fullscreen mode Exit fullscreen mode

Configure global variables

git config --global user.name "your_name"
git config --global user.email "your_email"

# Check configuration
git config --global --list
Enter fullscreen mode Exit fullscreen mode

At this point, Git is ready.


Java setup with SDKMAN (my first discovery)

Before Ubuntu, I had no idea that something like SDKMAN existed.

What SDKMAN allows you to do :

  • Install multiple JDK versions (8, 11, 17, 21…)

  • Switch versions globally or per project

  • Choose different distributions (Temurin, Zulu, Oracle, GraalVM…)

Install SDKMAN

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Enter fullscreen mode Exit fullscreen mode

Check installation

sdk version
Enter fullscreen mode Exit fullscreen mode

List available Java versions

sdk list java
Enter fullscreen mode Exit fullscreen mode

Install Java 21 (example)

sdk install java 21.0.9-tem
Enter fullscreen mode Exit fullscreen mode

Switch Java version

For current session :

sdk use java 21.0.9-tem
Enter fullscreen mode Exit fullscreen mode

Set as default :

sdk default java 21.0.9-tem
Enter fullscreen mode Exit fullscreen mode

Verify :

java -version
#Or
javac -version
Enter fullscreen mode Exit fullscreen mode

Mind blow moment :

I didn't know switching Java versions could be this clean and simple.

Node.js with NVM (another discovery)

Same story here.
I here about NVM before... but never really used it properly.

What is NVM?

NVM = Node Version Manager

It allows you to :

  • Install multiple Node.js versions
  • Switch between them per project
  • Avoid breaking old projects

Why it matters (real case)

  • Angular 20 ->requires Node ≥ 20
  • Older projects ->Node 18 or 16

Without NVM:

  • uninstall / reinstall Node

  • risk breaking projects

With NVM :

nvm use 18
#or
nvm use 20
Enter fullscreen mode Exit fullscreen mode
  • No conflict
  • No sudo
  • No system break

Install NVM

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

Close and reopen terminal, then :

nvm --version
Enter fullscreen mode Exit fullscreen mode

Install Node 20

nvm install 20
nvm use 20
nvm alias default 20
Enter fullscreen mode Exit fullscreen mode

Verify :

node -v
npm -v
Enter fullscreen mode Exit fullscreen mode

PostgreSQL server + client

Install PostgreSQL

sudo apt update
sudo apt install postgresql-18 postgresql-client-18 postgresql-contrib
Enter fullscreen mode Exit fullscreen mode

Check service

sudo systemctl status postgresql
Enter fullscreen mode Exit fullscreen mode

Change postgres password

sudo -u postgres psql
Enter fullscreen mode Exit fullscreen mode

Inside PostgreSQL:

ALTER USER postgres WITH PASSWORD 'your_new_password';
Enter fullscreen mode Exit fullscreen mode

PgAdmin 4

Installed directly via Ubuntu App Center.
Simple. Clean. No headache.

Postman via Snap

sudo snap install postman
Enter fullscreen mode Exit fullscreen mode

Launch:

postman
Enter fullscreen mode Exit fullscreen mode

Login all my collections synced automatically.


SSH Keys (BIG learning moment)

Before Ubuntu, I used to clone repos using HTTPS URLs.

Then I tried to clone my own repository, and GitHub asked for authorization.

That’s when I discovered SSH keys.

Create SSH key

ssh-keygen -t ed25519 -C "your_github_email"
Enter fullscreen mode Exit fullscreen mode

Start SSH agent and add key

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Enter fullscreen mode Exit fullscreen mode

Copy public key

cat ~/.ssh/id_ed25519.pub
Enter fullscreen mode Exit fullscreen mode

Add key to GitHub

  • GitHub -> Settings

  • SSH and GPG keys

  • New SSH key

  • Paste key

  • Save

Test connection

ssh -T git@github.com
Enter fullscreen mode Exit fullscreen mode

If you see:

Hi username! You've successfully authenticated...

SSH works.

Now I clone repositories without any access issues.


IDEs and account sync

  • IntelliJ IDEA -> App Center

  • VS Code -> App Center

  • GitHub account sync -> plugins, settings, themes restored automatically.

Final thoughts

What really surprised me is how simple everything feels on Ubuntu.

With:

  • a few commands

  • clear tools

  • no weird installers

Things that used to take a lot of time on Windows were done in minutes.

And most importantly:

I understood what I was installing.

This transition didn’t just change my OS
it changed how I see my dev environment.

Top comments (0)