Coder Social home page Coder Social logo

awesome-dev-environment's Introduction

Info
This readme is optimized to be rendered on dark mode in Github. So if you want to have the best experience, you can switch the dark mode on.

my development setup

This development setup is a very opinionated view with a lot of opinions and unsupported claims. Feel free to raise an issue if you want to provide alternative perspectives. But maybe you find here tools that you are not aware of and would like to explore... If you use a tool that needs to be added to my development setup, please create a PR. ๐Ÿ˜‰

jetbrains IDE

JetBrains has beautiful integrated development environments (IDE) that you can use to build nice products. At first they might be a bit overwhelming, but after a while you will learn all bells and whistles (just take your time). If you are a polyglot programmer, then it can be helpful to have a consistent experience with fixed general keyboard shortcuts.

The following IDE are great for specific tasks:

icon languages download link
c / c++ / rust download
c# download
java download
python download
javascript / typescript download

The community versions are more basic than the ultimate versions. The ultimate versions unlock for example also simple integration with all kind of frameworks.

How to choose the right IDE for your job. That's actually very simple. You take the project and if it holds for instance mainly java files, then you would opt for Intellij. If you need also typescript support for a small part in that code base, then Intellij can be extended by plugins to unlock also support for typescript. It is up to your preference how you want to use the Jetbrains IDE, the rationale is that the IDE will adapt to you as a developer (see also Fleet it shows how Jetbrains see their role to support the developer).

visual studio code

This tool from Microsoft can be the swiss army knife for a developer. It can be used as a text editor, but can also be scaled up to a fully-fledged IDE. It just depends on your preference.

I refrain myself to install too many modules, so it doesn't slow down. I commonly use it as a text editor on steroids. It is also a great IDE for developing powershell scripts.

installation instructions | documentation | sources

java

When you are building software with the programming language Java. There are a lot of options to choose from, see for example the list on java 21: https://foojay.io/almanac/java-21/

Be careful with the Oracle Java. This distribution is not allowed to be used freely and licences can be expensive.

My general advice would be to use Eclipse Temurin.

windows terminal

While working as a developer you often would like to have access to the commandline. For Windows users Microsoft has developed a great terminal to work with. Windows 11 has windows terminal installed by default. But for windows 10 you need to install it yourself.

installation instructions | documentation | sources

wsl - windows subsystem for linux

If you write software for linux on a windows pc, then you might want to have access to linux as well. On windows there is a tool called wsl2 with great integration into the windows operating system.

installation instructions | documentation

linux distro

For years I've used ubuntu as a desktop operating system to do all of my work. That originates from the time when windows blue screens were very frequent and I decided to use something more stable. I started with linux from scratch, even tried mandrake etc. Used also Fedora for a while. But when ubuntu decided to focus on a stable desktop I switched after a lot of distro hopping to make ubuntu my default desktop. When I need to choose between distros for server use, I think that RedHat Linux and Ubuntu Server are the best choices to make. But my personal favorite would be Ubuntu Server at the moment.

Canonical and Microsoft are working together to improve the usability linux on windows, which resulted in wsl2. So I think it might be also a good bet for the longer run.

To install ubuntu in wsl, please go to windows store and search for ubuntu.

version control - git

Git is the first choice for me when selecting a version control system.

Make sure that autocrlf is switched to false. Otherwise bash scripts or linux configuration can break, see also this article. Copy-paste the following snippet to your terminal to make it happen.

git config --global core.autocrlf false

When you want to list all configuration:

git config --global -l

installation instructions | documentation | sources

containers and images

For containers and the use of images Docker is currently the default. Please be aware that when using Docker desktop that for personal usage it is free of charge, but for large corporations Docker has a software license in place.

There is a difference between docker engine (which is free to use by everyone) and docker desktop. Docker desktop makes it possible to install a kubernetes cluster on your dev machine with one press of a button.

Because there are licencing issues with docker desktop I decided to move to a different desktop tool for integration within windows. I opted for Podman desktop. Rancher desktop is the other alternative, which I haven't used yet.

There is an excellent post where these different desktop tools are compared with each other.

if you really want to use docker

After a few freezes of the docker desktop ui and initialization issues after a reboot, I decided to get rid of docker desktop and go for docker engine. The reasons for me are the following:

  1. Docker desktop doesn't add a lot of value.
  2. Windows 11 supports now systemd on wsl2, so there is one reason less to have Docker desktop installed.
  3. Potential licencing issues.

My advice would be to install WSL and use docker from WSL (follow these instructions), the reason is that docker is more or less a standard tool nowadays (although it is not my favorite from a security perspective).

After install instruction:

# run the command below to open the powershell startup script
notepad $profile   # you can also opt for any other text editor, like vim or code for example.

Copy paste the code below in the editor, save and close it.

function docker()
{
	$allArgs = $PsBoundParameters.Values + $args
	& wsl docker $allArgs
}

After this setup, you should be able to invoke the following from powershell:

docker run -it hello-world

Note Mounting volumes in powershell is not likely to work, but will work in wsl.

Podman serves as an alternative for docker it is deamonless and it doesn't need to run as root, which makes it a more secure alternative than docker.

github vs gitlab

I use Github for publishing my code in public repos and to collaborate on opensource projects. For my personal projects I use Gitlab, because I'm able to run the builds on my personal laptop and it is easy to setup.

my prompt

The default prompt for powershell is a little bit basic. You might want to know on which branch you are when you are in a folder which is tracked by git. In this case I would recommend to install posh.

I use the MesloGM Nerd Font Mono, which renders the prompt quite nicely. You can download it from github.com

Example on windows with powershell:

Example on windows with powershell

Example on wsl with bash:

Example on wsl with bash

installation instructions | documentation | sources

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.