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

Thought

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.