Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
~GSoC2010: Prateek Gupta's Proposal for Geo Location Awareness and Visualizations
To create ThinkTank plugins that can pull data about geographical location of the users and put this and other data in a more presentable format that will make it easy for the user to interpret.
This would be very applicable to the purpose of ThinkTank as it will enable the users to analyze the regions from where they are getting replies and enable them to demarcate and analyze their opinion region-wise.
Also, it will help the user to analyze the response from other people in a much better and easier way. The goal is to enhance the usability of ThinkTank by incorporating Geo-specific data in the present UI and combine new and old data in a graphical form which is much comfortable for the user than the textual form.
What exactly is it?
It is the plugin which includes changes in current twitter & facebook plugins to fetch geo-specific data about users that are provided by the APIs of these organizations. Organizing this Geo-specific data onto maps for easy interpretation of the user and increasing usability of ThinkTank is the objective of this plugin.
Application programming interface (API) is an interface that is implemented by a software program to enable interaction with other softwares, similar to the way a user interface facilitates interaction between humans and computers. It allows multiple applications running at different places to interact, create and produce some meaningful data out of it. It has allowed web communities to create architecture for sharing content and data between communities and applications. Actually, the content that is created in one of the applications running at the server can be dynamically posted in multiple locations simultaneously, like content pulled from twitter are being shown in ThinkTank. So, this project will include various APIs in PHP for pulling data.
My priority list includes:
Geolocation of the users: Twitter and facebook APIs provide the IP address, latitude & longitude or the city/state of the user. We can convert these into equivalent latitude & longitude (if not available) and plot them on a Google Map. In this way the user can see where are the replies coming from on his tweets/status updates. He can demarcate and analyze the data region – wise. We can also have user control level, for instance, the user can see the replies only from the New York region if he/she wants to. We can also make 3D visual tours (in flash) like the one shown here:
We can use the pictures of the users instead of pictures of the places (in this video) and user replies in the marker. Also, we can have a map of all the followers of the user and the people who user follows in this same fashion.
We can enable tweeting or posting a facebook status updates right from within the ThinkTank (I didn’t see the 0.03, I am currently working on 0.02 because the git isn’t working on my server). Later, we can give the user – options and control over what kind of tweet or facebook update that is. For example, if it is a question with three answers (Do you think LinkedIn integration with ThinkTank will be useful to you? Answers: Yes/No/Neutral), we can give the user ability to create three answer options for the reader to use when the user is replying to the posts. All three words will be hyperlinked (Yes/No/Neutral) which will enable the reader to vote and express his/her opinion. These results can be accumulated and shown in pie charts, graphs or any other graphical form. The user who is replying to the tweet can vote and also reply to the tweet in text to express more.
This can also be used for questions with more than three answers (for example, Which movie to go this weekend – A)Movie 1 B)Movie 2 C) Movie3 D)Movie4).
Using this, user can actually aggregate the opinion from various friends on different networks and see it in a very condensed form. He can know the general opinion of his friends by just having a look at the pie chart.
Moreover, we can have a “friend chart” wherein pictures of the people will appear in big bars and each bar corresponds to one answer to the question. (similar to Yes/No/Maybe Gadget of Google Wave).
For Geo-specific activities:
The crawler already fetches tweets, replies, facebook status, updates, etc. We need to fetch the geo-specific data about the users simultaneously and store them in the database. For this we have ample of twitter and facebook API documentation available.
Once we have the latitude/longitude or city name or country name for the user we can use the geo-coding service from Google to change them into equivalent latitude/longitude pair. After this, we can plot the all of them on a Google map with markers with pop ups at each marker having the user’s picture, city name and his reply. We can include more information about the user if required. This map would be unique for every thread. In case the user location is unavailable while posting reply (which can happen frequently), we can pull out place from the user profile and plot it instead.
While doing this, issue of privacy can come up i.e. storing the location of the user for indefinite period of time. To avoid that, we will “fuzz-out” the location of the user to the city level. We will store the name of the cities in the database.
Moreover, we can provide navigation controls to user providing him/her with full control over the map. User can just view the replies of the people from New York region (in a map or in normal text mode – both shall be implemented).
After its completion, we can also implement 3D Google Maps in flash for the same purpose.
Google provides APIs for this. I am eager to see the output of this implementation. All the replies to my tweets and status updates being plotted on a 3D Map with user’s pictures in the popup and replies with location is something which excites me. It is an amazing and unique idea.
For Data Visualization Activities:
Once the user authorizes ThinkTank app at twitter & facebook account, we can have read and write access to the User’s twitter and facebook account. We can give the power to user to post updates from right within ThinkTank. In this way, the user can post to multiple networks from one place. This will increase the usability of the application.
We can give tag update as a Question to the user. Once they did that, they can set the number of answers and the options. After posting the update to the network, specific URLs for each answer options will be available. The moment the user clicks on it, it will post the answer onto our server which receives the post and updates the database. In this way, user can conduct surveys and ask the community question and get instant responses.
When the user logs into ThinkTank and clicks on the update, they will see common responses, etc plus they will also see a pie chart representing answers to the poll. This pie chart can be generated on-the-fly or be stored in a folder as an image & updated at regular intervals(depends on the level of optimization that can be determined after implementation).
We can also construct a Friend chart as mentioned above. Currently, I am thinking about its implementation and I am sure I will come up with something. The only barrier in doing this is that we need username of the user who is currently logged into twitter (for example) and clicking on the answer URL.
A rough timeline for the project:
April 26th – May 1st : Getting familiar with mentor & community.
May 2nd – May 18th : My Semester Exams are scheduled for these dates. I won’t be very active during this period.
May 19th – May 31st: Getting familiar with ThinkTank code, coding convention, reading up the specifications, setting up a very proper & speedy development environment, setting up the project version control system (like a git account).
1st Checkpoint :
June 1st – June 5th : Start Coding. Planning the whole database structure, class structure and place in the crawler which need editing to fetch addition geo-specific data.
June 7th – June 25th : Modifying & writing lib files for the crawler.
July 13th – July 16th : Combine everything done. Testing & debugging.
July 17th – July 21st : Planning the whole database structure for voting and survey system. Planning the class structure and functions
July 22nd – July 31st : Coding the whole backend for dynamic URLs generation for survey system, implementing it in real time, generating the results in graphical form.
August 1st – August 6th : Developing the whole UI to enable users to create a poll or a survey.
August 7th to August 16th : Final release and testing, debugging and project completion.
I am an undergraduate student at BITS Pilani, K. K. Birla Goa Campus. With Computer Science as my major, I have been associated with Center for Software Development at my campus actively. I am a core member of the initiative and actively contribute to software and application development for the betterment of the student community in the campus. As mentioned in my resume (link provided below), I have been involved in many projects on campus which aims at making the life of a student easier. I recently joined ThinkTank, worked with it & now making efforts in contributing. I have worked with various frameworks & languages as mentioned in my resume.
I have the passion to create something which affects life of a normal user at great levels. The open source community has given me a lot of knowledge and information and now it is my turn to return something to it. My statement of purpose is at the link provided at the bottom.
All in all, I am a quite confident student who is known for his dynamic thinking & problem solving skills. I treat Summer of Code as an opportunity to get engaged & contribute to the society in the same way it has helped me, if not more & continue this association even after GSoC.
This makes me the right candidate to actually take this project out of this document and implement it in real life. Please refer to my resume that more fully details my background and work experience. Please feel free to reach me at +91 982-379-3783 or by email at firstname.lastname@example.org if you have any questions regarding the project proposal or timeline.
Thank you for your time and consideration!
3rd yr. B.E. (Hons.) – Computer Science
IT & Web Team Coordinator,
Dept. of Sponsorship and Marketing
BITS-Pilani, Goa Campus.
Resume : http://nooneisinvited.com/resume.php
SOP : http://nooneisinvited.com/sop.php