Ask HN: Save developer time by automating setup?
With a new technology stack, it could be the better part of a day or two (think Ruby on Rails and MongoDB for Windows). When it's a stack I'm very experienced on (say Linux, Nginx, Play Framework, MongoDB), my local setup is quite short (maybe 5 minutes or so) but I still spend a couple of hours or more setting up a new server from scratch, buying a domain, setting up A records, etc. There's also another issue with my local machine becoming a garbage bin with all sorts of DBs, frameworks and IDEs.
Somehow, I feel setting up your machine is a "solved" problem, since I always find my answers on one of the StackExchange sites. I've toyed with building a platform where, in a few seconds, you would have a private VM ready with your chosen stack setup and a new project created with all the right configuration. The only problem is that you would need to code on the VM (in a cloud IDE or through a terminal)
Do other developers on HN also think of this as a problem? Or do you see any allied problems (like getting a new team member to setup everything just right)? Or would a platform that automated setup not be worth your while to use?
11 comments
[ 2.3 ms ] story [ 30.7 ms ] threadalso take a look at vagrant
PaaS providers (Heroku, DotCloud) host your app, so you don't even have to worry about servers.
Virtual machine tools (Vagrant, VirtualBox, VMWare Fusion) let you run your production setup locally without having to SSH into a remote host.
Laptop configuration (GitHub's Boxen, Pivotal's sprout) let you configure your laptops just like servers.
I'm also working on a project (http://www.stackmachine.com) to solve some of these problems.
1. A week or so of struggling to get a new box set up is acceptable if you're prepared to use it for at least a few months
2. Developers are very particular about environment choices, example: choosing between rbenv, rvm, chruby
3. Mac OS X and Windows developers lag behind in solid package managers, and virtualized dev environments have little (albeit growing) mindshare
I think the right solution will look something like containers/VMs via tools like Docker/Vagrant combined with configuration management tools like Chef/Puppet/Salt/Ansible. Configuration management hasn't taken off though yet among developers and is still mostly perceived as a sysadmin skillset.
At the moment, I'm at the point where the same playbook can be used to set up a vagrant VM, my local laptop, and my digital ocean VM. The next step is to work some docker stuff into it.
TL;DR: ansible +1
For prototyping perhaps a public PaaS with a free tier like Heroku would be great (https://www.heroku.com)
For a production setup you can use Cloud 66 (https://www.cloud66.com)