not using the VM

I'm a relative dunce. I've really enjoyed these first two episodes of GSWD, to be honest though I've been paying attention to the bits purely about Django and not able to take in the rest. In trying to develop the project I'm starting (a one-person effort) I feel the most I can deal with an once is front-end stuff (jQuery, Less, design, etc.), Python, Virutalenv, Django, databases, South and Git (Bitbucket). The idea of virtual machines and Heroku and everything involved there makes my head spin a bit!

I've just got a "traditional" set up on my Ubuntu machine with no VM. For hosting so far I'm using a free account at pythonanywhere.com and to deploy I'm zipping up my Django project folder, going to their files manager page, uploading it and and then unzipping at the pythonanywhere command line. I then have to click "reload webb app". A bit labourious, and non-programmatic, but simple.

May be a silly question but, apart from time, what am I losing by doing this?

My local Python version is 2.6.5 whereas pythonanywhere uses 2.7. I guess part of the reason for using a VM is more consistency between local and remote?

Sorry You must be a logged in, registered user to answer a question.

Answers

To build upon Kenneth's answer:

  1. You lose portability. Portability allows you to easily work from multiple computers even if the O/S is different on each computer (i.e. I'm working from both my work computer and home computer on the same VM - I just put the shared folders in my dropbox and brought my the virtualbox VM home on a USB stick and copied it to the computer). Portability also makes it really easy to add developers to a project.

  2. You lose backup. If you mess up your environment and it's far easier to just restore a VM backup from last time it was working fine then to try to unravel the last few steps you've taken which led to the mess.

  3. If your host is Windows, you lose Linux. Windows as a development environment leaves much to be desired . . . unless it is running VMs in which case it is actually quite nice.

Was supposed to be 3, 4, 5 (additions to Kenneth's answer).
FilterJoe on

Well, I see you as losing two things.

  1. You're losing the consistency between environments that really matters when you start doing production-level work. The less discrepancy between development and production (and, ideally, staging), the better. This is part of why we're using Postgres instead of SQLite, as the latter isn't nearly as strict and so lets bugs slip through fairly easily.
  2. You're losing the experience of modern Python deployment. When we get into the follow-up lessons and set up a server on AWS and deploy using Fabric, if you're still following your "upload a zip and then decompress it and restart the server" technique, you'll be at a loss for how real deployments are supposed to work.

For just learning, though, doing it locally and with a weird deployment is fine.