Which technology stack to use?

It is the phase of my startup when I am deciding the technologies we will be using to build the Online Athletigen service. It is so confusing to decide on one. There are so many great stacks I could fixate on but all of them have their strengths and weaknesses and there is so much advice to confuse me even more. I boiled down to Ruby on Rails or Python Django, at first. I was going to build a small sample app in Django first and then ROR. I told myself, If I stick with ROR, to start I am going to read the book, Programming with Ruby and then follow the free book online on Ruby on Rails. One of my teammates, Daniel has been insisting on FLASK micro framework, but I knew it is a one file micro framework so I didn’t give it serious thought. When I did, I discovered Pyramid from a reddit post. I was amazed. I read about the web frameworks war and comparisons. I installed VIRTUALENV and started my journey with Pyramid from this introduction. I viewed a presentation on what Pyramid had to offer. The power and advantages of Pyramid  what convinced me that Pyramid is worth the investment. So, SQLalchemy and Pyramid is what I am going forward with. I installed PyCharm, don’t know why I waited so long to experience its awesomeness. Now, I am feeling well equipped to dive into the project. And there is always something unexpected that happens in early stages of a project. The project development took a turn and the stack changed completely to SPRING MVC + AngularJS. This change was triggered by a new java enterprise developer who joined our team recently and was not comfortable with interpreted and not strictly OOP nature of Python.

Review 2012-2013 @ SRE, McGill University.

ISAS – Audio Augmented Reality App for the blind

