Ask HN: What does your development stack look like in your favorite language?

62 points by appleflaxen ↗ HN
We are living in an incredibly time with respect to programming languages; the choices and diversity available are amazing. But it's often difficult to get up and running.

What's your recipe to get from a fresh OS install to the minimum viable development environment to do "real" work (not just a helloworld program) in your favorite language?

(include as much or as little detail as you want)

59 comments

[ 3.5 ms ] story [ 124 ms ] thread
1. Install Windows 10 Pro 64 (15 minutes or so, possibly shorter) and run updates.

2. Install Firefox and Chrome

3. Install Git

4. Install Visual Studio

5. New Asp.Net Core Project with MVC

6. a few hours later get bored and install Netflix and turn on the Office.

Using a fresh install of MacOS

1. Install Git

2. Install Rustup

3. Install Visual Studio Code

4. Install Rust (rls) VS Code extension

Doesn't git come with macOS
I'm pretty sure it is only installed when you open xcode for the first time and it asks you to install "additional programs".
You can just try to run git in the terminal and you'll get that prompt. You don't ever need to install Xcode.
I use macOS as a development machine but usually deploy code to a headless Ubuntu Server instance in the cloud.

Primary API server development is in Elixir since it’s just an elegant beast and can handle the vast majority of “pure” business logic.

If I need a database, in-memory store, or anything that can run in Docker I use Docker compose to run it. If it needs a bigger box or something managed in production I’ll just use whatever the hosting provider exposes (e.g. DigitalOcean’s Managed Databases).

Some stuff like bulky user data, random binary files, etc. goes to AWS S3.

Automated tests are developed alongside features and get run with GitLab’s continuous integration. This configuration usually reflects the dependencies that are run in Docker in development, but sometimes for low-impact tests I’ll just have it hit stateless production services.

Documentation gets auto-generated by Elixir’s ExDoc, or whatever language’s mainstream solution. Generating this for production documentation gets handled by GitLab CI of course.

Clients that hit the API are variable based on my needs but I usually make a React + Redux SPA or something in the Unity game engine. Web development is always set up with Gulp so that I can run and forget about whatever Webpack, Sass, and the files are doing underneath, it just updates automagically. Depending on the size of the project I often have multiple clients accessing overlapping subsets of API actions.

If this sounds like what your company is using or wants to use, please feel free to reach out at sam (at) mangane.se (I am in the USA even though the TLD is Swedish).

1. Install Windows 10

2. Install Chrome

3. Install Git

4. Install Java

5. Install Maven

6. Install IntelliJ

7. Create a new Spring Boot project using Spring Initializr

1. MacOS

2. Install Vagrant

3. Install VirtualBox

4. Install Git

5. Clone Repo

6. run "vagrant up"

1. Linux (usually Ubuntu)

2. Install Emacs.

3. Install Git.

- Set git's core.editor to Emacs.

4. Install Chromium and Firefox.

5. Write JavaScript.

1. Linux (Manjaro i3-gaps)

2. Install/update termite, neovim, git, python3, pip3 and Firefox.

3. Clone config from dotfiles repo.

4. Log in to Firefox Sync and let it install all the extensions.

For C:

Any OS

package manager => compilers, autotools, joe, dev libs, git, ...

emacs (with my .emacs since 1985)

lsp-mode with clangd, magit

(comment deleted)
1. Install nix on MacOS or Linux (or use NixOS)

2. Git checkout dotfiles, repos

3. home-manager switch (sets up personal dev environment, down to vim plugins and GTK themes)

4. nix-shell -A shell (enters the shell for my project)

5. deploy-to-minikube (builds everything and deploys locally to kubernetes on a VM... No prior setup needed)

6. push-to-prod

MacOS Mojave Xcode 10.2 Sublime Text Tower (for Git) Charles (I do iOS and MacOS)
1. MacOS

2. brew install elixir

3. mix archive.install hex phx_new 1.4.3

4. Install VSCode

5. Install ElixirLS VSCode extension

For SPA or UI

  1) Install VSCode / GIT (Mac or Windows)
  2) Install Create-React-App
  3) Start Developing the App
For Serverside APIs

  1) Install Visual Studio / GIT (on Windows)
  2) Create new ASP.NET Core Project
  3) Get started with Development
Just curious: Why do you write "GIT" in all-caps when it's not an acronym or initialism?
On MacOS:

1. Install VS Code

2. Install iTerm

3. Install RVM and setup a gemset with the latest ruby version.

4. Install Rails

5. Install Postgres.app

6. Start building

1. Install Windows (7/10 Pro 64-bit)

2. Install Java 8

3. Install Eclipse; configure eclipse.ini to use jvm.dll for launching and set max heap to not all my RAM

4. Install Tomcat; configure Eclipse to use Tomcat installation

5. Install MySQL 5.7

6. Install Toad for MySQL Freeware (no longer available; might break under MySQL 8.0 when the time comes to upgrade...)

6. Eclipse -> New Maven Project

MacOS for Ruby, Elixir, and VueJS

Clone and run thoughtbot/laptop. Install thoughtbot/dotfiles and then personal dotfiles. Done.

Windows Os.

Backend: Visual Studio Dotnet core Dapper FluentMigrator Azure SQL db Azure app services

Frontend:

Visual Studio / Code Stripped down Bootstrap/Materialize Vanilla js Chrome f12 Firebug Fiddler

- Windows 10 (What can I say I play games on my big beefy desktop and I’m not going to run another OS for coding).

I code in 2 envs

- IntelliJ Idea + IntelliJ Rust plugin (steps: install+run rustup, install IntelliJ, install Rust plug-in)

- Visual Studio + C# (steps: install vs, Done)

Mostly low level techy things like audio plugins, raytracers and similar.

For the occasional (rare) web project I do backend in one of the above and frontend in vs code, using whatever framework became most popular that morning.

(comment deleted)
macOS

1. Install Homebrew

2. Brew Install Git

3. Brew Install Emacs

4. Git Clone dotfiles

5. cd ./dotfiles && bootstrap.sh

This gives me my spacemacs config and all the MLPA packages, java, clojure, elixir, python, and a few others.

pacman -S git gcc gdb make vim gtest
I do mainly macOS and iOS development. In the last 20 years, I don't remember ever doing a fresh install because I just haven't needed to. I simply install (well update) macOS and Xcode. That's it. That's everything I need to do my development. Honestly if I needed more, I don't think I'd bother anymore. I'm amazed at the sheer number of extra crap developers on other platforms are forced to install just to be productive.
I keep all my config source controlled and have my own setup program that creates symlinks and so on, along with a "bootstrap" script that starts from a clean Mac and installs and configures everything I need:

https://github.com/kbd/setup/blob/master/bootstrap.py

There are still some things that are manual:

* some macOS settings that can't easily be set via "defaults write"

* VS Code makes it hard to source control its settings, so I use the settings sync extension, but that requires manual config of the gist id and access token. It's super frustrating that a programmer's editor makes it hard to source control its settings!

* iterm2's config system is frustrating as well, with user-level config (eg. colors) mixed in with things like window positions and "last time checked for updates" timestamps. So I pretty much set up my last good config for it and then run 'git update-index --assume-unchanged' on its config so I don't have to see the file constantly dirty in my repo.

- Visual Studio

- Resharper

- Visual Studio Code

- Python

- Node

- Windows Subsystem for Linux with Ubuntu

- AWS CLI

- MySql WorkBench

- SQL WorkBench (AWS Redshift uses the Postgres protocol)

- TortoiseGit (so sue me. I don’t like using git from the command line)