Best way to do remote development?
levipearson at gmail.com
Sat Jan 12 13:35:32 MST 2013
On Jan 12, 2013, at 12:25 AM, "S. Dale Morrey" <sdalemorrey at gmail.com> wrote:
> I do quite a bit of software development and now I've picked up some
> clients that would like me to travel rather frequently to meet them.
> This has got me in the market for a new laptop, but I don't have a lot
> of extra money right now.
> My older laptop would be just fine except that it doesn't have the
> power to run a modern full blown development environment.
> The other problem with traveling with a laptop (especially a new one),
> is that if it gets stolen you lose all your files.
Just what do you mean by "modern full blown development environment"? IDEs have been around for a while, and unless your laptop is ancient, I can't imagine you couldn't get reasonable performance from some IDE. Is it possible to upgrade the RAM and/or switch to an SSD in your laptop?
I have an aging laptop and a brand-new screaming dev machine at work, so while I was working at home for an extended period of time I worked out a system that was okay for me. It involved mostly using ssh, vi, and command-line tools this time, since I was mostly doing configuration and running scripted builds. Scripted builds (via make or some similar tool) are almost universally better than builds that depend on an IDE to work. This is not to say that you shouldn't use an IDE, just use one that plays nicely with other build systems.
When I am doing a lot of coding, I like to run a local editor rather than a remote one over a ssh link, probably for similar reasons to why you like to run an IDE. My personal choice here is usually emacs with a bunch of fancy modes enabled, and it has a built-in remote file access system that allows me to edit remote files as if they were local. I believe vim has similar functionality, and you might find something like that in your IDE of choice as well.
Another option would be to use either a remote file system over a secure link or a synchronization tool (sync, Dropbox, etc) to sync the development tree between your laptop and the build machine. That way you could edit locally, then use a remote shell to kick off a full build on the build machine.
Finally, you could use git, hg, or some other dvcs to move stuff between your laptop and the build machine. This would have the additional bonus of forcing you to keep detailed revision history of your project!
Personally, I can't abide the visual latency of a remotely displayed app via x11, vnc, rdp, etc. so I try to deal with remote access at the file level instead. There are a lot of IDEs around now, and not all of them are obscene resource hogs or require that you let them run your entire build system. Hopefully you can find a solution that will work well with your laptop!
More information about the PLUG