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?
Oldest comments (63)
And honestly speaking I sometimes have to make a list for the rest but still forgot some tools. My must-haves are usually
I'm sure I've forgotten some but they come as the need arises π
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.
That's interesting! Never thought of that...remote workspace solutions
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
Awesome! Thanks for sharing. Would definitely give it a try
Intriguing!
Ikr
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?
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
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?
I think you are refering to coder.com ?
Hadn't heard about code.com, no I meant Gitbhub Codespaces github.com/features/codespaces
Oh yeah. I haven't tried it yet, as it was (is still ?) in beta
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 :)
Making sure to take account of relatively recent changes to Docker's licensing model :-)
The first tool/software you setup?
Probably Homebrew!
your must-have tools
Hard to say but VSCode or Chrome!
I wrote an article about it How I setup my Development Environment on macOS 2022 Edition
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
Yes I have a lot installed but really i'm only using Brave each day and for testing Firefox, Chrome and Safari usually.
Homebrew, and I have a script which I use to install my dotfiles :)
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.
this
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.
Fantastic list! stow is essential for setting up a new machine!
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 :)
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
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.
π not what I was expecting for sure
I use a keyboard lock program so I can lock the keys when I clean the keyboard canβt stand a dirty laptop.
My keyboard lock program is the power button
I use several computers and all the major operating systems, so my setup can get crazy sometimes, however, I've found this to be rather useful...
VSCode has awesome support for remote development if you have multiple machines and want to use one (or more of them) as a potential dev server: code.visualstudio.com/docs/remote/ssh
Many of the extensions using these tools will run on the remote server, and you can use a low-end machine for VSCode, and it will run your linter and various extensions, on the remote machine.
It comes in really handy for development servers you may want to run in the cloud somewhere (i.e. on DigitialOcean / Vultr), and you can just code right on top of them.
It's also useful if you just want to use another local computer to hack around on some code stored on another computer on your LAN.
After the initial setup, the plugins you have configured to work on the remote dev server will be synced to the client servers on connect, for the duration of that session.
It feels like you're not even using a remote machine, plus it maps the remote ports you use to localhost.