DEV Community

Cover image for Setting up a new dev machine
𝐁𝐚𝐛𝐢 ✨
𝐁𝐚𝐛𝐢 ✨

Posted on

Setting up a new dev machine

As developers we have had to set up our development environment from scratch at least once.

Whether it's after getting a new machine or switching your operating system (as I have done a couple if times 😂) could you share

  • The first tool/software you setup?

  • your must-have tools and environment variables?

Top comments (64)

Collapse
 
deozza profile image
Edenn Touitou • Edited

I was so tired to set up dev environment because I was switching computers, changing os, ... that I now use remote workspace solutions.

Pick a server. Something light with 4g of ram and 64g of ssd should do the trick. Install on it docker and docker compose (to create tailored dev environment related to a dev project), portainer (to manage the containers), nginx-swag (to reverse proxy the containers to clean urls), micro (a cool text editor in the command line), fish (to have a better cli with autocompletion and stuff), and then your favorite editors. It could be code-studio, if you are a visual studio user. Or the whole jetbrains suite thanks to jetbrains projector (mind that 4g of ram might not be enough as jetbains IDE are resource black holes).

Now, you have the same dev environment accessible from anywhere, from any device. Laptop, desktop, smartphone, tablet, xbox one x, you name it. As long as it has a wifi connection and a browser.

If you don't want to open source it and handle all of that yourself, you could use external solutions like gitpod.

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

That's interesting! Never thought of that...remote workspace solutions

Collapse
 
deozza profile image
Edenn Touitou

It's developping quite quickly recently. Thanks to covid and remote working. You can even build a whole remote workspace (and not only for development) with solutions like kasm. But it's more tailored towards big companies. There you will have a full ubuntu experience directly from the browser

Thread Thread
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Awesome! Thanks for sharing. Would definitely give it a try

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

Intriguing!

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Ikr

Collapse
 
leob profile image
leob

Yeah your coding environment completely "in the cloud" and accessible from anywhere with a thin/dumb terminal (can be almost anything - desktop, laptop, tablet, phone - although the last one is probably not very practical) - that's the holy grail ... doesn't VSCode already have a complete "spaces" solution for this?

Collapse
 
deozza profile image
Edenn Touitou

I think you are refering to coder.com ?

Thread Thread
 
leob profile image
leob

Hadn't heard about code.com, no I meant Gitbhub Codespaces github.com/features/codespaces

Thread Thread
 
deozza profile image
Edenn Touitou

Oh yeah. I haven't tried it yet, as it was (is still ?) in beta

Thread Thread
 
leob profile image
leob • Edited

Well that probably means it's free lol, so that's good :) ... if it would be alpha then I'd think twice (typically you're then constantly busy working around problems and issues), but most of the time "beta" means it's almost perfect :)

Collapse
 
jmccabe profile image
John McCabe

Making sure to take account of relatively recent changes to Docker's licensing model :-)

Collapse
 
alesbe profile image
alesbe

Seems like a good solution! The experience is the same as using a local machine? You don't notice any delay or screen resolution issues?

Collapse
 
deozza profile image
Edenn Touitou

The experience is the same. From times to times, projector is a bit laggy because of how heavy it is compared to code-server. But otherwise, 99% of the time you won’t feel a difference

Collapse
 
gochev profile image
Nayden Gochev • Edited

I do wsl2 backup ... and then just restore ;)

VOALA :+)

More info :

I am using Windows yes but all development is inside wsl2.

so I just do :

C:> wsl.exe --export Ubuntu c:\data\ubuntu.tar

copy the ubuntu.tar to the other machined and just do

C:> wsl.exe --import UbuntuOrOtherName d:\wsl\UbuntuDataFolder c:\data\ubuntu.tar

thats all :)

Collapse
 
shawncrigger profile image
Shawn Crigger

That’s awesome i was unaware you could do that but this year has been the first Microsoft company I’ve worked for in 25yrs. I’m very impressed with Microsoft compared to say XP or Vista. They are really spending some money to become dev platform of choice

Collapse
 
sherrydays profile image
Sherry Day

your must-have tools

Things to clean your keyboard and screen!

Maybe it's not what folks were looking for, but if you're starting fresh, you have a chance to keep this one clean.

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

😂 not what I was expecting for sure

Collapse
 
shawncrigger profile image
Shawn Crigger

I use a keyboard lock program so I can lock the keys when I clean the keyboard can’t stand a dirty laptop.

Collapse
 
weasnerb profile image
Brian Weasner

My keyboard lock program is the power button

Collapse
 
wrench1815 profile image
Hardeep Kumar • Edited

The first tool or software that i setup is ofcourse operating system. There's no better tool than it. Setting it up as per my needs is what I first do. And it also helps knowing it better.

Must have tools

  • a terminal
  • vscode
  • nvim(linux)
  • insomnia
  • Vivaldi browser

Language specific tools

  • poetry(python)
  • yarn (node)
  • nvm(linux)

Linux specific

  • zsh
  • oh my zsh
  • powerlevel10k
Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

This is neatly laid out.

I have to ask. You're not a fan of chrome browser or Firefox?
Also why'd you pick out Vivaldi? (first time hearing it 😂)

Collapse
 
wrench1815 profile image
Hardeep Kumar

Ehhh it's just i had to install too many extensions for debugging css then the customizations were not enough for me. Accidentally came across Vivaldi. It's got all the css debugging tools i need, got inbuilt screenshot, note taking, emails tracking, great deal of customizations and on top of that, it comes with a nice tab stacking feature which i really love a lot.

Collapse
 
shawncrigger profile image
Shawn Crigger

