Moving to a remote work environment: Motivation

How many times has this happened to you -

  • Your system crashed and all of your configuration that you spent nights setting up was also - gone
  • You were trying to install a new OS, (probably a new flavor of linux), you had to setup your dev env all over again. Its a real nightmare installing all those libraries, dlls, and what not!
  • You are in a remote area, and you have to do some urgent work or code modification, but you just can’t work without your dev environment.

We all spend countless hours in setting up our development env just right and its really annoying to set it up all over again. Imagine it would have been so much easier if your dev env was portable and all you had to do was either ssh into it or deploy the VM and that’s it. You are ready.
After my recent fiasco (read as System function failing miserably) with Windows I have decided that I really need a remote work environment which is independent of the client that I am operating upon.

I have tried to create a remote and portable development environment but everytime I got sidetracked. But none of that this time. Losing a ideal development environment is really a nightmare and it takes nearly days to set it all up again.

So, after scouring the internet for days I have developed a roadmap for working with remotes and nurturing my own remote and protable development environment. In the coming series of article I am going to share with you all the procedures and software that I am going to use to initialize my development environment. 

First up is is working with remotes. As part of my internship at TechShanty I have constant access to a DigitalOcean VM. I have decided to utilize this remote as much as possible. I will be setting up a apache server, terminal multiplexing and user access level for everyone using it.

Next will be setting up my own portable development environment. I haven’t yet decided on whether I want a headless env or full GUI. For making my development environment portable I will use virtual machines. I have shortlisted (but haven’t yet tested) two machines for this purpose. First is, CS50 Appliance 19 based on Ubuntu and second is the appliance that I am using in CS162 which is again based on Ubuntu. 

Technologies that I work with on a regular basis:

  • C/C++ : Low level to gui level
  • Web: Nodejs, php, html, css, js, sql, phpmyadmin
  • Java: Including awt and swing
  • Java: Netbeans, glassfish :( , j2ee, jersey, tomcat
  • Miscellaneous: Can range from Photoshop to python, anything thats of interest

I realize for a optimum performance I will need to setup some tools on client as well. But it will be minimum. Only what is absolutely required. Setting up environment for java will be a problem, our current work method requires a GUI, Netbeans and glassfish; all resource hogs. I might use vagrant for further automation or manually setup Virtualbox and take a snapshot of the machine at the ideal state.

More to come later.

Comments