Saturday, July 31, 2010

Week 10: Social Features Project

This week I spent on integrating CalVis calendars UI with the current Calendars features as well as adding the maps functionality. The new calendars UI can be seen here. Clicking on events brings out a pop-up widget with event details. The Calendars feature is done. However, the two errors being thrown the by the Data apis earlier posted to the dev list still seem to persist. :( Need to spend some time and also consult Madhu to find a way around this.

I will be starting on the final Maps feature/view this weekend and hoping that this feature will not take long to code as it does not involve much creation/manipulation of data models, it mainly involves querying the data (user pages and events) and updating the map.

In the coming week:
  • start work on Maps feature
  • test the current code, esp. UI to check in case of any bugs

Friday, July 30, 2010

GSoC 2010 Data Seeder - Seeding using MapReduce framework

The seeder is currently fully functional running on a live instance and hopefully should be able to seed any provided configuration sheet. The final implementation uses a mapreduce framework[0] for GAE and is highly parallelizable.

I also did some benchmarking on the cloud. I tried seeding 10,100 simple Linkable entities, including a string and a reference property. Running on a 50 tasks / second and having the mapreduce framework set to process 100 tasks / second (default value) finished successfully after around 1 min 40 seconds. That's pretty fast in my opinion. This resulted in about 0.45 CPU hours being consumed in the cloud. This was possible because mapreduce runs multiple map operation in a single task. Perhaps even better speed/efficiency can be used by using mutation pools to do batch updates in the datastore.

The way the current solution is implemented is by starting a new mapreduce job for related models (back-referencing). I believe this is also faster and easier to implement, the downside being that a lot of jobs appear in the status interface. I think this can be fixed by using some sort of smart sharding (already supported in mapreduce) instead of starting new jobs, I'll look into it.

So now that the seeder is working, it's time to get back to working on the web interface. I will add the ability to import an existing configuration sheet, better navigation options and better control when configuring references (like being able to specify a subclass of a specific model etc.) during the next week. If time permits, I'll also try to do add some styling.

Tuesday, July 27, 2010

Week 9: Social Features Project

The past week of GSoC was spent mostly on winding up the Calendars features, such as finalizing workflow and using the JS GMaps package in Melange for specifying event locations. This is primarily used so that it can later be used in the Maps widget provided by CalVis Calendar UI. The latest is at my GAE.

I am currently working on the CSS designs for CalVis UI, and hoping to integrate the design and UI into my GAE by today or tomorrow at the latest.
The rest of the current week, I plan to spend on testing the Calendars and User Pages feature and also starting work on the Google Maps view/feature for filtering users and events based on users/event location and tags.

I lost the last weekend as I had to make a trip to India for some family obligations, hence the slowness in progress.

In the next week:
  • Complete CSS design for CalVis and integrate with current feature
  • Write and test calendars feature
  • Get started on Maps view/feature for users and events

Monday, July 26, 2010

Document Editor: Week 9

I spent Tuesday on fixing code issues which were pointed by Daniel. Then I started working on revisions for the student proposal. It was pretty simple, but there was a problem. StudentProposal model contains abstract text property, which in my opinion should also be revisable. But current implementation of the RevisionInfo and RevisionContent classes are not able to store two content fields. This issue is to be resolved.

At the end of the week Mario implemented client-side redirects for the lists framework. I used this feature to re-implement "Show diff" button, Now it looks and behaves right. New version of the "Manage revisions" view was uploaded to my GAE instance.

Sunday, July 25, 2010

GSoC 2010 Melange Testing Project: Week 9 of the Coding Period

In this week, I mainly worked on low coverage modules, e.g. soc.tasks.surveys, soc.tasks.grading_survey_group and etc. With these work, I have managed to increase the testing coverage of Melange to over 55%. I am cleaning up the code and will commit and push them today or tomorrow at the latest. One problem is that there is no api proxy stub available for service "taskqueue" yet, so it raises an error "ERROR:root:No api proxy found for service "taskqueue". I am also working on it.

In the next two weeks, I aim to increase the testing coverage of Melange to over 60% and increase the testing coverage of those modules below 50% (40% at least) to over 50%.