Project Page – [http://isas.cim.mcgill.ca/]

ISAS is an eyes-free mobile system designed to give blind users a better sense of their surroundings. The goal is to use 3D spatialized audio to reveal the kind of information that visual cues such as neon signs provide to sighted users. Once users notice a point of interest, additional details are available on demand.

My work was on the Android Port of the app. I got the bare bone structure of the android app at the beginning and now it is nearing completion. It will be released in the Google Play store next month. My report after first sem, can be found (here). I also got an opportunity to do a Poster Presentation at GRAND 2013 on my work. The poster can be found (here).

RTER –  Real Time Emergency Response

Live – [http://rter.cim.mcgill.ca/]

Project Page – [http://cim.mcgill.ca/sre/projects/rter/]

This project deals with the detection, observation, and assessment of situations requiring intervention by emergency responders, offering them access to high-quality “live” data that may be visualized effectively both by responders in-situ and by remote operators in dedicated control rooms. Its components will include multimodal data registration, interactive visualization capabilities, and live streaming of the integrated contents.

I developed the Android App from scratch. It is still under development as new features are being added continuously.

This is being developed under Mozilla Ignite Challenge. We were declared the winners by White House. http://whitehouse.gov/blog/2013/06/25/mozilla-ignite-challenge-winner-announced

Our Presentation :  https://www.youtube.com/watch?v=B2iTtdosbV4

News: http://gcn.com/articles/2013/07/24/mozilla-ignite-challenge.aspx

Walking Straight – Part of ISAS

My report on this is  (here).

The system detects crosswalk and helps the user align with the direction and position of walking.The detection of the crosswalk is based on bipolarity and regular geometrical features of the markings. Thereafter, relevant  pedestrian traffic lights in the environment are detected. On the green(go) signal, audio feedback is provided to the user to walk without veering. This method tries to compensate for the erroneous sensors on the mobile phones which were leveraged by Walking Straight application to correct the deviation of the blind while walking.

This was my solely research based contribution, others were more implementation based. I still have not been able to complete this work.

Improving Healthcare through smartphones

Below is a very very basic and rough draft of a idea me and selvam has been thinking about. We will start research and dedicated work on it after our end semester exams. IF you have any suggestion please help us out by commenting below. We would appreciate your help.

Problem:

  1. Travelling Cost : Poor Indian villagers spend most of their out-of-pocket health expenses on travel to the specialty hospitals in the city and for staying in the city along with their escorts.A recent study conducted by the Indian Institute of Public Opinion found that 89% of rural Indian patients have to travel about 8 km to access basic medical treatment, and the rest have to travel even farther.
  2. Village/Suburban Doctor : Generally the doctors in the villages and town are trainees who are inexperienced and ill-informed.They become professionally isolated and outdated if stationed in remote areas. The technological solutions are lacking reliability, user friendliness & most importantly governmental support.There are people who are affected by the fear of the unknown in handling computers and other equipment
  3. First Aid : The villagers are ill-informed about the first aid measures that should be taken in case of different emergencies.

Solution:

  1. Power of Smartphones :Leverage the features of smartphone to empower the village doctor
  2. Remote Consultancy Services : Provide the villagers with feature to video chat to expert physicians residing in cities at a nominal fee. Also avoiding the cost incurred in travel and saving the time lost in the commute.
  3. Information database : Smart apps which enable the trainee doctor get the best possible information about all the ailments and medicines through a legit database. Key to the acceptance of the app relies in the user friendliness of the interface.
  4. EHR: App which will help the doctor to keep track of his patients. Past treatment and diagnosis.
  5. Easy Localisation : The applications will provide all the information in the local languages.
  6. HCI : Touch based very interactive design which can be operated by villagers. Help women during pregnancy with alerts regarding regular checkups and tests.
  7. Cheaper Solution : A smartphone is cheaper than computer and easy to handle and maintain.

Scope & Limitations:

The use of mobile networks and smartohones in rural health has immense potential. Current solutions use of the existing 2G networks (which has penetrated the most) and sms based interface. Our approach differs from the fact that we are using interactive design and intuitive interface (along with the 2G network).This system is cheaper to implement as the smartphone devices are cheap but have immense power and capabilities. For example,consider a village of 100 families. The setup cost of the system will be around (Rs.30,000) i.e. 2 smart phones + 4 Akash devices + Misc. Total Population = 100 x 4 = 400 Setup Cost per person = 30,000/400 = Rs. 75. This is a feasible investment options to elevate the state of health-care in villages by manifolds. The only foreseable limitation is the acceptance of the technology by the rural people. We are planning to overcome this problem with the intuitive interface. Given that the benefits are too great to ignore we hope the rural people will embrace the system.

Download the Extension!

Finally, we rendered the chrome extension from the code that we had built. I was a simple job as explained in http://code.google.com/chrome/extensions/packaging.html. We are not uploading the extension in the chrome web store as it requires money. Our aim was to build a chrome extension. Not to make money out of it. So, finally me and Selvam did it and we are happy to see things materialise. 🙂

Download the extension at http://e-caffeine.net/way2go/download.html

The online version is hosted at http://e-caffeine.net/way2go/ for users of other browsers. 😛

Are you an android user?

Finally up with the registration form and the sexy HTML5 based page to popularise our concept.
With the help of Swapan Purkait(Nettech

It was all done in two days. I did discuss my idea with swapan and he seemed interested. He started guiding me and i thought it would be greate if we could associate it with nettech. Nettech.in has become a brand with huge following, no doubt about that.

So we, me and P. Selvam, built the nice webpadge using HTML5, javascript and CSS3. He handled all the javascript part and I took reposibilty of the design and the looks. The end product is really awesome and I love it. Many of my friends have also given amazing reviews about it.

As selvam says,” It feels good to see things materialise and get them working, finally ! “.

I can’t reveal the idea now, as ‘instructed by the head office’. But for sure i can tell you that, if you ‘Are an android user!’, this is a great opportunity for you to earn money in your free time. Do register with us. All i can say is ..Visit http://nettech.in/android if you haven’t already. 🙂

Enhanced by Zemanta

Parsing and encoding directions

This is continued from the previous post. We now wanted to parse the array of directions to extract the steps. Another big challenge was to fit the large amount of data into the QR code. We used the PHP GD library to maps the occurrence of the words in a bar chart and encode them .The following code does exactly this.

[php]
<pre>//:::::::::::::::: Retrieves the useful stuff from the json file ::::::::::::::::
$jsonIterator = new RecursiveIteratorIterator(    new RecursiveArrayIterator(json_decode($data, TRUE)), decide the     RecursiveIteratorIterator::SELF_FIRST);
$counter=0;
foreach ($jsonIterator as $key => $val)
{
if(!is_array($val)) {
if($key == "html_instructions")
{
$directions[$counter] = array("step" => $val);
//print_r($directions);
$output .= $val;
$output .= ".";
$counter++;
}
}
}
//::::::::::: Reduce the content with 1 to 1 linkage ::::::::::::::::
$common=array(‘right’,’left’,’Turn’,’Pass’,’keep’,’Continue’,’the’,’onto’);
$encode=array(‘$’,’_’,’!’,’#’,’@’,’~’,’?’,’`’);
$i=0;
while(isset($common[$i]))
{
$output=str_replace($common[$i],$encode[$i],$output);
$i++;
}
$output=strip_tags($output);
//echo $output."<br/><br/>";
//$response = $_GET["callback"] . "(" . json_encode($directions) . ")";
[/php]

Lets briefly understand what are we doing.
We are using The RecursiveIterator interface of php to iterate over the array and extracts the steps. We assume a key:value pair and check if the key is html_instructions then append it to the $output string.
After that we are simply replacing the words in the array $common with the equivalent symbols in array $encode