

Ask HN: What's your programming setup? - Chaseph

I'm always looking for ways to make my programming environment and workflow more efficient. So what setup do you have that you think makes you work as efficiently as possible?<p>Right now I do all my code editing in OSX, and have a VMware virtual-machine running Ubuntu Server. I have a script running that syncs any changed files from OSX to the virtual machine, so I can run / test in an environment as close to production as possible.<p>Right now I'm looking into creating a base VM, to copy and store in the cloud somewhere, so I never have to setup again, And I really would like to be able to run it in the cloud and access it from anywhere, but that seems too expensive right now.
======
mbenjaminsmith
Sounds like you're already doing my number one tip: take the time to write
tools to automate repetitive tasks. If you do anything more than a few times
and it can be automated then it's worthwhile to do so. Python is a great
language for writing tools IME though you could use anything you're
comfortable with (and has the requisite libraries).

Buying tools, even if they only do one thing, is worthwhile as well. For me
the price point where I'll buy is around $20. If you have a simple app that
does one or two things I need on occasion -- and the app is relatively current
and bug free -- then I'll buy it. I've rarely been disappointed with $20 tool
purchase.

Beyond that I haven't found that code editors really have that much advantage
over any other (I'm an experienced Vim user and I've used a handful of popular
editors with project management features). Sometimes you're forced to use an
IDE, like Xcode, or have to work on a different computer/OS, so there's not
much point in finding the ultimate editor.

------
daenney
I use Vagrant with Puppet and VirtualBox (they have base-boxes you can expand
on) to spawn machines whenever I need them and pre-configure them to test
stuff. I use the shared folders feature of VirtualBox between host and guest,
I don't use scripts to sync stuff (Vagrant will be gaining support for VMWare
sometime soon if I recall).

As far as 'hosting in the cloud goes', I just uploaded my base-boxes to my FTP
server so whenever I lose the image or need it somewhere else Vagrant will
just fetch it for me. Running it 'in the cloud' isn't something I feel like
attempting, I prefer to be able to work regardless of a working internet
connection.

When it comes to editors, I use Vim with a slew of plugins, most noticeably
Vundle, python-mode, NerdTree, Powerline, CtrlP and syntastic (which takes
care of calling syntax and style checkers when needed). Vim is available just
about everywhere and with a carefully crafted .vimrc you can get the same
working environment on any system so you don't have to familiarise yourself
with a new set of tools every time. However, there will always be cases where
you need to switch to different IDE like XCode if you're doing iOS
development, or Eclipse for Java/Android.

Another practice I find useful, store your rc-files in something like git.
Setting up a new working environment then just comes down to a `git clone`
instead of mailing configuration snippets to yourself from one place to the
other. You can even have platform or device specific branches that contain
small changes for every environment.

~~~
6d65
+1 for Vagrant. This tool saves lives.

------
jaddison
Macbook Air 13", two 24" external displays (one is via a USB display adapter).

I have VirtualBox set up with an image of Windows XP for IE testing. Other
than that, I run all my webdev projects on my MBA, rather than in a Linux VM
in VirtualBox. Homebrew is wicked.

I use PyCharm for my dev environment (I'm largely a Django dev at the moment).
Say what you will about IDEs vs text editors (but please don't in this thread,
really!), it's a great tool - worth it.

I have Linode VPSes running for staging/testing purposes that mirror
production systems.

------
Goopplesoft
My Stack:

1) A jetbrains IDE (I love em)

2) Macbook, connected to large external monitor, wireless mouse/kb

3) Alfred App for quick moving around

4) Divy for resizing windows easily

5) Dropbox where projects rest

6) SourceTree by atlassian with git-flow

7) The hit list (one of my favorites because it requires little configuration,
and theres hovering activity timer that keeps you aware of how long youve been
working on a feature)

8) Heroku > idea to server in minutes (free addons make starting up a breeze)

------
talmir
At work I use KDevelop in conjunction with Perforce for version control. Its
the basic two monitor setup.

At home I also have two monitors (A must have in my personal opinion) but I
use git for version control and sublime text editor for coding.

Would I recommend what I use to others? Nope. Everyone must find their own
path. I tell others what I use, but only if they ask.

------
rm999
Using OSX, working with files/data on a remote server: I use transmit to sftp
files from the server. I usually code in textwrangler. I ssh into the server
through terminal. I have a script that copies selected code from textwrangler
and pastes it in terminal (and presses enter), which is useful for testing and
debugging scripts. I also use vim when I want to make relatively quick edits
to files.

I'm fairly new to OSX but my setup works pretty well for me. I think my
biggest inefficiency is my text editor; it doesn't have syntax completion (as
far as I know) and it can be a bit of a pain to work with more than 3-4 files
at the same time. My long-term goal is to totally move to vim.

------
rajivtiru
1\. Macbook Air with External Display

2\. Chrome visible in external, with inspector/console on macbook

3\. Wireless Keyboard and Trackpad(GODSEND!)

4\. Sublime Text 2 for coding

5\. Bamboo for automated builds using ANT

6\. iTerm2 for terminal on steroids

7\. AWS for everything cloud

8\. DNS made easy for low TTL Domain management

9\. JIRA/Bitbucket for Issue/feature tracking connected to git commits

10\. I just wanted to make the list have 10 things in it

I highly encourage everyone to try to get something like Bamboo/ANT working to
automate your deployment. Its such a timesaver later.

------
retrogradeorbit
emacs, xmonad and ansible are making me most productive at the moment.

