Php – The ideal “always/anywhere available” web development environment

development-environmentPHPusb-drive

Casus:

How to edit and advance with the same code, from several distanced locations and computers as easily as possible?

I have this thought for some time now. I am regularly having problems when I have to work on one project from different computers, as I have not taken any measures or whatsoever to ease myself in this situation. That is partially due to the fact that I rarely do freelance projects and they are normally small web sites.

Imagine that you need to work on a project at home, where you have setup database, webserver, phpmyadmin and everything you'll need to get your app running. Then you go to your girlfriend's house for the weekend but you need to advance with the project and during that time you want to do some coding.

What I am currently doing is that I am archiving my whole project, along with a DB dump usually and place it on a ftp host, so that I may access it later when I need it. I probably don't have to explain how tedious this might be, especially if you need to setup the whole environment on the PC you are currently being at.

Considerations:

  • Turn my home PC into a dev server with Remote Desktop enabled – the problem with this is that remote connection is not always fast and snippy as one would need it to be in order to do RAD. Also that implies the PC must be always be turned on at home, regardless that I might not even need it, If say, there are better things to do during the weekend. I might need to buy an UPS, as power outages happen from time to time around here.. I already don't like this solution.

  • Create database and SVN repositories at public hosting service and checkout code. This still has some of the problems, as you might need to install software, SVN client and eventually edit some configuration each time you change the computer. Oh, and as with the previous 'solution' – you are totally dependent on Internet access.

  • Buy an Eee PC and carry it around – that way you can have all of your environment with you. No network required as well. You have to drag the darn thing around tho, and even it is small, it is not something you might fit in your pocket. I also consider that these EEE PC's aren't very suitable for normal coding (small keyboard, screen, etc).

  • And finally, I have been thinking of an ideal scenario, where I have one of those linux distributions which go along a single CD or even a flashdrive. On the latest you can have all your environment always with you along with all the projects. You can fit it in your pocket. Nova days all computers have built-in USB ports, contrary not every computer has a CD ROM in place.

Thinking about it, I consider the last solution to be optimal and completely satisfying. Problem is, I am not very linux savvy and I haven't been messing with it so much. Especially with flashdrive OS.

Bottom line questions:

  1. Do you agree that a flashdrive is an optimal solution? Is there a better practice I can put into work? Perhaps I should reconsider this way of working at all?:)
  2. Do you think a flashdrive OS as say http://www.pendrivelinux.com/ is suitable for such web development environment at all; Are there better candidates for an OS?
  3. Are there any problems with booting from USB generally? Naturally I guess this shouldn't be a problem on most PC's?
  4. What is your personal experience in working from several locations on the same project?

Best Answer

Here's an alternate solution: carry a portable hard drive that has a portable installation of a virtual machine player and a virtual machine with all the dev tools you need. Just plug this into whatever computers are available, fire up the VM, put it in fullscreen mode and you're good to go. Carries the advantage of not having to mess with live-cd or live-usb Linux setup, especially since you stated you're not very familiar with Linux.

EDIT: you could also run your VM off a flash drive, though performance would be abysmal.