Since I’m working for a windows company now it took me awhile to find the tools that give me similar experiences as Mac. I would also add Powertools, Windows Terminal Preview Edition, WSL2, VSC with Tabnine extension and RemoteSSH

Collapse
 
devops_bro profile image
Devops Bro

I actually love the process of setting up a new dev computer. It’s the perfect time to dump old apps and try new apps.

Collapse
 
katafrakt profile image
Paweł Świątkowski

this

Collapse
 
andrewbaisden profile image
Andrew Baisden
Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Just went through it. It's a great write up thanks for sharing.

I couldn't help but notice you use a lot of browsers

Collapse
 
andrewbaisden profile image
Andrew Baisden

Yes I have a lot installed but really i'm only using Brave each day and for testing Firefox, Chrome and Safari usually.

Collapse
 
jeremyf profile image
Jeremy Friesen

I wrote a Runbook to help me remember what I want on my machine, and I have it as part of my dotzshrc repository:
github.com/jeremyf/dotzshrc/

I prefer documentation because I'm not often building a machine and I can share these things with others.

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Just checked it out. It's dope! The Readme file is concise and comprehensive. Thanks for sharing!

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨
  • The first software I always install is the chrome browser. 🤷🏽 It's usually my default 😊

And honestly speaking I sometimes have to make a list for the rest but still forgot some tools. My must-haves are usually

  • node, npm, VS code (with favorite plugins and extensions), git, intelliJ, jdk, xampp, postman

I'm sure I've forgotten some but they come as the need arises 😂

Collapse
 
briandoesdev profile image
Brian Heidrich

I actually use Vagrant to manage my dev environments. I have a repo for my different dev environments that has my Vagrantfile. So any time I reinstall Windows or reset my Macbook I only need to install Vagrant and VMWare Workstation Pro.

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Thanks for sharing. First time hearing about Vagrant.

I have a lot to learn!

Collapse
 
anasrin profile image
anasrin

git

not only for repository project but also for repository software configuration / setting file such as dotfiles in *nix term.
this is make set up more easier, just store your configuration as a git repository and upload on git hosting like GitHub and just clone on your new system / machine.

stow

stow is symlink farm manager, managing dotfiles symlink folder.
simple yet powerful.

docker

for me docker is like lightweight and fast virtual machine or local VPS, with docker I can make Dockerfile (basically just bunch of command to install dependency and pack it into an image file) and I don't need to worry about missing any dependency.
just need to binding port and project folder and you ready to develop and testing.
pretty much my workflow is using docker.

tmux

tmux is a terminal multiplexer, tmux allow you to create split pane, window, and many more without depend on your terminal.
I also install tmux on docker image.

neovim

my text editor of choice, run on terminal, simple, lot of feature such as plugin and LSP.
I also install neovim and LSP (depending on project stack) on docker image and run from docker container.

lazygit

simple terminal UI for git commands.
work great in tmux by setting shortcut to popup lazygit and I install lazygit in docker too.

alacritty

just a simple terminal emulator, nothing more.
great to combine with tmux.

firefox

my browser of choice, not resource intensive and pretty good for reading (documentation for most of the time) and keep connect with people.
using firefox with difference profile just to make it easy to organize.

pretty much my workflow is on terminal.

Collapse
 
waylonwalker profile image
Waylon Walker

Fantastic list! stow is essential for setting up a new machine!

Collapse
 
k_penguin_sato profile image
K-Sato • Edited
  • The first tool/software you setup?
    Probably Homebrew!

  • your must-have tools
    Hard to say but VSCode or Chrome!

Collapse
 
babib profile image
𝐁𝐚𝐛𝐢 ✨

Everybody seems to have custom scripts for setting up their workspace 😅

Collapse
 
hijoe profile image
HiJoe

This is the way.

Collapse
 
nikfp profile image
Nik F P

I'm not a full time dev, so my machines have to pull double duty for other work. Related to dev I do the following:

First tools to set up:

  • VS Code
  • Docker
  • WSL2 (I use Windows machines)

Then within WSL2:

  • Git
  • Node Version Manager
  • Oh-My-Posh
  • PNPM (the only globally installed Node package I use)

Pretty much everything else I could install for local development (postgres, redis, etc) I run with Docker containers instead, keeps my local installs list short and clean.

Not required but I freaking love it: Windows Terminal. It's configurable and it just works.

Collapse
 
anasrin profile image
anasrin

same thing, install everything on docker image

Collapse
 
waylonwalker profile image
Waylon Walker

I have an ansible playbook that installs everything I need for my development workflow. I have a single script that will setup ansible and run through the playbook. I keep it in my dotfiles.

curl https://raw.githubusercontent.com/WaylonWalker/devtainer/main/bootstrap | bash
Enter fullscreen mode Exit fullscreen mode
Collapse
 
unsungnovelty profile image
Nikhil • Edited

I have been playing with Nix package manager which provides reproducibility. And Nix package manager can be installed on most Linux distros and MacOS. This means you don't necessarily need to use NixOS to take advantage of Nix package manager. Just install Ubuntu, Debian, Arch or in MacOS and install Nix package manager. Another thing is that once you have setup nix and have a nix configuration file, all you have to do is run a command to reproduce the same result in a system. No more starting from scratch.

Another cool thing I am yet to play with is that you can use multiple versions of a package and use each version independently with nix package manager. This means AFAIK, I can have two versions of nginx and use both versions independently at the same time.

Nix repo have most of the apps necessary for a developer. IMO lesser packages than Arch repos including AUR and larger than a lot of the Linux distros.I can get latest stable packages like other rolling distros with unstable channel of nix. This will be my future. I would recommend checking it out -> nixos.org/learn.html.