Volunteering in India – A story of desktop Linux


This summer I took my first long vacation away from DC in years. While I was away, I spent some time with a voluntourism organization, Global Aid LCC [1]. I participated in their first trip, to a service ashram located in Gujarat, India.

The organization we visited, the Muni Seva Ashram [2]. MSA is located outside of the rural village of Goraj, near Baroda(Vadadora), in the state of Gujarat. MSA has been around for ~30 years, starting out as a day care for children – it has grown to include primary and secondary schools, an orphanage, a home for mentally ill women, general hospital and a first in class cancer research hospital, an old folks home, as well as extensive farmland. The organization produces ~70% of their energy needs themselves, through concentrated solar power and biogas collection.

Initially I was told that I was going to assist with inventory management and the implementation of a hotel booking system for the ashram – IT development work essentially. Cool beans – things that I was comfortable working with – I would have to be adaptable and flexible to the needs of my host organization. That was my first lesson of doing work in India – being adaptable and flexible is key to being able to accomplish anything in a place with ever changing schedules and priorities.

I arrived to MSA on May 25th, and after a few days of bonding with my fellow interns and touring the countryside, I started working with the IT staff on May 31st. First, it was clear that I wasn’t going to be working on anything related to the ashram’s hotel site until the second half of my trip. Second, it was clear that they had a pretty good handle on their own inventory and didn’t need this accomplished – the IT staff was much more interested in seeing if Linux could work as a desktop OS at the hospital.

For some background – the hospital is moving towards a paperless, Electronic Medical Records (EMR) system. This is the same sort of medical records system that the Obama administration is pushing for the development of in our hospital system – it really is a modernization. When I arrived at MSA, their EMR system was already in production and used for about 90% of the records transacted at the hospital. This system takes data in from a variety of sources: a Flash powered GUI, biometric hardware (also through the GUI), and through custom programs written to interface with medical equipment and dump data directly to the EMR system.

My job was to make sure that the EMR system could work on a Linux based desktop. The IT staff had some previous experience with Linux that was disappointing for them. I had the hurdle of showing them that Linux didn’t need to be a painful exercise for them to use. On the other hand the staff was quite interested from a workload perspective – too much time is spent remediating workstations that become unusable because of viruses/malware. Linux would help alleviate a portion of their desktop-support workload.

They were interested in using Red Hat Linux, I choose to use Fedora Core [3] as a distribution of choice instead – it is a community maintained variant of RHL. I was quickly setup with a test desktop, which was turned into a FC test machine for me to start playing with. Flash was quickly loaded and I had the machine accessing the EMR system readily. A bit of research was able to reveal half the hardware used for biometrics had Linux drivers, the other half didn’t. Not a win there, but there was never a promise Linux could replace all the desktops in the hospital. Java was an easy SDK to install and test, as was porting one of their custom applications to run in Linux. Unfortunately I was unable to actually test the application in the ze real world. Ultimately, showing off the EMR system didn’t take much.

After showing that Linux was viable for interacting with the EMR system, I was presented with a new shiny toy – a 16GB Apple iPad. One was sent to the Ashram so they could try interacting with their EMR system using an iPad. What an Amusing little task – getting a Flash based EMR system working on an iPad? Sounds impossible? Yes! Is it doable? Yes! With high performance? Not really.

VNC is a wonderful little protocol, and there are plenty of great VNC applications available in the iTunes App Store. It was pretty trivial to show VNC interfacing with a workstation and using the EMR system on the demo station I setup. The problem with this is that Flash over VNC is slow, or at least the demo box and/or network weren’t up to it. The idea was that hospital could use a terminal server to host sessions for the application – that idea went away when the performance of the application over VNC wasn’t very good.

After this, with about 5 working days left (business moves very slow in India…) I was presented with a real challenge. The hospital had a fleet of 20-some laptops, which were all the same hardware configuration – a homogenous set of laptops. The staff wanted to load Linux on all of them, and wanted a system to use that would be as easy Ghost is for them with Windows. I had two jobs here – first, building a Linux image; secondly, setting up some sort of cloning environment.

This involved setting up user and administrative accounts on the box, editing the GNOME GUI menu, setting up ssh for remote management, and configuring networking. There was a labored attempt at getting a windows print share working – one that was running on an OLD hp expansion card for a LaserJet series printer – that was a headache and a problem never solved.

The way the IT staff normally did support was through VNC. On windows, most VNC servers will serve up the current users session. UNIX style VNC works a bit differently, by serving a whole X windows session to each individual client, instead of the dedicated physical display. In order to display ‘display’ :0, a software package called X11vnc was used. This uses display :0 for VNC, when tunnel through ssh, this makes remote management a pretty easy task. I adapted some VNC scripts I use at GWU for use with X11vnc [5] with no problem. X11vnc is a wrapper for XVNC server whose purpose is solely to serve display :0 well.

Remote controlling a workstation ? in a secure fashion, is done as follows:

1) Obtain IP address from user
2) ssh to computer
3) Start vnc11vnc (via script)
4) Connect to vnc server

For deploying this system out to several homogenous laptops, the best option was to do was disk cloning. Preferably, I would script these things and have each installation be unique and scripted, but I needed to deliver a finished project. For their Windows machines, the IT staff us Ghost to do disk imaging. They wanted a similar system to lay down this image on their laptops, so I quickly acquainted myself with Clonezilla[4]. Clonezilla is a Linux-based disk cloning software that happily works with most file systems that common Linux distributions use. With Clonezilla the staff and I made DVD ISOs that they could use to boot from and install the imaged workstation on.

All of the work done for the laptop image was thoroughly documented. This was done for the staff so that they could recreate the work, step by step, if they desired. I was trying to avoid the problem of ‘expert arrives at location, does work at location, leaves location & locals cannot maintain the work’. A friend of mine who spent last winter in Africa did something similar with an IT project – he inherited a broken medical database system, got it working and then had to train the local staff to maintain it, as the previous volunteers that had set it up never thought that the people using the software would need to know how to maintain the database.

For those that have read this far and are wondering what happened with the hotel booking system? The ashram’s IT vendor had missed deadlines, and weren’t slated to start working on it until after I had left. Oh well.

The overall uptake of the image I delivered has been slow, largely due to time constraints on IT staff and user training, but it has been put on some of their laptops.

Observation about technology in India
Technology is used until it cannot be used any longer.
– HP Printer with some sort of Windows Print share expansion card.
– An Old (and working) UPS. It had lead-acid batteries. I didn’t like to be in the IT room when the power went down.
– Car tire tubes patched for more than you would see in the states. At one point I was involved in a tire puncture incident, and I got to see the tire getting repaired – it had about two-dozen patches on it already!

The overall theme was re-use of any resource until the resource was no longer viable, then dispose of the resource. From what I saw, this is unfortunately often done with little environment regard in some locations.

There were a few things that were awesome to have/use while on my trip

#1)
BitTorrent was the KEY choice for pulling a CD ISO down from a server in India. Internet access in MSA would periodically go down throughout the day. Without BitTorrent, trying a 650MB download was a risky gamble. The nature of BitTorrent- breaking a file set into small, distributable chunks – was the best way to reliably get any sort of large files.

#2)
Having a Linux virtual private server (VPS) back in the states was a useful tool. I was able to test out scripts & have a reference system available to demo items with.

[1] https://globalaidllc.com/
[2] https://www.munisevaashram.org/
[3] https://fedoraproject.org/
[4] https://clonezilla.org/
[5] https://www.karlrunge.com/x11vnc/

Further reading
My global aid blog This details more of a day to day set of activities and life while in India
Flickr photostream from India