Tuesday, 4 September 2012

A Brief of My Work in the Most Recent Month

My project has already comes to its end, and I am finishing up the coding and starting to write the documentation of the Chrome extension, and at the same time, I have started the experiment on the extension.

I still meet my supervisor on a weekly basis, exchanging ideas to make the final deliverable more usable. Several features have been changed during this month and everything is working perfectly. I looked into other JavaScript APIs that may contribute to the project and I did put "JQplot" into my project as the final addition. As suggested by Rafa (my supervisor), I changed the look of the entire Chrome extension. Now it is just one HTML page with plain white background colour and black text. Also, I added the email sending functionality to facilitate users to send the usage data to me, and a "about" page to give users general information on this extension. Today is the second day of the experiment on the extension, and I have discovered bugs that I failed to find on my own PC during the implementation, and last night I removed all bugs discovered so far.

As the Human Ethic office is still concerned about my extension access users personal information, I made a clarification to ensure that personal information of the users is only accessible by themselves.

One thing I need to do is to refactor my code, because during the implementation, although I am using the OO methodology, it is still hard to maintain code quality when more functionality is implemented, especially using a language like JavaScript. I may need to re-implementation everything to make the code look nice, however, before doing that I will check out existing frameworks to see if they could offer any help.

My task of this week and the week after is mainly doing the experiment, and I will try to finish the documentation and code refactoring.

Wednesday, 15 August 2012

Integration Almost Finished

Yesterday I finished a working integrated version of the Chrome extension, and made a video demo of it.

The integrated extension is able to provide all required functionality, and it is able to record a user's usage information during its working process.

Saturday, 11 August 2012

Make it better

Now I am working on implementing a filter function that is able to allow a user to specify tags to emails and posts and use it to filter the emails and posts displayed.

I will make a video of all functionalities and send to Rafa.

Sunday, 5 August 2012

Learning Security From Issues

Google is a big company that progressively improves the security of its products. During the progress of my project, Google changed the security settings of its Chrome browser extension several times, and the current version of the manifest file adds a "Content Security Policy", which is an additional layer over its previous design.

The "Content Security Policy" is actually a standard that is defined by w3c, and Google's implementation functions like a black and while list for different websites.

Due to the modification of the manifest file, I need to change my implementation a lot to conform to the standard. I need to remove all "eval()"s in my code and I need to remove the small fragment of code wrote in 2 html file. Apart from those changes, I also need to figure out how to more than one whitelist website, in the manifest file.

Now I am expecting another no-sleep night again.

Saturday, 28 July 2012


1. Prototyping is very important.
    - It helps me to visualize a design idea and possible modifications.

2. No documentation is better than source code.
    - When using third party api, most of the documentation is not clearly enough to help me fit the api into my own situation.

3. Incremental integration testing is necessary.
    - When using the google visualization api (charts api), I'd better implement it individually first and make it work. The api is a little more complicated than other apis.

4. During the implementation process of this project I have found that although I have extensively commented my own code, I still find it hard to make adjustment right after some changes in the code.
    - Some parts of the implementation is completely depended on other parts of the code, and they need to be changed when the depended parts have been changed. I need to find  a way of documentation to aid me in visualize the features of a module.

5. The scope of a project should be considered at the beginning and necessary adjustments should be made during the process of the project. In this case, there are two major factors that limit the scope of this project which are time constrain and available api.

6. Learn to progressively improve the quality of a project. That's why there are different version of the same products, and that's why programmers need to write code in a easy-to-manage manner.

Friday, 6 July 2012

Almost finished

The draft version of the integration application has been finished, and currently I am working on the refinement.
There are limitations in this extension due to the completely dependence on the Google Chrome browser. The executing speed is not fast, which is due to the HTML5 implementation on Chrome. There is only limited space for websql on Chrome also.
Now I am working on code refactoring and trying to reduce the limitations as much as possible.

Tuesday, 3 July 2012

Working on the Integration of the Application

I have finished learning CSS to aid the implementation of the application, and currently I am working on file io on JavaScript, which is needed by timeline.js.

As to the overall integration, I have finished the architecture design and UI design. And since I can copy and paste most of the code from individual extensions, I am thinking of finishing the coding work by tomorrow.

In terms of the Human Ethic Application, I am aiming at to submit a second time before 23 July 2012, for the time needed for all supervisors to sign. And I think I definitely need to change something in the application form, for previously almost everything is estimate. 

Wednesday, 13 June 2012

Start the integration work

I start to work on the integration of the two application today. And I found that working with css is rather annoying, a silly mistake can take hours to fix. I need to spend some time on learning css.

I am struggling with the layout of the word clouds and the timeline as well. Normally, people have either of them, instead of both. And I am thinking of setting the page as big as a computer screen, which makes the page compact when fit both the clouds and the timeline together.

Wednesday, 6 June 2012


Yesterday I finished review and submitted the Human Ethic Application Form. It turned out that the Human Ethic Office wasn't that easy to find. Luckily, someone gave me some help.

Now I can concentrate on the integration implementation of the Chrome extension, and hopefully, I can finish it in 4 weeks.(The finals are coming and I still have two assignments to do...)

Monday, 4 June 2012

Finished all the application forms and documents needed to be attached to it.

Printed and signed.

I will send the application tomorrow.

Sunday, 20 May 2012

Information Synchronsation

I have been searching for information synchronsation methods, and I have found some javascript implementation like http://www.bennadel.com/blog/2005-Experimenting-With-Offline-Data-Synchronization-Using-jQuery-And-ColdFusion.htm. However, all synchronsation methods I have found seems just work on small amount of data, and sense the user might have a large amount of email to sync when he/she first use the extension, the workload tend to be very high. So, I need to test if those methods are applicable.

