The Failure of Building Remote Development Environment

Before ...

The Project that we are working on


This days I am working on project that its end result is a Mobile Application for DAL Engineering Division Employees on DAL Group. The main objective of the App is to make the employee communication with the company HR department easier. so the employee can fill his requests (leave, loan ...) by the mobile application, therefor the submission and the approval of the request will be automated. 
Moreover, HR department wont to make their announcements for the employee faster and on the hand, so each employee can know his KPIs, the listed courses that HR assigned him for .. etc.. etc.

Its a big project that contains web APIs in the back-end, and heavy systems integration on the database layer (Employee management system, And Employee Payroll system, which developed internally).
It will also contains an Admin web application to push to employees a certain  type of notifications and assign to employee courses to attend, articles to read and videos to watch.

So why they need this

  • The mobility of requesting and approving form
  • limiting the double working: currently, the employee fill the request on paper and get approval manually, collecting signs on the paper, and then, HR people enter the data of this paper form on the system. 
  •  Collect a massive data of the employees, e.g. what they request the most and when, which that provided by HR that accessed the most, what the employee feedback over a certain course or Event. 
Yes.. three simple points, but it burn the mind to code it and structure it. 

The current environment

So we (me and my colleague Sarah) decided to use ionic framework to build the front end mobile application, for many reasons, mainly it's simpler to build and design and it's cross platforms framework, and Angular js makes the code easier to develop and maintain, and using Git to version control. and each one of us were setup his environment on his PC and we started developing separately. 
 Moreover, since the images of the emulator that came the android SDK are too slow on windows OS, we start using Genymotion, its a lite emulator that uses Oracle VM VirtualBox to run its ADB. 

But... 

We faced issues... non-coding framework-ing kind of issues, but environmental one. first, the was a problem to run any type of "npm" commands over the company internet proxy, we have tried this solution, but it didn't work nether. which I believe it opens limited types of network protocols and block the other protocols that used to retrieve the commands. 

so the solution was to use a direct internet using regular data sim card installed on our phones, and it was a HEADACHE!  because each time we need to access our database servers or have any kind of modifications on the back-end or operation to do, we have to connect the cable, set the proxy, disconnect the wifi... and if we need to go back to app developing, reverse the steps and start coding and testing. 

ionic commands have the same issue when trying to debug the code on an Emulator or debug-ing device. but for the simple ionic serve command it will work with no issues. but ionic serve will not run the native codes that have been built using cordova.
Summarisation of what we are facing will be as the following:

  • Working on separated machines, so each one have a different version of code, so we are not keeping in track.
  • Switching from direct internet to proxy wasting a lot of time.

So..

We decided to centralize our work at one of the servers that we have, which have a direct internet connection and we can both work on it branching and merging the code simultaneously, and testing our app over the server, which saves out PCs resources.  

During 

I started to setup the Environment on the server, it was a virtual server that runs Windows server 2016, start the normal setup:
  •  installing the java JDK and setup its path variable, 
  • Coping Android SDK to the server and setup the ANDROID_HOME path variable, 
  • Installing Git,
  • Installing npm, 
  • Coping the project folder, run  npm install -g ionic cordova
  • Installing Genymotion. 
All good and everything working and ... boom! Genymotion not working 


And by researching the error, it does appear that Genymomtion needs OpenGL to run, and what I have understand is: OpenGL is not a stand alone program that you can install, but it came with GPU card drivers, which means the machine  you are running must have a physical GPU card hardware attached to it, However, our machine is not, because we are using a virtual one. 

So I had tried another type of emulator that called Xamarine Plyer, and it have a problem on configuring it's virtual network. 


and couldn't find any solution for this or explanation of why it dose happens. 
I had nothing left so I came back to the AVD emulator that came with the Android SDK, and guess what? its not working too!


I did reseach this, find out that Emulator could not run over a virtual machine, I found a workaround for this, it starts the emulator, but never runs.

A fall working day wasted trying to simplify things but it didn't work out. and came to our start point: removing the proxy, connect to wifi ... disconnect the wifi, connect to proxy...




Comments

  1. Nice article!
    Writing about the problems and errors you face helps a lot to avoid them in future. I'm planning to build remote environment also, I may share my failure story with you too 😂

    ReplyDelete

Post a Comment

Popular posts from this blog

How to Automatically deploy Configuration Files with Azure DevOps CD pipelines

Adding Multiple DB Contexts in your DotNet Project

Adapting a New Technology: A General Guide to keep Your Systems up-to-date