~GSoC 2010: Ekansh's Geo location Visualization Proposal

anildash edited this page Mar 26, 2011 · 1 revision
Clone this wiki locally

What school do you attend?

Netaji Subhas Institute of Technology, New Delhi, India

What is your major?

Information Technology

What city and country will you spend this summer in?

New Delhi, India

Your Twitter and/or Buzz usernames and instant messenger handles:

Twitter: ekanshpreet
Buzz/Gtalk: ekanshpreet

Your web site, blog, or professional URLs:

Here’s my CV: http://nsitonline.in/ekansh/ekanshcv.pdf

What is the extent of your PHP/web/MySQL/JavaScript experience?

Since my school days, the web and the virtual world have always fascinated me. From winning web designing competitions using WYSIWYG editors and HTML in school, I jumped into the field of dynamic scripting at the very start of my college life. I have been using various web development languages including PHP, Javascript, AJAX, CSS and XML for over 2 years. I have also worked with databases like MySQL for more than 2 years, going from strength to strength and accomplishing one milestone after another.
I am currently the head of the NSITonlinewebteam (http://www.nsitonline.in), the student designed, developed and maintained website of NSIT, and also the CSI webteam (http://societies.nsitonline.in/csi). I have webteams for various college fests including Resonanz ’09 (http://resonanz.nsitonlin.in) and Innovision ’09-10 (http://www.inno.co.in).

I am the lead developer and associate product manager for ScalableC (http://www.scalablec.com), an online platform aimed at developing trust and collaboration among cooperation based organizations and civic societies. I founded the CSI NSIT Web Development SIG (http://groups.google.com/group/csi-nsit-web-development-sig), under which we conduct seminars and provide assistance to students interested in various aspects of web development.
What prior open source experience do you have? Please list project names and URLs.
Even though many of my projects are proprietary and closed source, I have considerable experience in open source. Being a PHP developer, I am very comfortable with the use and development of features for various PHP based open source solutions including content management systems like Joomla, Drupal, Wordpress and LimeSurvey, bug tracking solutions like phpBugTracker and feed aggregator systems like gregarius among others. I am also well-acquainted with version control systems like git and subversion. I have developed applications with Qt4, cross-platform application development framework widely used for the development of GUI programs. I have also developed automated solutions using Google’s Provisioning APIs and also using Google Maps APIs.
I am an active Joomla developer and have submitted a couple of modules to the community. T2D AjaxPreview (http://extensions.joomla.org/extensions/photos-a-images/images/11479) is a joomla extension which pops up a preview image upon hovering over a thumbnail. The module uses a combination of PHP, jQuery and AJAX to provide the requisite functionality. Tux Merlin of joomla-gnu.org reviewed the module here (http://www.joomla-gnu.com/joomla/380-t2d-ajax-preview-modulo-para-joomla.html). Ajax Introduce (http://extensions.joomla.org/extensions/news-display/articles-tabs/11887) is another one of my open source works. It uses PHP, AJAX and Javascript to give describe the item appearing in one of the thumbnails.

What aspect of ThinkUp would you like to work on and why?
Choose from the Ideas page (http://wiki.github.com/ginatrapani/thinkup/google-summer-of-code-ideas-page) or suggest your own.

I came across the ThinkUp project through GSoC 2010 and I must confess that the project gripped my mind. I feel confident that I can contribute constructively to the project, use my passion and commitment for its betterment and success while simultaneously enhancing my productivity and technical knowledge and skills. I am sure that addition of new functionality will take it to new heights. Considering that ThinkUp is still in its pre-alpha stage, there’s tremendous scope for development. One project I’m particularly interested to work on this summer is the Geo-Location Awareness and Visualizations.
Geo-Location Awareness and Visualizations project is all about capturing the location of people responding to tweets and status updates on various social networking websites and displaying them on a google map. Creativity, productivity and success of organizations usually depend on the response they elicit from users. These responses maybe spread across multifarious channels and monitoring all of the channels together is a herculean task in itself. This is where ThinkUp becomes important. Further, filtering these responses by virtue of location is absolutely basic to ThinkUp’s aim of organizing this content created by the users. Having a Google map to display these locations adds even greater appeal to this feature. The needs of customers of an organization varies from place to place. Such a feature makes it easier for the organization to assess and modify the product to suit a particular market. By way of a simple example, suppose a person who intends to elicit information from people of a particular city, tweets “Are the markets closed today?” with regard to the markets in his city. He will obviously be interested in the responses of people from the same city. Thus, I feel that developing such a feature at this early stage of the system will play a pivotal role its long-run success, the main reason for my interest in this particular project development. Thus, I feel that developing such a feature at this early stage of the system will play a pivotal role in its long term success, the thought being catalytic for my interest in the development of this particular project.

Share some technical details about how you’ll approach the task.If you’ve published your proposal on the ThinkUp wiki, add the link here.


Development of the Geo-location Awareness and Visualization framework can be basically divided into four parts:
1. Collecting the geodata from Twitter, Facebook and the like.
2. Reverse geocoding the location, accurate only to the nearest city, to display it on the map. This is required to maintain a user’s privacy.
3. Exporting the data through a GeoRSS web service so that it can not only be used within ThinkUp, but allows the user to embed their streams into any GeoRSS map.
4. Using the data collected in the above steps to dynamically generate a Google map within ThinkUp to give a visual presentation of the response generating places to a particular post and hence to filter the responses according to a specific location.


Elaborating on the aforementioned points, the first step in this project involves modification of Twitter and Facebook plugins and the plugins of other networks used in ThinkUp to collect geodata from posts, whenever available. Twitter through its service titled “Tweet With Your Location” provides its user with the facility to share his / her location. The location information that is shared publicly can be either the exact location (your coordinates) or the place (like a neighborhood or town). When a person is sharing his location accurate only to a neighbourhood or town, there is no issue of privacy and thus it can be used directly for reverse geocoding. On the other hand, in case a person shares his exact location, we shall first need to fuzz the location to maintain a person’s privacy. This can be done using the reverse geocoding service provided by Google. Google provides a number of different address component types through its geocoding services. Of these, the ones which are most useful in our scenario are the administrative_area_level_1, administrative_area_level_2 and administrative_area_level_3. One of these three components could be used to get an accurate yet fuzzed out location of a post. The choice of which one the three administrative areas should be used, will depend on the country, which is again available as an address component in Google’s geocoding services. For posts made from smaller countries, area level 1 could be used while for larger countries one could use area level 2 or 3.
In case the posts do not carry any geocoding data, we will need to retrieve it from a user’s profile. This involves crawling the person’s profile to retrieve the required information and storing it in the database. Hence, changes will have to be made in the crawler and in the database to account for these changes. Now that we have the fuzzed out reverse geocoded location, it can be easily marked on the map. At the same time, the export.php file could be modified so as to use it to export the geodata collected through a geoRSS web service. This will allow the user to embed his streams in various other services like y!maps, openstreet etc.


I plan to have a simple uncluttered interface for the Google maps visualization. Since the maps in itself are heavy to load, these shall not be present as a module within a page but will have a separate page of its own, having only the dynamic generated map.
The map plugin shall have both a front end and a backend. The backend shall be used to turn the feature on or off, to enter the google maps api key, select the default central point on the map, the zoom level and the controls to be displayed with the map. This would allow the user to customize the map according to his or her needs. It shall be accessible from the “Configuration” page. I plan to add a new tab in the page labled “Visualizations” from where the various visualization settings can be changed, not just the google maps visualization. (see screenshot 1)
To display and create the front end of the map, a wrapper using a jquery plugin like jmapping or jquery-googlemap. The default front view shall be a zoomed out view of the map. In this view, i.e. the zoomed out view, it wouldn’t show each marker separately but would rather show one marker per area. This combined marker may display the number of markers/replies present in the area which it represents (screenshot 3). As a person zooms into a particular area, the combined marker splits up to display the different markers separately (screenshot 4). Finally clicking on the marker displays the replies from that location (screenshot 5).
Also since the location is itself to be used as a filter, another tab shall be added to the individual post’s page to show the location of the post and its replies. A dropdown shall also be added to show replies from a particular location only. It is at this page that a button shall be added to go to the maps visualization (“see MAP” in screenshot 2) hence maintaining a simple and neat interface.


1. Extend Twitter crawler to include goelocation data – Completed
2. Create plugin to geoencode data collected from Twitter – Completed
3. Create views to filter out replies/retweets of posts by location. Also sort replies/retweets by nearness – Under review
4. Create controller to generate map to create a visual of the replies/retweets to a post – Under review.



Screenshot 1: Under “Configuration”, a new tab named “Visualization” I plan to add. This shall be used to change the settings of google maps framework and the other “Data Visualization” plugins that shall be developed in the near future.


Screenshot 2: Since the Location is also to be used as a filter, the location button above the “drop down” (shown as a red box here) menu allows a user to sort replies with respect to location. At the same time, the “drop down” menu allows a user to display replies only from a particular location. The “see MAP” link would take the user to the google maps visualization.


Screenshot 3: A zoomed out view of the map showing aggregated markers containing number of replies from that area. The map would also have filters in itself to display the data selectively, e.g. suppose a user only wants to see the replies to tweets and not to facebook status updates etc. The different types of replies shall be distinguished using different color schemes.

Screenshot 4: Zooming into an area shall show the different markers separately.

Screenshot 5: Clicking on a zoomed in marker shall display the replies/forwards from that location.

How much time do you expect to have to spend working on ThinkUp on a daily or weekly basis this summer?

I plan to spend around 44-48 hours per week on the project which boils down to around 6 to 7 hours per day.
Please list jobs, summer classes, and/or vacations that you’ll need to work around. I shall not be available in the second week of July (10th to 16th July ’10) as I need to travel to Florida, U.S to present my research paper titled “User Interface Considerations for ScalableC, An Online Collaborative Platform” at the 2010 International Conference on Enterprise Information Systems and Web Technologies (EISWT-10).

What do you hope to get out of Google Summer of Code? Tell us why you applied and what your personal goals are.

The single most important thing I hope to get out of Google Summer of Code is experience. Working under the guidance of world class programmers and developers is an experience like no other. There are lots of things to learn and no better way in my opinion than to be working directly under the mentorship of these world renowned developers. The knowledge that one gains from them is surely unparalleled. Moreover, being a part of this competition, gives one an opportunity to work in a professional environment and understand the dynamics at work in an open source organization. I wish to make the best use of my free time this summer and I feel the best and the most productive way to spend my summer break is to be a part of Google Summer of Code.
Personally and professionally, I wish to make it big in the field of computers. After my graduation, I hope to do an MS in the field of web development or web technologies and working for ThinkUp is perfectly in sync with my future goals. I believe I have a technical bent of mind and I can really make a useful contribution in this regard. Google Summer of Code provides me just the platform I need to get started on this long journey.