views:

449

answers:

10

I always find myself close to useless without my laptop. It has all the things I need, firefox, notpad++, photoshop, documents, etc... However, occasionally, I like to code on my desktop because it's faster and better, but sometimes it's just impossible unless I transfer the website files to my desktop or keep my FTP updated. I know there are some syncing solutions out there, such as dropbx, but I'm interested in following a good practice and interested in the clever insights of you pros.

Sometimes, I don't even have my laptop and when I have to edit something while I'm at school, I pull out my USB drive. I setup Portable Firefox with plugins FireFTP and FireBug with Notepad++ on my USB stick. This is what I like to call, my web development kit.

Update: Interesting comments on source control and subversion, it lead me to discover that DreamHost has subversion (I'm going to play with that). Any suggestions on reading material (off or online)? Throw any piece of information at me, I won't know which questions to ask or what questions to ask since I am new to all of this. Thanks in advance guys!

+11  A: 

Source control. Subversion is good.

There are some good online source control systems also, which are worth checking out.

Jimmeh
Source control? Interesting... You learn something new everyday.
Doug
It's a massive part of working as a software developer. I guess it's a little more difficult for a student (assumption), but there are some online solutions.
Jimmeh
Yes, source control seems to be the answer here. I just wanted to post a comment to stress the fact that if you want to be serious about working with code, source control cant be neglected. (I assume that you are a student, no offence meant if youre already in the business).
mizipzor
@jimmeh Your assumption is correct, but I don't mind getting a head start in the game :)
Doug
May I suggest http://www.xp-dev.com/ as a free (yet slightly restricted) online subversion hosting if you don't want to setup a subversion server yourself (it's easy but you need a web facing server)
soren.enemaerke
Don't just look at Subversion, either: if you've not come across source control before, now is the time to do some background reading. (I would personally recommend a quick look at least at bazaar, subversion, git and mercurial).
mavnn
Whatever you choose, a key point for you will be your ability to sync your various repositories. This implies either a server or clever folder sync (Microsoft Mesh and a vast number of others)
Murph
+4  A: 

I use SVN (as @Jimmeh suggested) , I put it on a public server (which makes things slow) but I can access it from anywhere in the world and continue from the last place I've stopped.

I recommend enforcing locking and making files read only if not locked.

Dani
A: 

+1 for the online source control.

However, that doesn't help with everything (such as specific tooling or [in my case] special issues like a domain joined laptop and company-set VPN). I often use remote desktop to log on to my laptop to do the laptop-specific stuff (intranet, office communicator) and my desktop for the dev work, since it is a whole lot faster.

tijmenvdk
+6  A: 

A lot of people are moving to distributed source control with programs like git and mercurial. These don't require a central server for the source control - all versions are stored on all computers, and you can merge in changes whenever you bring the computers together.

rjmunro
Don't use the "social" persuation tool ("a lot of people are moving to") without also clarifying the respective trade-offs. With distributed source control you will need to perform more merges and without organisation there will be more than one current "top" version of source at any one time. With a server there will be only one version of the "top" source (the one on the server!).
Quibblesome
But on the other side, working off line is massively easier with a dvcs, and you can still set up a central server as well. Especially with dvcs like Bazaar that explicitly allow for either style of workflow, there really isn't any disadvantage to using the distributed packages over subversion.
mavnn
@Quibblesome: Speaking of clarifying trade-offs, DVCS doesn't *require* the existence of a "master" version, but it does allow for one and having a single designated server (like, say, github) which maintains a single version of the "top" source is a common model. I also get the impression that the OP was asking about a project he's working on solo, which goes a long way towards mitigating the constant-branch-and-merge chaos you described even without designating a master version.
Dave Sherohman
I use a master repository for my personal source control. I use a dvcs so I can commit offline on my laptop. I prefer Mercurial, since I've found the hg documents to be user-oriented. Git seems to require too much techie knowledge to use.
Paul Nathan
A: 

I use a combination of Subversion for source control, the rest of my document space is kept synchronised across a number of machines using Unison (http://www.cis.upenn.edu/~bcpierce/unison/) I have a hub and spoke arrangement set up for this, and have never had an issue with this setup. It uses rsync at its core.

Dropbox is popular at work now for sharing files only. I do not use unison for my Subversion or Dropbox directories.

I think git (certainly for revision control of source) is great if you're on the move and making changes whilst not online.

dswan
+1  A: 

For sync'ing across machines that aren't connected (behind firewall, vpn, air gapped etc.) I've been using SyncBack. Its free, configurable, and I can copy the profile across all the machines I use and setup 1-click syncing.

TJB
+3  A: 

Distributed version control is the answer to your problem.

It require only a host (either a ftp folder will do the job).

Someone said Mercuial and Git, but I reccomand Darcs.

http://darcs.net/

It is written in a beautiful functional programming language, it is very easy to use and powerful.

volothamp
A: 

Using synergy you can control one machine with the keyboard and mouse from the other and use copy and paste.

For sharing files you could use NFS or Windows shares or ... depending on your system.

Some IDEs have support for "remote work", details there depend on the IDE and the language you're using. (I use NetBeans for instance to compile and debug my code on a machine using a different system in some random data center while working on my local box)

And then - of course - version control, git, svn, ...

johannes
A: 

Well, since you mention that you are only coding because it is faster/better, can we assume you will still have your laptop with you (I go through laptop vs desktop coding phases too)?

  1. If it is faster because of having the mouse and keyboard/ number pad, try VNC to use your laptop screen.

  2. Create a shared folder on the laptop, and work through the network.

Cryophallion
VNC lags! It's never as good as the actual in-font of computer use.
Doug
Well, some VNC programs have different "speed" setting which may help, and if you are just typing, it may not be too bad. It was just an idea that hadn't been mentioned.I use the shared folder and subversion. Since I have dbs for web applications, and I don't want to have to update multiple local versions for testing, I go shared folder if I am doing a lot of db testing, subversion if working on code and classes only. I just wanted to make sure all your angles were covered.
Cryophallion
A: 

If you choose the Subversion route to store your source code I recommend giving Beanstalk a try - one repository is free (100 MB limit). Then you can access your files via TortoiseSVN, a Subversion client in the form of a Windows shell (Explorer) extension - also free.

Nick