Concurrently, I was also working on the experiments on websql and web socket to ensure the extension is able to provide the best functionality.

This week, I started to write the progress report, which is due in week 12. This report need 20 to 30 pages, so I will mainly focus on it in the coming week.

Thursday, 10 May 2012

Finished facebook client

I have finished the facebook client.
A new UI is implemented and the coding style is changed. Now it looks like a web page.

Tuesday, 24 April 2012

Facebook Client is almost finished

I have almost finished the facebook client part of the information retrieval system.
The system have access to all the information that the user grant permission on.
(almost means I have wrote the data retrieval function and I can retrieve all the user's information with it, but I haven't done the UI part - for simplicity, I just print it on the html page - will be updated to a more fancy UI when integrate all sub-systems together)

Currently, I am working on the Twitter API.

Sunday, 15 April 2012

facebook client 1

I finally understand how the authentication work on Facebook.

No matter what kind of app I am implementing, I need a server, which is used by Facebook to give my app a token to access all the approved information of a certain user.

Then I need to create a simple html page with some JavaScript on a server.

I also need to learn how to do OO in JavaScript.
Learn jQuery.

Tuesday, 10 April 2012

Facebook Client

  • can be implemented in the same way as GMI
  • Need to be better structured

Sunday, 8 April 2012

Facebook API

  • web app is just single-page website, using ajax requests to fetch json response.
  • restful JSON: 
    1. client: http://bitworking.org/news/restful_json
    2. server:  http://bitworking.org/news/restful_json_server
stating coding on facebook client

Sunday, 1 April 2012

Thesis Proposal

Questions about the Proposal:

1. Do I start this project from last December or March 5th 2012?
2. When do I do Unit Testing? Do I need to do them just after the implementation or I can do it until I have finished the Integrated prototype?
3. Estimated finishing time of the integration prototype is end of May.

Friday, 30 March 2012

Know thyself

I read the paper introducing "Know thyself" and found I can use some of its idea in my project. I am now reading the papers accepted (Chi 2010).
http://personalinformatics.org/ is the website main page, I am also reading the content here.

Plan for the data-gathering prototype:
I have already implemented the prototype for Gmail, and I still need to do the same thing for Blogger, Facebook and Twitter.
1. spend one week for each of the there social sites.
2. spend one week for the integration
3. during the implementation, I will well document all those prototype.

What I am doing:
1. writing thesis proposal 
2. continuing documenting Graph My Inbox

Saturday, 24 March 2012

Chorme Database

I spent the whole morning trying to make the chrome database api work, which is called "gears". However I failed. And it turned out that google no longer update the api and has removed gears since chrome 12. (I am currently using chrome 17, source:  http://gearsblog.blogspot.com.au/2011/03/stopping-gears.html).

The reason why google give gears up is that it is a fast move by google to implement the web database and other web technologies. However, since now html5 is globally available, which is a standard to provide all the technologies provided by gears, google shift its focus to html5.

I'll get started with html5 tonight.

Wednesday, 21 March 2012

Appointment 2

------ At the appointment on 20th March, my extension failed to return anything on Rafa's Mac laptop.

I used several Gmail accounts to check if my chrome extension is still working. After a few tests, now I know that Google have again changed the implementation of Gmail backend. The reason why the impact to my extension is huge is that my extension bases fully on the underlying internet protocol, rather than Gmail api provided by Google development team.

??? My solution is that I will re-implement the extension with offical Gmail api with goog documentation.

Monday, 12 March 2012

Literature Research 1

My mission is to deal with the ambiguity of emotional words, distinguishing different meanings interpreted in different contexts.All I found do not seem to be qualified to do the job.

From 6th March, I have been reading academic papers on the subject of emotion recognition. However, what I found is that all the papers I have read only use the statistical method or machine learning to process the text, and "context" is defined as "the previous and the next sentence of the current sentence" by almost all the authors, which is not a satisfactory manner.

There is a hierarchical approach which was proposed in both 2008 and 2010 by 2 groups of researchers might be a way to try. 

In terms of the data gathering part of the project, facebook api and twitter api will do the job. What I need to do is just find out a way to display all the data through a plugin.

Tuesday, 28 February 2012

Description of the Extension

After about a month's work, the Gmail extension has been developed.The current version is slightly different from the original version of the extension.

I keep made small changes to the UI just to provide more information to the users, and maintained the functionality of the original extension.Once the extension has been launched, users will see a window about half the size of the screen, on which there are the search input box, the logo of the extension and some guideline for the users. Users can view the guidelines just by moving the mouse to the exact point they want to read. This extension provide the same search engine as Gmail. When a user has put in the key word he/she wants to search and clicked "Search" or pressed "Enter" on the keyboard, an icon with the current status information, "Searching", appears under the search box. On the icon, there is a small "x" at the end, a user can click it to terminate the indicated search.

When all the email information is received, the status icon will change to a colour ball followed by the key word and the extension will draw 3 charts which enable users to view their email graphically.A user can click on the data points on the first graph to see the main content of the emails received in a single month and have the second and third charts upgraded to the corresponding daily and yearly charts.

Above is the a description of the full round of the working process of the extension, if the users want to compare emails with different key words, they can simply enter another key word and search again. The extension will draw 3 new charts with data points and lines of different colours. Also, the users can remove the search result generated by a key word by clicking the corresponding "x" at the end of the key word icon.

One thing to note is that because this extension rely fully on the response from Google, update to a newer version will generally happen several days after Google changes the response. During the development phase of this extension, Google changed the response twice and I had to change the response manipulation part of the code.