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
Configure global variables
git config --global user.name "your_name"
git config --global user.email "your_email"
# Check configuration
git config --global --list
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"
Check installation
sdk version
List available Java versions
sdk list java
Install Java 21 (example)
sdk install java 21.0.9-tem
Switch Java version
For current session :
sdk use java 21.0.9-tem
Set as default :
sdk default java 21.0.9-tem
Verify :
java -version
#Or
javac -version
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
- No conflict
- No sudo
- No system break
Install NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Close and reopen terminal, then :
nvm --version
Install Node 20
nvm install 20
nvm use 20
nvm alias default 20
Verify :
node -v
npm -v
PostgreSQL server + client
Install PostgreSQL
sudo apt update
sudo apt install postgresql-18 postgresql-client-18 postgresql-contrib
Check service
sudo systemctl status postgresql
Change postgres password
sudo -u postgres psql
Inside PostgreSQL:
ALTER USER postgres WITH PASSWORD 'your_new_password';
PgAdmin 4
Installed directly via Ubuntu App Center.
Simple. Clean. No headache.
Postman via Snap
sudo snap install postman
Launch:
postman
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"
Start SSH agent and add key
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Copy public key
cat ~/.ssh/id_ed25519.pub
Add key to GitHub
GitHub -> Settings
SSH and GPG keys
New SSH key
Paste key
Save
Test connection
ssh -T git@github.com
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)